|
Blender V5.0
|
#include "MEM_guardedalloc.h"#include "DNA_mesh_types.h"#include "DNA_object_types.h"#include "BLI_bitmap.h"#include "BLI_math_geom.h"#include "BLI_math_vector.h"#include "BKE_customdata.hh"#include "BKE_editmesh.hh"#include "BKE_mesh.hh"#include "BKE_mesh_iterators.hh"#include "BKE_mesh_runtime.hh"#include "BKE_mesh_wrapper.hh"#include "BKE_object.hh"#include "DEG_depsgraph_query.hh"Go to the source code of this file.
Classes | |
| struct | CageUserData |
Typedefs | |
| using | float3 |
| using blender::float3 |
Definition at line 619 of file BLI_math_vector_types.hh.
| BMEditMesh * BKE_editmesh_copy | ( | BMEditMesh * | em | ) |
Definition at line 39 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 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().
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().
| void BKE_editmesh_free_data | ( | BMEditMesh * | em | ) |
Definition at line 132 of file editmesh.cc.
References BMEditMesh::bm, BM_mesh_free(), and BMEditMesh::looptris.
Referenced by EDBM_mesh_free_data(), blender::bke::tests::ArmatureDeformTestBase::edit_mesh_test(), and geometry_extract_apply().
| BMEditMesh * BKE_editmesh_from_object | ( | Object * | ob | ) |
Return the BMEditMesh for a given object.
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().
| void BKE_editmesh_lnorspace_update | ( | BMEditMesh * | em | ) |
Definition at line 220 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(), blender::ed::transform::initNormalRotation(), blender::ed::transform::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 95 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(), blender::ed::transform::mesh_partial_update(), blender::ed::object::object_hook_index_array(), blender::ed::transform::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 122 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 88 of file editmesh.cc.
References BKE_editmesh_looptris_calc_ex(), and params.
Referenced by blender::ed::transform::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 81 of file editmesh.cc.
References bm, BMEditMesh::bm, BM_mesh_calc_tessellation_ex(), BMEditMesh::looptris, params, poly_to_tri_count(), and Array< T, InlineBufferCapacity, Allocator >::reinitialize().
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 115 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 105 of file editmesh.cc.
References BLI_assert, BMEditMesh::bm, BM_mesh_calc_tessellation_with_partial_ex(), Array< T, InlineBufferCapacity, Allocator >::is_empty(), BMEditMesh::looptris, params, poly_to_tri_count(), 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 blender::ed::transform::mesh_partial_update().
| Array< float3 > BKE_editmesh_vert_coords_alloc | ( | Depsgraph * | depsgraph, |
| BMEditMesh * | em, | ||
| Scene * | scene, | ||
| Object * | ob ) |
Definition at line 160 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, and BMesh::totvert.
Referenced by BKE_editmesh_vert_coords_when_deformed(), and knifetool_init_obinfo().
| Array< 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().
| Span< float3 > BKE_editmesh_vert_coords_when_deformed | ( | Depsgraph * | depsgraph, |
| BMEditMesh * | em, | ||
| Scene * | scene, | ||
| Object * | ob, | ||
| Array< float3 > & | r_alloc ) |
Definition at line 184 of file editmesh.cc.
References blender::Array< T, InlineBufferCapacity, Allocator >::as_span(), BKE_editmesh_vert_coords_alloc(), BKE_mesh_wrapper_vert_coords(), BKE_mesh_wrapper_vert_len(), BKE_object_get_editmesh_eval_cage(), BKE_object_get_editmesh_eval_final(), BLI_assert, BMEditMesh::bm, DEG_get_evaluated(), depsgraph, ME_WRAPPER_TYPE_BMESH, Mesh::runtime, and BMesh::totvert.
|
static |
Definition at line 147 of file editmesh.cc.
References BLI_BITMAP_ENABLE, BLI_BITMAP_TEST, copy_v3_v3(), and data.
Referenced by BKE_editmesh_vert_coords_alloc().