Blender V4.3
BKE_editmesh.hh File Reference
#include <array>
#include "BLI_array.hh"
#include "BLI_math_vector_types.hh"
#include "DNA_customdata_types.h"
#include "bmesh.hh"

Go to the source code of this file.

Classes

struct  BMEditMesh
 

Functions

void BKE_editmesh_looptris_calc_ex (BMEditMesh *em, const BMeshCalcTessellation_Params *params)
 
void BKE_editmesh_looptris_calc (BMEditMesh *em)
 
void BKE_editmesh_looptris_calc_with_partial_ex (BMEditMesh *em, BMPartialUpdate *bmpinfo, const BMeshCalcTessellation_Params *params)
 
void BKE_editmesh_looptris_calc_with_partial (BMEditMesh *em, BMPartialUpdate *bmpinfo)
 
void BKE_editmesh_looptris_and_normals_calc_with_partial (BMEditMesh *em, BMPartialUpdate *bmpinfo)
 
void BKE_editmesh_looptris_and_normals_calc (BMEditMesh *em)
 
BMEditMeshBKE_editmesh_create (BMesh *bm)
 
BMEditMeshBKE_editmesh_copy (BMEditMesh *em)
 
BMEditMeshBKE_editmesh_from_object (Object *ob)
 Return the BMEditMesh for a given object.
 
void BKE_editmesh_free_data (BMEditMesh *em)
 
blender::Array< blender::float3BKE_editmesh_vert_coords_alloc (Depsgraph *depsgraph, BMEditMesh *em, Scene *scene, Object *ob)
 
blender::Array< blender::float3BKE_editmesh_vert_coords_alloc_orco (BMEditMesh *em)
 
blender::Span< blender::float3BKE_editmesh_vert_coords_when_deformed (Depsgraph *depsgraph, BMEditMesh *em, Scene *scene, Object *obedit, blender::Array< blender::float3 > &r_alloc)
 
void BKE_editmesh_lnorspace_update (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.hh.

Function Documentation

◆ BKE_editmesh_copy()

BMEditMesh * BKE_editmesh_copy ( BMEditMesh * em)

◆ BKE_editmesh_create()

BMEditMesh * BKE_editmesh_create ( BMesh * bm)
Note
The caller is responsible for ensuring triangulation data, typically by calling BKE_editmesh_looptris_calc.

Definition at line 34 of file editmesh.cc.

References bm, and BMEditMesh::bm.

Referenced by geometry_extract_apply(), and undomesh_to_editmesh().

◆ BKE_editmesh_free_data()

void BKE_editmesh_free_data ( BMEditMesh * em)
Note
Does not free the BMEditMesh itself.

Definition at line 120 of file editmesh.cc.

References BMEditMesh::bm, BM_mesh_free(), and BMEditMesh::looptris.

Referenced by EDBM_mesh_free_data(), and geometry_extract_apply().

◆ 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 63 of file editmesh.cc.

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_crazyspace_get_mapped_editverts(), BKE_modifier_get_evaluated_mesh_from_evaluated_object(), blender::ed::object::calc_active_center_for_editmode(), calc_ortho_extent(), calcEdgeSlide_mval_range(), construct_param_handle_multi(), contarget_get_mesh_mat(), create_mesh(), createTransEdge(), createTransEditVerts(), createTransMeshSkin(), createTransMeshVertCData(), createTransUVs(), cube_project_exec(), cylinder_project_exec(), deform_verts(), do_lasso_select_mesh(), do_lasso_select_mesh_uv(), ED_operator_editmesh(), ED_operator_uvmap(), ED_space_image_auto_set(), ED_space_image_show_uvedit(), ED_transverts_create_from_obedit(), ED_transverts_update_obedit(), ED_uvedit_ensure_uvs(), ED_uvedit_foreach_uv_multi(), ED_uvedit_get_aspect(), ED_uvedit_live_unwrap_begin(), ED_uvedit_selectmode_clean(), ED_uvedit_test(), 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_flip_quad_tessellation_exec(), edbm_hide_exec(), edbm_inset_calc(), edbm_inset_cancel(), edbm_inset_init(), edbm_intersect_boolean_exec(), edbm_intersect_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_knife(), 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_by_attribute_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_sync_multi_ex(), 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_vert_or_edge_select_mode_poll(), edbm_wireframe_exec(), edgering_select(), blender::bke::editbmesh_get_eval_cage_from_orig(), editmesh_snapdata_init(), blender::ed::object::editmode_enter_ex(), em_setup_viewcontext(), freeCustomNormalArray(), getTransformOrientation_ex(), gizmo_3d_foreach_selected(), gizmo_mesh_spin_init_refresh(), gizmo_preselect_edgering_test_select(), gizmo_preselect_elem_test_select(), initNormalRotation(), knife_bvh_init(), knife_bvh_raycast_cb(), knife_find_line_hits(), knife_make_cuts(), knife_ray_intersect_face(), knifeproject_exec(), knifetool_finish_single_post(), knifetool_init(), knifetool_init_obinfo(), knifetool_invoke(), 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_create_impl(), mesh_data_from_duplicator_object(), mesh_partial_ensure(), mesh_partial_update(), blender::ed::mesh::set_attribute::mesh_set_attribute_exec(), 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_edge(), mouse_mesh_uv_shortest_path_face(), mouse_mesh_uv_shortest_path_vert(), normals_split_merge(), point_normals_apply(), point_normals_init(), recalcData_mesh_skin(), reset_exec(), ringsel_find_edge(), select_similar_type_itemf(), shape_itemf(), similar_edge_select_exec(), similar_face_select_exec(), similar_vert_select_exec(), blender::ed::object::skin_loose_mark_clear_exec(), blender::ed::object::skin_radii_equalize_exec(), blender::ed::object::skin_root_mark_exec(), smart_project_exec(), snap_curs_to_sel_ex(), 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(), transform_mesh_edge_slide_data_create(), transform_mesh_uv_edge_slide_data_create(), transform_mesh_uv_vert_slide_data_create(), transformEnd(), uiTemplateEditModeSelection(), uv_box_select_exec(), uv_circle_select_exec(), uv_copy_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(), uv_mouse_select_loop_generic_multi(), uv_mouse_select_multi(), uv_paste_exec(), uv_pin_exec(), uv_remove_doubles_to_selected(), uv_remove_doubles_to_selected_shared_vertex(), 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_faceloop(), 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_similar_edge_exec(), uv_select_similar_face_exec(), uv_select_similar_island_exec(), uv_select_similar_vert_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_nearest_uv(), uvedit_pack_islands_multi(), uvedit_select_is_any_selected(), uvedit_translate(), uvedit_unwrap(), blender::ed::object::vgroup_do_remap(), blender::ed::object::vgroup_parray_mirror_assign(), blender::ed::object::vgroup_parray_mirror_sync(), blender::ed::object::vgroup_smooth_subset(), view3d_box_select_exec(), view3d_circle_select_exec(), and view3d_lasso_select().

◆ BKE_editmesh_lnorspace_update()

◆ BKE_editmesh_looptris_and_normals_calc()

◆ BKE_editmesh_looptris_and_normals_calc_with_partial()

◆ BKE_editmesh_looptris_calc()

void BKE_editmesh_looptris_calc ( BMEditMesh * em)

◆ BKE_editmesh_looptris_calc_ex()

◆ BKE_editmesh_looptris_calc_with_partial()

void BKE_editmesh_looptris_calc_with_partial ( BMEditMesh * em,
BMPartialUpdate * bmpinfo )

◆ BKE_editmesh_looptris_calc_with_partial_ex()

◆ BKE_editmesh_vert_coords_alloc()

◆ BKE_editmesh_vert_coords_alloc_orco()

blender::Array< blender::float3 > BKE_editmesh_vert_coords_alloc_orco ( BMEditMesh * em)

Definition at line 203 of file editmesh.cc.

References BMEditMesh::bm, and BM_mesh_vert_coords_alloc().

Referenced by correctivesmooth_modifier_do().

◆ BKE_editmesh_vert_coords_when_deformed()

blender::Span< blender::float3 > BKE_editmesh_vert_coords_when_deformed ( Depsgraph * depsgraph,
BMEditMesh * em,
Scene * scene,
Object * obedit,
blender::Array< blender::float3 > & r_alloc )