Blender  V2.93
Classes | Typedefs | Functions
BKE_editmesh.h File Reference
#include "BKE_customdata.h"
#include "bmesh.h"

Go to the source code of this file.

Classes

struct  BMEditMesh
 

Typedefs

typedef struct BMEditMesh BMEditMesh
 

Functions

void BKE_editmesh_looptri_calc (BMEditMesh *em)
 
BMEditMeshBKE_editmesh_create (BMesh *bm, const bool do_tessellate)
 
BMEditMeshBKE_editmesh_copy (BMEditMesh *em)
 
BMEditMeshBKE_editmesh_from_object (struct Object *ob)
 Return the BMEditMesh for a given object. More...
 
void BKE_editmesh_free_derivedmesh (BMEditMesh *em)
 
void BKE_editmesh_free (BMEditMesh *em)
 
float(* BKE_editmesh_vert_coords_alloc (struct Depsgraph *depsgraph, struct BMEditMesh *em, struct Scene *scene, struct Object *ob, int *r_vert_len))[3]
 
float(* BKE_editmesh_vert_coords_alloc_orco (BMEditMesh *em, int *r_vert_len))[3]
 
const float(* BKE_editmesh_vert_coords_when_deformed (struct Depsgraph *depsgraph, struct BMEditMesh *em, struct Scene *scene, struct Object *obedit, int *r_vert_len, bool *r_is_alloc))[3]
 
void BKE_editmesh_lnorspace_update (BMEditMesh *em, struct Mesh *me)
 
void BKE_editmesh_ensure_autosmooth (BMEditMesh *em, struct Mesh *me)
 
struct BoundBoxBKE_editmesh_cage_boundbox_get (BMEditMesh *em)
 

Detailed Description

The EDBM module is for editmode bmesh stuff. In contrast, this module is for code shared with blenkernel that's only concerned with low level operations on the BMEditMesh structure.

Definition in file BKE_editmesh.h.

Typedef Documentation

◆ BMEditMesh

typedef struct BMEditMesh BMEditMesh

This structure is used for mesh edit-mode.

through this, you get access to both the edit BMesh, its tessellation, and various stuff that doesn't belong in the BMesh struct itself.

the entire derivedmesh and modifier system works with this structure, and not BMesh. Mesh->edit_bmesh stores a pointer to this structure.

Function Documentation

◆ BKE_editmesh_cage_boundbox_get()

struct BoundBox* BKE_editmesh_cage_boundbox_get ( BMEditMesh em)

◆ BKE_editmesh_copy()

BMEditMesh* BKE_editmesh_copy ( BMEditMesh em)

◆ BKE_editmesh_create()

BMEditMesh* BKE_editmesh_create ( BMesh bm,
const bool  do_tessellate 
)

◆ BKE_editmesh_ensure_autosmooth()

void BKE_editmesh_ensure_autosmooth ( BMEditMesh em,
struct Mesh me 
)

◆ BKE_editmesh_free()

void BKE_editmesh_free ( BMEditMesh em)

◆ BKE_editmesh_free_derivedmesh()

void BKE_editmesh_free_derivedmesh ( BMEditMesh em)

◆ BKE_editmesh_from_object()

BMEditMesh* BKE_editmesh_from_object ( Object ob)

Return the BMEditMesh for a given object.

Note
this function assumes this is a mesh object, don't add NULL data check here. caller must do that

Definition at line 85 of file editmesh.c.

References BLI_assert, Object::data, OB_MESH, and Object::type.

Referenced by add_primitive_circle_exec(), add_primitive_cone_exec(), add_primitive_cube_exec(), add_primitive_cube_gizmo_exec(), add_primitive_cylinder_exec(), add_primitive_grid_exec(), add_primitive_icosphere_exec(), add_primitive_monkey_exec(), add_primitive_plane_exec(), add_primitive_uvsphere_exec(), applyNormalRotation(), average_islands_scale_exec(), BKE_modifier_get_evaluated_mesh_from_evaluated_object(), BKE_object_handle_data_update(), calcEdgeSlide_mval_range(), construct_param_handle_multi(), contarget_get_mesh_mat(), createEdgeSlideVerts_double_side(), createEdgeSlideVerts_single_side(), createTransEdge(), createTransEditVerts(), createTransMeshSkin(), createTransUVs(), createVertSlideVerts(), cube_project_exec(), cylinder_project_exec(), deformVerts(), do_lasso_select_mesh(), do_lasso_select_mesh_uv(), ED_object_calc_active_center_for_editmode(), ED_object_editmode_enter_ex(), ED_operator_editmesh(), ED_operator_editmesh_auto_smooth(), ED_operator_uvmap(), ED_space_image_auto_set(), ED_space_image_show_uvedit(), ED_transform_calc_gizmo_stats(), ED_transverts_create_from_obedit(), ED_transverts_update_obedit(), ED_uvedit_ensure_uvs(), ED_uvedit_get_aspect(), ED_uvedit_live_unwrap_begin(), ED_uvedit_median_multi(), ED_uvedit_minmax_multi(), ED_uvedit_nearest_uv(), ED_uvedit_pack_islands_multi(), ED_uvedit_test(), ED_vgroup_parray_mirror_assign(), ED_vgroup_parray_mirror_sync(), ED_view3d_gizmo_mesh_preselect_get_active(), ED_view3d_viewcontext_init_object(), edbm_add_edge_face_exec(), EDBM_automerge(), EDBM_automerge_and_split(), edbm_average_normals_exec(), edbm_beautify_fill_exec(), edbm_bevel_calc(), edbm_bevel_cancel(), edbm_bevel_exit(), edbm_bevel_init(), edbm_bridge_edge_loops_exec(), edbm_collapse_edge_exec(), edbm_decimate_exec(), edbm_delete_edgeloop_exec(), edbm_delete_exec(), edbm_delete_loose_exec(), edbm_dissolve_degenerate_exec(), edbm_dissolve_edges_exec(), edbm_dissolve_faces_exec(), edbm_dissolve_limited_exec(), edbm_dissolve_mode_exec(), edbm_dissolve_verts_exec(), edbm_do_smooth_laplacian_vertex_exec(), edbm_do_smooth_vertex_exec(), edbm_duplicate_exec(), edbm_edge_rotate_selected_exec(), edbm_edge_split_exec(), EDBM_elem_from_index_any_multi(), EDBM_elem_to_index_any_multi(), edbm_extrude_context_exec(), edbm_extrude_edges_exec(), edbm_extrude_faces_exec(), edbm_extrude_region_exec(), edbm_extrude_repeat_exec(), edbm_extrude_verts_exec(), edbm_face_make_planar_exec(), edbm_face_split_by_edges_exec(), edbm_faces_select_interior_exec(), edbm_faces_shade_flat_exec(), edbm_faces_shade_smooth_exec(), edbm_fill_exec(), edbm_fill_grid_exec(), edbm_fill_holes_exec(), edbm_flag_disable_all_multi(), edbm_flip_normals_exec(), edbm_hide_exec(), edbm_inset_calc(), edbm_inset_cancel(), edbm_inset_init(), edbm_intersect_boolean_exec(), edbm_intersect_exec(), edbm_knife_cut_exec(), edbm_loop_multiselect_exec(), edbm_loop_to_region_exec(), edbm_mark_seam_exec(), edbm_mark_sharp_exec(), edbm_merge_exec(), EDBM_mesh_deselect_all_multi_ex(), EDBM_mesh_elem_index_ensure_multi(), EDBM_mesh_stats_multi(), edbm_mod_weighted_strength_exec(), edbm_normals_make_consistent_exec(), edbm_normals_tools_exec(), edbm_offset_edgeloop_exec(), edbm_point_normals_modal(), edbm_poke_face_exec(), edbm_preselect_or_active(), edbm_quads_convert_to_tris_exec(), edbm_region_to_loop_exec(), edbm_remove_doubles_exec(), edbm_reveal_exec(), edbm_reverse_colors_exec(), edbm_reverse_uvs_exec(), edbm_rip_edge_invoke(), edbm_rip_invoke(), edbm_rip_invoke__edge(), edbm_rip_invoke__vert(), edbm_rotate_colors_exec(), edbm_rotate_uvs_exec(), edbm_screw_exec(), edbm_select_all_exec(), edbm_select_axis_exec(), edbm_select_face_by_sides_exec(), edbm_select_id_bm_elem_get(), edbm_select_less_exec(), edbm_select_linked_exec(), edbm_select_linked_flat_faces_exec(), edbm_select_linked_pick_exec(), edbm_select_loose_exec(), edbm_select_mirror_exec(), edbm_select_more_exec(), edbm_select_non_manifold_exec(), edbm_select_nth_exec(), EDBM_select_pick(), edbm_select_random_exec(), edbm_select_sharp_edges_exec(), edbm_select_similar_region_exec(), edbm_select_ungrouped_exec(), edbm_select_ungrouped_poll(), EDBM_selectmode_disable_multi_ex(), EDBM_selectmode_set_multi(), EDBM_selectmode_to_scene(), EDBM_selectmode_toggle_multi(), edbm_separate_exec(), edbm_set_normals_from_faces_exec(), edbm_shortest_path_pick_exec(), edbm_shortest_path_select_exec(), edbm_smooth_normals_exec(), edbm_solidify_exec(), edbm_sort_elements_exec(), edbm_spin_exec(), edbm_split_exec(), edbm_subdivide_edge_ring_exec(), edbm_subdivide_exec(), edbm_tris_convert_to_quads_exec(), EDBM_unified_findnearest_from_raycast(), edbm_unsubdivide_exec(), edbm_vert_connect_concave_exec(), edbm_vert_connect_exec(), edbm_vert_connect_nonplaner_exec(), edbm_vert_connect_path_exec(), edbm_wireframe_exec(), edgering_select(), editbmesh_get_eval_cage_from_orig(), em_setup_viewcontext(), freeCustomNormalArray(), getTransformOrientation_ex(), gizmo_mesh_spin_init_refresh(), gizmo_preselect_edgering_test_select(), gizmo_preselect_elem_test_select(), initNormalRotation(), knifeproject_exec(), knifetool_init(), knifetool_init_bmbvh(), knifetool_invoke(), knifetool_modal(), loopcut_init(), make_prim_finish(), material_slot_assign_exec(), material_slot_de_select(), merge_type_itemf(), mesh_bisect_exec(), mesh_bisect_invoke(), mesh_circle_select(), mesh_customdatacorrect_init_container(), mesh_data_from_duplicator_object(), mesh_symmetrize_exec(), mesh_symmetry_snap_exec(), minimize_stretch_exit(), minimize_stretch_iteration(), mouse_mesh_loop(), mouse_mesh_shortest_path_edge(), mouse_mesh_shortest_path_face(), mouse_mesh_shortest_path_vert(), mouse_mesh_uv_shortest_path_face(), mouse_mesh_uv_shortest_path_vert(), normals_split_merge(), point_normals_apply(), point_normals_init(), raycast_obj_fn(), raycastEditMesh(), recalcData_mesh(), recalcData_mesh_skin(), reset_exec(), ringsel_find_edge(), select_id_object_min_max(), select_similar_type_itemf(), shape_itemf(), similar_edge_select_exec(), similar_face_select_exec(), similar_vert_select_exec(), skin_loose_mark_clear_exec(), skin_radii_equalize_exec(), skin_root_mark_exec(), smart_project_exec(), snap_curs_to_sel_ex(), snap_obj_fn(), snap_object_data_editmesh_runtime_get(), snap_sel_to_grid_exec(), snap_selected_to_location(), sort_bmelem_flag(), special_aftertrans_update__mesh(), sphere_project_exec(), stats_object_edit(), stitch_exit(), stitch_init(), stitch_invoke(), transform_convert_mesh_crazyspace_detect(), transformEnd(), transformops_loopsel_hack(), uiTemplateEditModeSelection(), uv_box_select_exec(), uv_circle_select_exec(), uv_find_nearest_edge(), uv_find_nearest_face_ex(), uv_find_nearest_loop_from_edge(), uv_find_nearest_loop_from_vert(), uv_find_nearest_vert(), uv_from_view_exec(), uv_hide_exec(), uv_map_clip_correct_multi(), uv_mouse_select_loop_generic_multi(), uv_mouse_select_multi(), uv_pin_exec(), uv_remove_doubles_to_selected(), uv_remove_doubles_to_unselected(), uv_reveal_exec(), uv_sculpt_stroke_apply(), uv_sculpt_stroke_init(), uv_select_all_perform(), uv_select_edgeloop(), uv_select_edgering(), uv_select_flush_from_tag_face(), uv_select_flush_from_tag_loop(), uv_select_linked_multi(), uv_select_more_less(), uv_select_overlap(), uv_select_pinned_exec(), uv_select_split_exec(), uv_shortest_path_pick_ex(), uv_shortest_path_pick_exec(), uv_shortest_path_pick_invoke(), uv_shortest_path_select_exec(), uv_snap_selection_exec(), uv_snap_uvs_offset(), uv_snap_uvs_to_adjacent_unselected(), uv_snap_uvs_to_cursor(), uv_snap_uvs_to_pixels(), uv_weld_align(), uvedit_center(), uvedit_have_selection_multi(), uvedit_select_is_any_selected(), uvedit_translate(), uvedit_unwrap(), vgroup_do_remap(), vgroup_smooth_subset(), and view3d_box_select_exec().

◆ BKE_editmesh_lnorspace_update()

void BKE_editmesh_lnorspace_update ( BMEditMesh em,
struct Mesh me 
)

◆ BKE_editmesh_looptri_calc()

void BKE_editmesh_looptri_calc ( BMEditMesh em)

◆ BKE_editmesh_vert_coords_alloc()

float(* BKE_editmesh_vert_coords_alloc ( struct Depsgraph depsgraph,
struct BMEditMesh em,
struct Scene scene,
struct Object ob,
int *  r_vert_len 
) )[3]

◆ BKE_editmesh_vert_coords_alloc_orco()

float(* BKE_editmesh_vert_coords_alloc_orco ( BMEditMesh em,
int *  r_vert_len 
) )[3]

Definition at line 259 of file editmesh.c.

References BM_mesh_vert_coords_alloc().

Referenced by correctivesmooth_modifier_do().

◆ BKE_editmesh_vert_coords_when_deformed()

const float(* BKE_editmesh_vert_coords_when_deformed ( struct Depsgraph depsgraph,
struct BMEditMesh em,
struct Scene scene,
struct Object obedit,
int *  r_vert_len,
bool *  r_is_alloc 
) )[3]