Blender V5.0
BKE_editmesh.hh File Reference
#include <array>
#include "BLI_array.hh"
#include "BLI_math_vector_types.hh"
#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.
bool BKE_editmesh_eval_orig_map_available (const Mesh &mesh_eval, const Mesh *mesh_orig)
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 32 of file editmesh.cc.

References bm, and BMEditMesh::bm.

Referenced by blender::bke::tests::ArmatureDeformTestBase::edit_mesh_test(), geometry_extract_apply(), and undomesh_to_editmesh().

◆ BKE_editmesh_eval_orig_map_available()

bool BKE_editmesh_eval_orig_map_available ( const Mesh & mesh_eval,
const Mesh * mesh_orig )

Return whether the evaluated mesh is a "descendant" of the original mesh: whether it is a version of the original mesh propagated during evaluation. This will be false if the mesh was taken from an different object during evaluation, with the object info node for example.

Definition at line 67 of file editmesh.cc.

References Mesh::runtime.

Referenced by blender::draw::DRW_mesh_batch_cache_create_requested(), DRW_text_edit_mesh_measure_stats(), and knifetool_init_obinfo().

◆ BKE_editmesh_free_data()

void BKE_editmesh_free_data ( 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 61 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(), blender::ed::transform::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(), blender::ed::transform::calcEdgeSlide_mval_range(), construct_param_handle_multi(), contarget_get_mesh_mat(), EditMeshSymmetryHelper::create_if_needed(), blender::ed::transform::create_mesh(), blender::ed::transform::createTransEdge(), blender::ed::transform::createTransEditVerts(), blender::ed::transform::createTransMeshSkin(), blender::ed::transform::createTransMeshVertCData(), blender::ed::transform::createTransUVs(), cube_project_exec(), cylinder_project_exec(), deform_verts(), dissolve_mode_poll_property(), 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_update_obedit(), ED_uvedit_deselect_all(), 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_and_split(), edbm_automerge_impl(), 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_by_pole_count_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_set_multi_ex(), 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(), blender::ed::transform::editmesh_snapdata_init(), blender::ed::object::editmode_enter_ex(), em_setup_viewcontext(), blender::ed::transform::freeCustomNormalArray(), blender::ed::transform::getTransformOrientation_ex(), blender::ed::transform::gizmo_3d_foreach_selected(), gizmo_mesh_spin_init_refresh(), gizmo_preselect_edgering_test_select(), gizmo_preselect_elem_test_select(), blender::ed::transform::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_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(), blender::ed::transform::mesh_customdatacorrect_create_impl(), mesh_data_from_duplicator_object(), blender::ed::transform::mesh_partial_ensure(), blender::ed::transform::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(), blender::ed::transform::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_rotation(), sort_bmelem_flag(), blender::ed::transform::special_aftertrans_update__mesh(), sphere_project_exec(), stats_object_edit(), stitch_exit(), stitch_init(), stitch_invoke(), blender::ed::transform::transform_convert_mesh_crazyspace_detect(), blender::ed::transform::transform_mesh_edge_slide_data_create(), blender::ed::transform::transform_mesh_uv_edge_slide_data_create(), blender::ed::transform::transform_mesh_uv_vert_slide_data_create(), blender::ed::transform::transformEnd(), uiTemplateEditModeSelection(), uv_align(), uv_arrange_islands_exec(), uv_box_select_exec(), uv_circle_select_exec(), uv_copy_exec(), uv_copy_mirrored_faces_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_move_on_axis_exec(), 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_rip_object(), uv_sculpt_stroke_apply(), uv_sculpt_stroke_init(), 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_select_sync_update(), 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(), uvedit_center(), uvedit_ensure_uvs(), uvedit_have_selection_multi(), uvedit_nearest_uv(), uvedit_pack_islands_multi(), uvedit_select_is_any_selected_multi(), 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()

◆ 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 215 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 )