|
Blender V4.3
|
#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 |
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.
| BMEditMesh * BKE_editmesh_copy | ( | BMEditMesh * | em | ) |
Definition at line 41 of file editmesh.cc.
References BMEditMesh::bm, BM_mesh_copy(), BMEditMesh::looptris, BMEditMesh::mat_nr, and BMEditMesh::selectmode.
| BMEditMesh * BKE_editmesh_create | ( | BMesh * | bm | ) |
Definition at line 34 of file editmesh.cc.
References bm, and BMEditMesh::bm.
Referenced by geometry_extract_apply(), and undomesh_to_editmesh().
| void BKE_editmesh_free_data | ( | BMEditMesh * | em | ) |
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().
| BMEditMesh * BKE_editmesh_from_object | ( | Object * | ob | ) |
Return the BMEditMesh for a given object.
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().
| void BKE_editmesh_lnorspace_update | ( | BMEditMesh * | em | ) |
Definition at line 208 of file editmesh.cc.
References BMEditMesh::bm, and BM_lnorspace_update().
Referenced by edbm_average_normals_exec(), edbm_normals_tools_exec(), edbm_set_normals_from_faces_exec(), edbm_smooth_normals_exec(), initNormalRotation(), initTransform(), normals_split_merge(), point_normals_init(), and blender::ed::mesh::set_sharpness_by_angle_exec().
| void BKE_editmesh_looptris_and_normals_calc | ( | BMEditMesh * | em | ) |
Performing the face normal calculation at the same time as tessellation gives a reasonable performance boost (approx ~20% faster).
Definition at line 83 of file editmesh.cc.
References BKE_editmesh_looptris_calc_ex(), BMEditMesh::bm, BM_mesh_normals_update_ex(), BMeshCalcTessellation_Params::face_normals, and BMeshNormalsUpdate_Params::face_normals.
Referenced by EDBM_update(), blender::ed::object::editmode_enter_ex(), mesh_partial_update(), blender::ed::object::object_hook_index_array(), recalcData_mesh_skin(), blender::ed::geometry::store_result_geometry(), undomesh_to_editmesh(), and blender::ed::object::vertex_parent_set_exec().
| void BKE_editmesh_looptris_and_normals_calc_with_partial | ( | BMEditMesh * | em, |
| BMPartialUpdate * | bmpinfo ) |
Definition at line 110 of file editmesh.cc.
References BKE_editmesh_looptris_calc_with_partial_ex(), BMEditMesh::bm, BM_mesh_normals_update_with_partial_ex(), BMeshCalcTessellation_Params::face_normals, and BMeshNormalsUpdate_Params::face_normals.
Referenced by editmesh_partial_update_update_fn().
| void BKE_editmesh_looptris_calc | ( | BMEditMesh * | em | ) |
Definition at line 76 of file editmesh.cc.
References BKE_editmesh_looptris_calc_ex(), and params.
Referenced by createTransEditVerts(), EDBM_redo_state_restore(), EDBM_redo_state_restore_and_free(), and EDBM_update().
| void BKE_editmesh_looptris_calc_ex | ( | BMEditMesh * | em, |
| const BMeshCalcTessellation_Params * | params ) |
Definition at line 69 of file editmesh.cc.
References bm, BMEditMesh::bm, BM_mesh_calc_tessellation_ex(), BMEditMesh::looptris, params, poly_to_tri_count(), blender::Array< T, InlineBufferCapacity, Allocator >::reinitialize(), BMesh::totface, and BMesh::totloop.
Referenced by BKE_editmesh_looptris_and_normals_calc(), and BKE_editmesh_looptris_calc().
| void BKE_editmesh_looptris_calc_with_partial | ( | BMEditMesh * | em, |
| BMPartialUpdate * | bmpinfo ) |
Definition at line 103 of file editmesh.cc.
References BKE_editmesh_looptris_calc_with_partial_ex(), and BMeshCalcTessellation_Params::face_normals.
| void BKE_editmesh_looptris_calc_with_partial_ex | ( | BMEditMesh * | em, |
| BMPartialUpdate * | bmpinfo, | ||
| const BMeshCalcTessellation_Params * | params ) |
Definition at line 93 of file editmesh.cc.
References BLI_assert, BMEditMesh::bm, BM_mesh_calc_tessellation_with_partial_ex(), blender::Array< T, InlineBufferCapacity, Allocator >::is_empty(), BMEditMesh::looptris, params, poly_to_tri_count(), blender::Array< T, InlineBufferCapacity, Allocator >::size(), BMesh::totface, and BMesh::totloop.
Referenced by BKE_editmesh_looptris_and_normals_calc_with_partial(), BKE_editmesh_looptris_calc_with_partial(), and mesh_partial_update().
| blender::Array< blender::float3 > BKE_editmesh_vert_coords_alloc | ( | Depsgraph * | depsgraph, |
| BMEditMesh * | em, | ||
| Scene * | scene, | ||
| Object * | ob ) |
Definition at line 148 of file editmesh.cc.
References BKE_mesh_foreach_mapped_vert(), BLI_BITMAP_NEW, BMEditMesh::bm, cage_mapped_verts_callback(), CD_MASK_BAREMESH, data, depsgraph, blender::bke::editbmesh_get_eval_cage(), MEM_freeN(), MESH_FOREACH_NOP, BMesh::totvert, and CageUserData::totvert.
Referenced by BKE_editmesh_vert_coords_when_deformed(), and knifetool_init_obinfo().
| 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().
| blender::Span< blender::float3 > BKE_editmesh_vert_coords_when_deformed | ( | Depsgraph * | depsgraph, |
| BMEditMesh * | em, | ||
| Scene * | scene, | ||
| Object * | obedit, | ||
| blender::Array< blender::float3 > & | r_alloc ) |
Referenced by calcEdgeSlide_mval_range(), gizmo_preselect_edgering_test_select(), and ringsel_find_edge().