|
Blender V5.0
|
#include "BLI_math_matrix.h"#include "BLI_math_vector.h"#include "BLI_task.hh"#include "BLI_utildefines.h"#include "BKE_editmesh.hh"#include "BKE_editmesh_cache.hh"#include "BKE_lib_id.hh"#include "BKE_mesh.hh"#include "BKE_mesh_runtime.hh"#include "BKE_mesh_wrapper.hh"#include "BKE_modifier.hh"#include "BKE_subdiv.hh"#include "BKE_subdiv_mesh.hh"#include "BKE_subdiv_modifier.hh"Go to the source code of this file.
Typedefs | |
| using | float3 |
The primary purpose of this API is to avoid unnecessary mesh conversion for the final output of a modified mesh.
This API handles the case when the modifier stack outputs a mesh which does not have Mesh data (#Mesh::faces(), corner verts, corner edges, edges, etc). Currently this is used so the resulting mesh can have BMEditMesh data, postponing the converting until it's needed or avoiding conversion entirely which can be an expensive operation. Once converted, the meshes type changes to ME_WRAPPER_TYPE_MDATA, although the edit mesh is not cleared.
This API exposes functions that abstract over the different kinds of internal data, as well as supporting converting the mesh into regular mesh.
Definition in file mesh_wrapper.cc.
| using blender::float3 |
Definition at line 619 of file BLI_math_vector_types.hh.
| int BKE_mesh_wrapper_edge_len | ( | const Mesh * | mesh | ) |
Definition at line 266 of file mesh_wrapper.cc.
References BLI_assert_unreachable, Mesh::edges_num, ME_WRAPPER_TYPE_BMESH, ME_WRAPPER_TYPE_MDATA, ME_WRAPPER_TYPE_SUBD, and Mesh::runtime.
| void BKE_mesh_wrapper_ensure_mdata | ( | Mesh * | mesh | ) |
Definition at line 79 of file mesh_wrapper.cc.
References BKE_mesh_ensure_default_orig_index_customdata_no_check(), BLI_assert, BMEditMesh::bm, BM_mesh_bm_to_me_for_eval(), Mesh::corners_num, Mesh::edges_num, Mesh::faces_num, blender::threading::isolate_task(), lock, ME_WRAPPER_TYPE_BMESH, ME_WRAPPER_TYPE_MDATA, ME_WRAPPER_TYPE_SUBD, Mesh::runtime, blender::bke::EditMeshData::vert_positions, and Mesh::verts_num.
Referenced by blender::bke::add_final_mesh_as_geometry_component(), arrayModifier_doArray(), BKE_modifier_modify_mesh(), BKE_object_data_transfer_ex(), BKE_shrinkwrap_init_tree(), blender::io::alembic::ABCGenericMeshWriter::do_write(), ED_mesh_deform_bind_callback(), blender::bke::editbmesh_calc_modifiers(), blender::io::stl::export_frame(), blender::io::ply::load_plydata(), mesh_new_from_mesh(), mesh_to_volume(), blender::bke::modifier_modify_mesh_and_geometry_set(), modify_mesh(), modify_mesh(), blender::nodes::node_geo_deform_curves_on_surface_cc::node_geo_exec(), and surfacedeformModifier_do().
Definition at line 401 of file mesh_wrapper.cc.
References BKE_mesh_wrapper_ensure_subdivision().
Definition at line 378 of file mesh_wrapper.cc.
References blender::threading::isolate_task(), lock, ME_WRAPPER_TYPE_SUBD, mesh_wrapper_ensure_subdivision(), and result.
Referenced by BKE_mesh_wrapper_ensure_subdivision(), BKE_modifier_get_evaluated_mesh_from_evaluated_object(), BKE_object_get_evaluated_mesh_unchecked(), BPy_GeometrySet_get_mesh(), blender::ed::transform::data_for_snap_dupli(), DRW_mesh_get_for_drawing(), DRW_object_get_editmesh_cage_for_drawing(), mesh_foreachScreenEdge(), mesh_foreachScreenEdge_clip_bb_segment(), mesh_foreachScreenFace(), mesh_foreachScreenVert(), mesh_new_from_mesh(), mesh_new_from_mesh_object_with_layers(), modify_mesh(), and object_get_data().
| int BKE_mesh_wrapper_face_len | ( | const Mesh * | mesh | ) |
Definition at line 292 of file mesh_wrapper.cc.
References BLI_assert_unreachable, Mesh::faces_num, ME_WRAPPER_TYPE_BMESH, ME_WRAPPER_TYPE_MDATA, ME_WRAPPER_TYPE_SUBD, and Mesh::runtime.
Referenced by surfacedeformModifier_do().
Return a contiguous array of face normal values, if available. Otherwise, normals are stored in BMesh faces and this returns null.
Definition at line 150 of file mesh_wrapper.cc.
References BKE_editmesh_cache_ensure_face_normals(), BLI_assert_unreachable, ME_WRAPPER_TYPE_BMESH, ME_WRAPPER_TYPE_MDATA, ME_WRAPPER_TYPE_SUBD, and Mesh::runtime.
Referenced by DRW_text_edit_mesh_measure_stats().
| Mesh * BKE_mesh_wrapper_from_editmesh | ( | std::shared_ptr< BMEditMesh > | em, |
| const CustomData_MeshMasks * | cd_mask_extra, | ||
| const Mesh * | me_settings ) |
Definition at line 42 of file mesh_wrapper.cc.
References BKE_id_new_nomain(), BKE_mesh_copy_parameters_for_eval(), BKE_mesh_runtime_ensure_edit_data(), Mesh::corners_num, Mesh::edges_num, Mesh::faces_num, ME_WRAPPER_TYPE_BMESH, Mesh::runtime, and Mesh::verts_num.
Referenced by BKE_crazyspace_get_first_deform_matrices_editbmesh(), and blender::bke::editbmesh_calc_modifiers().
| int BKE_mesh_wrapper_loop_len | ( | const Mesh * | mesh | ) |
Definition at line 279 of file mesh_wrapper.cc.
References BLI_assert_unreachable, Mesh::corners_num, ME_WRAPPER_TYPE_BMESH, ME_WRAPPER_TYPE_MDATA, ME_WRAPPER_TYPE_SUBD, and Mesh::runtime.
| void BKE_mesh_wrapper_tag_positions_changed | ( | Mesh * | mesh | ) |
Definition at line 164 of file mesh_wrapper.cc.
References ME_WRAPPER_TYPE_BMESH, ME_WRAPPER_TYPE_MDATA, ME_WRAPPER_TYPE_SUBD, and Mesh::runtime.
Referenced by blender::bke::editbmesh_calc_modifiers().
Return a contiguous array of vertex position values, if available. Otherwise, vertex positions are stored in BMesh vertices and this returns null.
Definition at line 137 of file mesh_wrapper.cc.
References BLI_assert_unreachable, ME_WRAPPER_TYPE_BMESH, ME_WRAPPER_TYPE_MDATA, ME_WRAPPER_TYPE_SUBD, and Mesh::runtime.
Referenced by BKE_editmesh_vert_coords_when_deformed(), BKE_object_foreach_display_point(), DRW_text_edit_mesh_measure_stats(), EDBM_unified_findnearest_from_raycast(), gizmo_preselect_elem_test_select(), and blender::bke::mesh_get_mapped_verts_coords().
| void BKE_mesh_wrapper_vert_coords_copy | ( | const Mesh * | mesh, |
| blender::MutableSpan< float3 > | positions ) |
Definition at line 181 of file mesh_wrapper.cc.
References BLI_assert_unreachable, bm, BM_ITER_MESH_INDEX, BM_VERTS_OF_MESH, blender::MutableSpan< T >::copy_from(), copy_v3_v3(), i, ME_WRAPPER_TYPE_BMESH, ME_WRAPPER_TYPE_MDATA, ME_WRAPPER_TYPE_SUBD, Mesh::runtime, v, and blender::bke::EditMeshData::vert_positions.
| void BKE_mesh_wrapper_vert_coords_copy_with_mat4 | ( | const Mesh * | mesh, |
| float(*) | vert_coords[3], | ||
| int | vert_coords_len, | ||
| const float | mat[4][4] ) |
Definition at line 209 of file mesh_wrapper.cc.
References BLI_assert, BLI_assert_unreachable, bm, BM_ITER_MESH_INDEX, BM_VERTS_OF_MESH, i, ME_WRAPPER_TYPE_BMESH, ME_WRAPPER_TYPE_MDATA, ME_WRAPPER_TYPE_SUBD, mul_v3_m4v3(), Mesh::runtime, v, blender::bke::EditMeshData::vert_positions, and Mesh::verts_num.
Referenced by surfacedeformModifier_do().
| int BKE_mesh_wrapper_vert_len | ( | const Mesh * | mesh | ) |
Definition at line 253 of file mesh_wrapper.cc.
References BLI_assert_unreachable, ME_WRAPPER_TYPE_BMESH, ME_WRAPPER_TYPE_MDATA, ME_WRAPPER_TYPE_SUBD, Mesh::runtime, and Mesh::verts_num.
Referenced by BKE_editmesh_vert_coords_when_deformed(), EDBM_unified_findnearest_from_raycast(), gizmo_preselect_elem_test_select(), meshdeformModifier_do(), and surfacedeformModifier_do().
Definition at line 311 of file mesh_wrapper.cc.
References BKE_id_free(), BKE_subsurf_modifier_subdiv_descriptor_ensure(), BLI_assert, CD_CONSTRUCT, CD_NORMAL, Mesh::corner_data, Mesh::corners_num, CustomData_add_layer(), CustomData_free_layers(), CustomData_get_layer_for_write(), data, ELEM, blender::bke::subdiv::free(), Mesh::key, blender::bke::subdiv::Settings::level, ME_WRAPPER_TYPE_SUBD, blender::bke::mesh_set_custom_normals_normalized(), blender::bke::subdiv::ToMeshSettings::resolution, SubsurfRuntimeData::resolution, SubsurfRuntimeData::settings, SubsurfRuntimeData::subdiv_cpu, SubsurfRuntimeData::subdiv_gpu, blender::bke::subdiv::subdiv_to_mesh(), SubsurfRuntimeData::use_loop_normals, blender::bke::subdiv::ToMeshSettings::use_optimal_display, and SubsurfRuntimeData::use_optimal_display.
Referenced by BKE_mesh_wrapper_ensure_subdivision().