Blender  V3.3
Public Attributes | List of all members
BMEditMesh Struct Reference

#include <BKE_editmesh.h>

Public Attributes

struct BMeshbm
 
struct BMLoop *(* looptris )[3]
 
int tottri
 
short selectmode
 
short mat_nr
 
int mirror_cdlayer
 
char is_shallow_copy
 
char needs_flush_to_id
 

Detailed Description

This structure is used for mesh edit-mode.

Through this, you get access to both the edit BMesh, its tessellation, and various data that doesn't belong in the BMesh struct itself (mostly related to mesh evaluation).

The entire modifier system works with this structure, and not BMesh. #Mesh.edit_bmesh stores a pointer to this structure.

Definition at line 39 of file BKE_editmesh.h.

Member Data Documentation

◆ bm

struct BMesh* BMEditMesh::bm

Definition at line 40 of file BKE_editmesh.h.

Referenced by blender::ed::spreadsheet::GeometryDataSource::apply_selection_filter(), applyNormalRotation(), armature_deform_coords_impl(), average_islands_scale_exec(), bake_targets_output_vertex_colors(), BKE_bmbvh_new_from_editmesh(), BKE_crazyspace_get_mapped_editverts(), BKE_crazyspace_set_quats_editmesh(), BKE_editmesh_cache_calc_minmax(), BKE_editmesh_cache_ensure_poly_centers(), BKE_editmesh_cache_ensure_poly_normals(), BKE_editmesh_cache_ensure_vert_normals(), BKE_editmesh_copy(), BKE_editmesh_create(), BKE_editmesh_free_data(), BKE_editmesh_lnorspace_update(), BKE_editmesh_loop_tangent_calc(), BKE_editmesh_looptri_and_normals_calc(), BKE_editmesh_looptri_and_normals_calc_with_partial(), BKE_editmesh_looptri_calc_with_partial_ex(), BKE_mesh_clear_facemap_customdata(), BKE_mesh_count_selected_items(), BKE_mesh_ensure_facemap_customdata(), BKE_mesh_ensure_skin_customdata(), BKE_mesh_foreach_mapped_edge(), BKE_mesh_foreach_mapped_face_center(), BKE_mesh_foreach_mapped_loop(), BKE_mesh_foreach_mapped_vert(), BKE_mesh_has_custom_loop_normals(), BKE_mesh_material_remap(), BKE_mesh_wrapper_edge_len(), BKE_mesh_wrapper_loop_len(), BKE_mesh_wrapper_poly_len(), BKE_mesh_wrapper_vert_coords_copy(), BKE_mesh_wrapper_vert_coords_copy_with_mat4(), BKE_mesh_wrapper_vert_len(), BKE_object_defgroup_clear(), BKE_view_layer_filter_edit_mesh_has_edges(), BKE_view_layer_filter_edit_mesh_has_uvs(), bpy_bm_from_edit_mesh(), bvhtree_from_editmesh_edges_create_tree(), bvhtree_from_editmesh_verts_create_tree(), calc_ortho_extent(), construct_param_handle_multi(), construct_param_handle_subsurfed(), contarget_get_mesh_mat(), correct_uv_aspect(), correct_uv_aspect_per_face(), correctivesmooth_modifier_do(), create_orco_mesh(), createEdgeSlideVerts_double_side(), createEdgeSlideVerts_single_side(), createTransEdge(), createTransEditVerts(), createTransMeshSkin(), createTransMeshVertCData(), createTransUVs(), createVertSlideVerts(), cube_project_exec(), curve_deform_coords_impl(), cylinder_project_exec(), deformVerts(), deformVerts_do(), delete_customdata_layer(), deselect_nth_active(), do_lasso_select_mesh(), do_lasso_select_mesh_uv(), do_mesh_box_select(), draw_select_id_edit_mesh(), draw_subdiv_create_requested_buffers(), DRW_text_edit_mesh_measure_stats(), ED_mesh_active_dvert_get_em(), ED_mesh_color_add(), ED_mesh_mirror_get_vert(), ED_mesh_mirror_spatial_table_begin(), ED_mesh_mirrtopo_init(), ED_mesh_mirrtopo_recalc_check(), ED_mesh_sculpt_color_add(), ED_mesh_uv_add(), ED_mesh_uv_ensure(), ED_mesh_uv_loop_reset_ex(), ED_object_calc_active_center_for_editmode(), ED_object_data_xform_by_mat4(), ED_object_data_xform_create_ex(), ED_object_data_xform_restore(), ED_object_editmode_load_free_ex(), ED_operator_uvmap(), ED_space_image_auto_set(), 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_pack_islands_multi(), ED_uvedit_select_sync_flush(), ED_uvedit_selectmode_clean(), ED_uvedit_selectmode_flush(), ED_vgroup_mirror(), ED_vgroup_parray_alloc(), ED_vgroup_parray_mirror_assign(), ED_vgroup_parray_mirror_sync(), ED_vgroup_vert_active_mirror(), ED_view3d_gizmo_mesh_preselect_get_active(), edbm_add_edge_face_exec(), EDBM_automerge(), EDBM_automerge_and_split(), edbm_average_normals_exec(), edbm_backbuf_check_and_select_edges(), edbm_backbuf_check_and_select_faces(), edbm_backbuf_check_and_select_verts(), edbm_beautify_fill_exec(), edbm_bevel_calc(), edbm_bevel_init(), edbm_blend_from_shape_exec(), edbm_bridge_edge_loops_exec(), edbm_bridge_edge_loops_for_single_editmesh(), edbm_collapse_edge_exec(), edbm_connect_vert_pair(), edbm_decimate_exec(), edbm_delete_edgeloop_exec(), edbm_delete_exec(), edbm_delete_loose_exec(), EDBM_deselect_by_material(), EDBM_deselect_flush(), edbm_dissolve_degenerate_exec(), edbm_dissolve_edges_exec(), edbm_dissolve_faces_exec(), edbm_dissolve_limited_exec(), edbm_dissolve_verts_exec(), edbm_do_smooth_laplacian_vertex_exec(), edbm_do_smooth_vertex_exec(), edbm_dupli_extrude_cursor_invoke(), edbm_duplicate_exec(), EDBM_edge_find_nearest_ex(), edbm_edge_rotate_selected_exec(), edbm_edge_split_selected_edges(), edbm_edge_split_selected_verts(), EDBM_elem_from_index_any(), EDBM_elem_to_index_any(), edbm_extrude_context_exec(), edbm_extrude_discrete_faces(), edbm_extrude_edge_exclude_mirror(), edbm_extrude_edges_exec(), edbm_extrude_edges_indiv(), edbm_extrude_ex(), edbm_extrude_faces_exec(), edbm_extrude_htype_from_em_select(), edbm_extrude_mesh(), edbm_extrude_region_exec(), edbm_extrude_repeat_exec(), edbm_extrude_verts_exec(), edbm_extrude_verts_indiv(), EDBM_face_find_nearest_ex(), edbm_face_make_planar_exec(), edbm_face_split_by_edges_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(), edbm_flag_disable_all_multi(), EDBM_flag_enable_all(), edbm_flip_normals_custom_loop_normals(), edbm_flip_normals_exec(), edbm_flip_normals_face_winding(), edbm_hide_exec(), edbm_inset_calc(), edbm_inset_init(), edbm_intersect_boolean_exec(), edbm_intersect_exec(), edbm_intersect_select(), 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_clear(), EDBM_mesh_deselect_all_multi_ex(), EDBM_mesh_elem_index_ensure_multi(), EDBM_mesh_hide(), EDBM_mesh_knife(), EDBM_mesh_load_ex(), EDBM_mesh_make(), EDBM_mesh_normals_update_ex(), EDBM_mesh_reveal(), EDBM_mesh_stats_multi(), edbm_mod_weighted_strength_exec(), edbm_normals_make_consistent_exec(), edbm_normals_tools_exec(), edbm_offset_edgeloop_exec(), EDBM_op_call_and_selectf(), EDBM_op_call_silentf(), EDBM_op_callf(), EDBM_op_finish(), EDBM_op_init(), edbm_point_normals_modal(), edbm_poke_face_exec(), edbm_polybuild_delete_at_cursor_invoke(), edbm_polybuild_dissolve_at_cursor_invoke(), edbm_polybuild_face_at_cursor_invoke(), edbm_polybuild_split_at_cursor_invoke(), edbm_polybuild_transform_at_cursor_invoke(), edbm_preselect_or_active(), EDBM_project_snap_verts(), edbm_quads_convert_to_tris_exec(), EDBM_redo_state_restore(), EDBM_redo_state_restore_and_free(), EDBM_redo_state_store(), edbm_region_to_loop_exec(), edbm_remove_doubles_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_flush(), edbm_select_id_bm_elem_get(), EDBM_select_interior_faces(), EDBM_select_less(), edbm_select_less_exec(), edbm_select_linked_exec(), edbm_select_linked_flat_faces_exec(), edbm_select_linked_pick_ex(), edbm_select_linked_pick_invoke(), edbm_select_loose_exec(), edbm_select_mirror_exec(), EDBM_select_mirrored(), EDBM_select_more(), 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_swap(), EDBM_select_toggle_all(), edbm_select_ungrouped_exec(), edbm_select_ungrouped_poll(), EDBM_selectmode_convert(), EDBM_selectmode_flush_ex(), EDBM_selectmode_set(), edbm_separate_exec(), edbm_set_normals_from_faces_exec(), edbm_shape_propagate_to_all_exec(), edbm_shortest_path_pick_exec(), edbm_shortest_path_pick_invoke(), edbm_shortest_path_select_exec(), edbm_smooth_normals_exec(), edbm_solidify_exec(), edbm_sort_elements_exec(), edbm_spin_exec(), edbm_split_exec(), EDBM_stats_update(), edbm_strip_selections(), edbm_subdivide_edge_ring_exec(), edbm_subdivide_exec(), edbm_tris_convert_to_quads_exec(), EDBM_unified_findnearest_from_raycast(), edbm_unsubdivide_exec(), EDBM_update(), EDBM_uv_active_face_get(), EDBM_uv_check(), EDBM_vert_color_check(), edbm_vert_connect_concave_exec(), edbm_vert_connect_nonplaner_exec(), edbm_vert_connect_path_exec(), EDBM_vert_find_nearest_ex(), EDBM_verts_mirror_apply(), EDBM_verts_mirror_cache_begin_ex(), EDBM_verts_mirror_cache_clear(), EDBM_verts_mirror_get(), edbm_wireframe_exec(), edgering_select(), edgetag_ensure_cd_flag(), editbmesh_calc_modifiers(), editbmesh_get_x_mirror_vert_spatial(), editbmesh_get_x_mirror_vert_topo(), editmesh_partial_update_begin_fn(), editmesh_tessface_calc_intern(), face_map_assign_exec(), face_map_remove_from_exec(), fmap_select(), freeCustomNormalArray(), get_domains(), get_vert_def_nr(), get_weights_array(), getTransformOrientation_ex(), gizmo_mesh_spin_init_refresh(), gizmo_preselect_edgering_test_select(), gizmo_preselect_elem_test_select(), HC_relaxation_iteration_uv(), initNormalRotation(), initTransform(), key_block_get_data(), knife_make_cuts(), knifeproject_exec(), knifetool_init_obinfo(), knifetool_invoke(), laplacian_relaxation_iteration_uv(), lattice_deform_coords_impl(), loop_find_regions(), loopcut_finish(), loopcut_init(), make_child_duplis_faces_from_editmesh(), make_child_duplis_verts_from_editmesh(), make_duplis_faces(), material_slot_assign_exec(), merge_firstlast(), merge_target(), merge_type_itemf(), mesh_bisect_exec(), mesh_bisect_invoke(), mesh_cd_edata_get_from_mesh(), mesh_cd_ldata_get_from_mesh(), mesh_cd_pdata_get_from_mesh(), mesh_cd_vdata_get_from_mesh(), mesh_circle_select(), mesh_customdata_clear_exec__internal(), mesh_customdata_custom_splitnormals_add_exec(), mesh_customdata_custom_splitnormals_clear_exec(), mesh_customdata_get_type(), mesh_foreachScreenEdge(), mesh_foreachScreenEdge_clip_bb_segment(), mesh_foreachScreenFace(), mesh_foreachScreenVert(), mesh_render_data_create(), mesh_set_smooth_faces(), mesh_symmetrize_exec(), mesh_symmetry_snap_exec(), minimize_stretch_exit(), minimize_stretch_iteration(), modifier_skin_customdata_delete(), modwrap_dependsOnNormals(), mouse_mesh_loop(), mouse_mesh_shortest_path_edge(), mouse_mesh_shortest_path_face(), mouse_mesh_shortest_path_vert(), mouse_mesh_uv_shortest_path_edge(), mouse_mesh_uv_shortest_path_face(), mouse_mesh_uv_shortest_path_vert(), multires_customdata_delete(), multiresModifier_set_levels_from_disps(), nearest2d_data_init_editmesh(), normals_split_merge(), object_defgroup_remove_edit_mode(), object_fmap_remap_edit_mode(), object_fmap_remove_edit_mode(), object_origin_set_exec(), overlay_edit_uv_cache_populate(), point_normals_apply(), point_normals_init(), prepare_mesh_for_viewport_render(), raycastEditMesh(), return_editmesh_indexar(), return_editmesh_vgroup(), ringsel_find_edge(), ringsel_finish(), select_editbmesh_hook(), select_linked_delimit_end(), set_mapped_co(), shape_itemf(), shape_propagate(), 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_mesh_polygon(), snap_object_data_editmesh_get(), snap_object_data_editmesh_treedata_get(), snap_sel_to_grid_exec(), snap_selected_to_location(), snapEditMesh(), sort_bmelem_flag(), special_aftertrans_update__mesh(), sphere_project_exec(), stats_object_edit(), blender::draw::statvis_calc_distort(), blender::draw::statvis_calc_intersect(), blender::draw::statvis_calc_overhang(), blender::draw::statvis_calc_sharp(), stitch_calculate_edge_normal(), stitch_exit(), stitch_init(), stitch_invoke(), tc_mesh_customdatacorrect_create_impl(), tc_mesh_partial_ensure(), tc_mesh_partial_update(), tc_mesh_skin_transdata_create(), transform_convert_mesh_crazyspace_detect(), transform_convert_mesh_islands_calc(), transform_convert_mesh_mirrordata_calc(), transformEnd(), undomesh_from_editmesh(), undomesh_to_editmesh(), 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_isolate_selected_islands(), uv_map_clip_correct_multi(), uv_map_mirror(), uv_map_transform_calc_bounds(), uv_map_transform_calc_center_median(), uv_map_transform_center(), 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(), uv_select_edgeloop(), uv_select_edgeloop_double_side_tag(), uv_select_edgeloop_single_side_tag(), uv_select_edgering(), uv_select_faceloop(), uv_select_flush_from_loop_edge_flag(), uv_select_flush_from_tag_face(), uv_select_flush_from_tag_loop(), uv_select_flush_from_tag_sticky_loc_internal(), uv_select_invert(), uv_select_linked_multi(), uv_select_more_less(), uv_select_overlap(), uv_select_pinned_exec(), uv_select_similar_edge_exec(), uv_select_similar_face_exec(), uv_select_similar_vert_exec(), uv_select_split_exec(), 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_deselect_flush(), uvedit_edge_select_disable(), uvedit_edge_select_enable(), uvedit_face_select_disable(), uvedit_face_select_enable(), uvedit_have_selection(), uvedit_nearest_uv(), uvedit_select_flush(), uvedit_select_is_any_selected(), uvedit_translate(), uvedit_unwrap(), uvedit_uv_select_disable(), uvedit_uv_select_enable(), uvedit_vertex_select_tagged(), v3d_editvertex_buts(), vertex_color_set(), vertex_parent_set_exec(), vgroup_assign_verts(), vgroup_copy_active_to_sel(), vgroup_copy_active_to_sel_single(), vgroup_do_remap(), vgroup_normalize_active_vertex(), vgroup_select_verts(), vgroup_smooth_subset(), view3d_circle_select_recalc(), walker_deselect_nth(), walker_select(), walker_select_count(), workbench_mesh_get_loop_custom_data(), and workbench_mesh_get_vert_custom_data().

◆ is_shallow_copy

char BMEditMesh::is_shallow_copy

Enable for evaluated copies, causes the edit-mesh to free the memory, not it's contents.

Definition at line 62 of file BKE_editmesh.h.

Referenced by BKE_mesh_free_editmesh(), and BKE_mesh_wrapper_from_editmesh_with_coords().

◆ looptris

struct BMLoop*(* BMEditMesh::looptris)[3]

◆ mat_nr

short BMEditMesh::mat_nr

The active material (assigned to newly created faces).

Definition at line 54 of file BKE_editmesh.h.

Referenced by BKE_editmesh_copy(), edbm_add_edge_face_exec(), edbm_fill_grid_exec(), EDBM_mesh_make(), and EDBM_select_pick().

◆ mirror_cdlayer

int BMEditMesh::mirror_cdlayer

Temp variables for x-mirror editing (-1 when the layer does not exist).

Definition at line 57 of file BKE_editmesh.h.

Referenced by EDBM_verts_mirror_cache_begin_ex(), EDBM_verts_mirror_cache_clear(), EDBM_verts_mirror_cache_end(), and EDBM_verts_mirror_get().

◆ needs_flush_to_id

char BMEditMesh::needs_flush_to_id

ID data is older than edit-mode data. Set Main.is_memfile_undo_flush_needed when enabling.

Definition at line 68 of file BKE_editmesh.h.

Referenced by BKE_object_data_editmode_flush_ptr_get(), mesh_undosys_step_decode(), and mesh_undosys_step_encode().

◆ selectmode

short BMEditMesh::selectmode

Selection mode (SCE_SELECT_VERTEX, SCE_SELECT_EDGE & SCE_SELECT_FACE).

Definition at line 52 of file BKE_editmesh.h.

Referenced by BKE_editmesh_copy(), createTransEditVerts(), createTransMeshSkin(), createTransMeshVertCData(), deselect_nth_active(), DRW_text_edit_mesh_measure_stats(), ED_transverts_create_from_obedit(), edbm_bevel_exit(), edbm_decimate_exec(), EDBM_deselect_flush(), edbm_dissolve_limited_exec(), edbm_dissolve_mode_exec(), edbm_elem_find_nearest(), EDBM_elem_from_selectmode(), edbm_extrude_htype_from_em_select(), edbm_extrude_mesh(), edbm_hide_exec(), edbm_merge_exec(), EDBM_mesh_hide(), EDBM_mesh_make(), EDBM_mesh_reveal(), edbm_region_to_loop_exec(), edbm_remove_doubles_exec(), EDBM_select_flush(), EDBM_select_less(), edbm_select_linked_exec(), edbm_select_linked_pick_exec(), edbm_select_loose_exec(), EDBM_select_mirrored(), EDBM_select_more(), edbm_select_non_manifold_exec(), edbm_select_random_exec(), EDBM_select_swap(), edbm_select_ungrouped_poll(), EDBM_selectmode_disable(), edbm_selectmode_ensure(), EDBM_selectmode_flush(), EDBM_selectmode_set(), EDBM_selectmode_set_multi(), EDBM_selectmode_to_scene(), EDBM_selectmode_toggle_multi(), edbm_shortest_path_pick_invoke(), edbm_shortest_path_select_exec(), edbm_sort_elements_exec(), edbm_strip_selections(), edbm_unsubdivide_exec(), knifetool_init(), merge_type_itemf(), mesh_circle_select(), mouse_mesh_loop(), ringsel_finish(), select_similar_type_itemf(), special_aftertrans_update__mesh(), transform_convert_mesh_islands_calc(), uiTemplateEditModeSelection(), undomesh_to_editmesh(), unified_findnearest(), uv_hide_exec(), uv_reveal_exec(), VertsToTransData(), and view3d_circle_select_recalc().

◆ tottri

int BMEditMesh::tottri

The documentation for this struct was generated from the following file: