|
Blender
V2.93
|
#include <climits>#include <cstring>#include "MEM_guardedalloc.h"#include "DNA_cloth_types.h"#include "DNA_customdata_types.h"#include "DNA_key_types.h"#include "DNA_material_types.h"#include "DNA_mesh_types.h"#include "DNA_meshdata_types.h"#include "DNA_object_types.h"#include "DNA_scene_types.h"#include "BLI_array.h"#include "BLI_bitmap.h"#include "BLI_blenlib.h"#include "BLI_float2.hh"#include "BLI_linklist.h"#include "BLI_math.h"#include "BLI_task.h"#include "BLI_utildefines.h"#include "BLI_vector.hh"#include "BKE_DerivedMesh.h"#include "BKE_bvhutils.h"#include "BKE_colorband.h"#include "BKE_deform.h"#include "BKE_editmesh.h"#include "BKE_geometry_set.hh"#include "BKE_geometry_set_instances.hh"#include "BKE_key.h"#include "BKE_layer.h"#include "BKE_lib_id.h"#include "BKE_material.h"#include "BKE_mesh.h"#include "BKE_mesh_iterators.h"#include "BKE_mesh_mapping.h"#include "BKE_mesh_runtime.h"#include "BKE_mesh_tangent.h"#include "BKE_mesh_wrapper.h"#include "BKE_modifier.h"#include "BKE_multires.h"#include "BKE_object.h"#include "BKE_object_deform.h"#include "BKE_paint.h"#include "BLI_sys_types.h"#include "BKE_shrinkwrap.h"#include "DEG_depsgraph.h"#include "DEG_depsgraph_query.h"#include "CLG_log.h"#include "BLI_dynstr.h"Go to the source code of this file.
Classes | |
| struct | MappedUserData |
Macros | |
| #define | ASSERT_IS_VALID_MESH(mesh) |
Variables | |
| static ThreadRWMutex | loops_cache_lock = PTHREAD_RWLOCK_INITIALIZER |
| #define ASSERT_IS_VALID_MESH | ( | mesh | ) |
Definition at line 90 of file DerivedMesh.cc.
|
static |
Definition at line 756 of file DerivedMesh.cc.
References BKE_mesh_orco_verts_transform(), BKE_mesh_update_customdata_pointers(), BKE_mesh_vert_coords_alloc(), CD_CALLOC, CD_ORCO, CustomData_add_layer(), CustomData_get_layer(), Object::data, float(), free(), get_orco_coords(), MEM_freeN, mesh, and Mesh::totvert.
Referenced by editbmesh_calc_modifiers(), and mesh_calc_modifiers().
Utility function to convert an (evaluated) Mesh to a shape key block.
Definition at line 524 of file DerivedMesh.cc.
References BKE_keyblock_convert_from_mesh(), Mesh::key, and Mesh::totvert.
Referenced by ED_mesh_shapes_join_objects_exec().
| void BKE_mesh_wrapper_deferred_finalize | ( | Mesh * | me_eval, |
| const CustomData_MeshMasks * | cd_mask_finalize | ||
| ) |
Definition at line 878 of file DerivedMesh.cc.
References BLI_assert, editbmesh_calc_modifier_final_normals(), ME_WRAPPER_TYPE_BMESH, Mesh::runtime, and Mesh_Runtime::wrapper_type_finalize.
Referenced by BKE_mesh_wrapper_ensure_mdata().
|
static |
Definition at line 731 of file DerivedMesh.cc.
References BKE_mesh_copy_for_eval(), BKE_mesh_from_bmesh_for_eval_nomain(), BKE_mesh_vert_coords_apply(), BMEditMesh::bm, float(), free(), get_orco_coords(), MEM_freeN, and mesh.
Referenced by editbmesh_calc_modifiers(), and mesh_calc_modifiers().
| void DM_add_edge_layer | ( | DerivedMesh * | dm, |
| int | type, | ||
| eCDAllocType | alloctype, | ||
| void * | layer | ||
| ) |
Definition at line 573 of file DerivedMesh.cc.
References CustomData_add_layer(), DerivedMesh::edgeData, DerivedMesh::numEdgeData, and type.
Referenced by ccgDM_get_edge_data_layer().
| void DM_add_loop_layer | ( | DerivedMesh * | dm, |
| int | type, | ||
| eCDAllocType | alloctype, | ||
| void * | layer | ||
| ) |
Definition at line 583 of file DerivedMesh.cc.
References CustomData_add_layer(), DerivedMesh::loopData, DerivedMesh::numLoopData, and type.
| void DM_add_poly_layer | ( | DerivedMesh * | dm, |
| int | type, | ||
| eCDAllocType | alloctype, | ||
| void * | layer | ||
| ) |
Definition at line 588 of file DerivedMesh.cc.
References CustomData_add_layer(), DerivedMesh::numPolyData, DerivedMesh::polyData, and type.
Referenced by ccgDM_get_poly_data_layer().
| void DM_add_tessface_layer | ( | DerivedMesh * | dm, |
| int | type, | ||
| eCDAllocType | alloctype, | ||
| void * | layer | ||
| ) |
Definition at line 578 of file DerivedMesh.cc.
References CustomData_add_layer(), DerivedMesh::faceData, DerivedMesh::numTessFaceData, and type.
Referenced by ccgDM_get_tessface_data_layer().
| void DM_add_vert_layer | ( | DerivedMesh * | dm, |
| int | type, | ||
| eCDAllocType | alloctype, | ||
| void * | layer | ||
| ) |
Definition at line 568 of file DerivedMesh.cc.
References CustomData_add_layer(), DerivedMesh::numVertData, type, and DerivedMesh::vertData.
Referenced by ccgDM_get_vert_data_layer().
| void DM_calc_loop_tangents | ( | DerivedMesh * | dm, |
| bool | calc_active_tangent, | ||
| const char(*) | tangent_names[MAX_NAME], | ||
| int | tangent_names_len | ||
| ) |
Definition at line 2308 of file DerivedMesh.cc.
References BKE_mesh_calc_loop_tangent_ex(), CD_NORMAL, CD_ORCO, CustomData_get_layer(), DerivedMesh::getLoopArray, DerivedMesh::getLoopDataArray, DerivedMesh::getLoopTriArray, DerivedMesh::getNumLoops, DerivedMesh::getNumLoopTri, DerivedMesh::getNumPolys, DerivedMesh::getPolyArray, DerivedMesh::getVertArray, DerivedMesh::getVertDataArray, DerivedMesh::loopData, DerivedMesh::polyData, and DerivedMesh::tangent_mask.
Referenced by do_multires_bake().
| void DM_copy_vert_data | ( | DerivedMesh * | source, |
| DerivedMesh * | dest, | ||
| int | source_index, | ||
| int | dest_index, | ||
| int | count | ||
| ) |
Definition at line 654 of file DerivedMesh.cc.
References count, CustomData_copy_data(), and DerivedMesh::vertData.
Referenced by set_ccgdm_all_geometry().
| char* DM_debug_info | ( | DerivedMesh * | dm | ) |
Definition at line 2443 of file DerivedMesh.cc.
References BLI_dynstr_append(), BLI_dynstr_appendf(), BLI_dynstr_free(), BLI_dynstr_get_cstring(), BLI_dynstr_new(), DerivedMesh::deformedOnly, dm_debug_info_layers(), DM_TYPE_CCGDM, DM_TYPE_CDDM, DerivedMesh::edgeData, DerivedMesh::faceData, DerivedMesh::getEdgeDataArray, DerivedMesh::getLoopDataArray, DerivedMesh::getPolyDataArray, DerivedMesh::getTessFaceDataArray, DerivedMesh::getVertDataArray, DerivedMesh::loopData, DerivedMesh::numEdgeData, DerivedMesh::numPolyData, DerivedMesh::numTessFaceData, DerivedMesh::numVertData, DerivedMesh::polyData, ret, DerivedMesh::type, and DerivedMesh::vertData.
Referenced by DM_debug_print().
|
static |
Definition at line 2413 of file DerivedMesh.cc.
References BLI_dynstr_appendf(), CD_NUMTYPES, CustomData_file_write_info(), CustomData_has_layer(), CustomData_layertype_name(), CustomData_sizeof(), MEM_allocN_len, size(), and type.
Referenced by DM_debug_info().
| void DM_debug_print | ( | DerivedMesh * | dm | ) |
Definition at line 2496 of file DerivedMesh.cc.
References DM_debug_info(), MEM_freeN, and str.
|
static |
Definition at line 193 of file DerivedMesh.cc.
References DerivedMesh::copyEdgeArray, DerivedMesh::getNumEdges, and MEM_malloc_arrayN.
Referenced by DM_init_funcs().
|
static |
Definition at line 205 of file DerivedMesh.cc.
References DerivedMesh::copyTessFaceArray, DerivedMesh::getNumTessFaces, and MEM_malloc_arrayN.
Referenced by DM_init_funcs().
|
static |
Definition at line 217 of file DerivedMesh.cc.
References DerivedMesh::copyLoopArray, DerivedMesh::getNumLoops, and MEM_malloc_arrayN.
Referenced by DM_init_funcs().
|
static |
Definition at line 229 of file DerivedMesh.cc.
References DerivedMesh::copyPolyArray, DerivedMesh::getNumPolys, and MEM_malloc_arrayN.
Referenced by DM_init_funcs().
| void DM_DupPolys | ( | DerivedMesh * | source, |
| DerivedMesh * | target | ||
| ) |
Definition at line 449 of file DerivedMesh.cc.
References CD_ASSIGN, CD_DUPLICATE, CD_MASK_DERIVEDMESH, CD_MLOOP, CD_MPOLY, CustomData_add_layer(), CustomData_copy(), CustomData_free(), CustomData_has_layer(), DerivedMesh::dupLoopArray, DerivedMesh::dupPolyArray, CustomData_MeshMasks::lmask, DerivedMesh::loopData, DerivedMesh::numLoopData, DerivedMesh::numPolyData, CustomData_MeshMasks::pmask, and DerivedMesh::polyData.
Referenced by CDDM_copy().
|
static |
Definition at line 181 of file DerivedMesh.cc.
References DerivedMesh::copyVertArray, DerivedMesh::getNumVerts, and MEM_malloc_arrayN.
Referenced by DM_init_funcs().
| void DM_ensure_looptri_data | ( | DerivedMesh * | dm | ) |
Ensure the array is large enough
Definition at line 493 of file DerivedMesh.cc.
References DerivedMesh::array, DerivedMesh::array_wip, BLI_assert, DerivedMesh::looptris, MEM_malloc_arrayN, MEM_SAFE_FREE, DerivedMesh::num, DerivedMesh::num_alloc, DerivedMesh::numLoopData, DerivedMesh::numPolyData, poly_to_tri_count(), and SWAP.
Referenced by ccgDM_recalcLoopTri(), and cdDM_recalc_looptri().
| void DM_ensure_normals | ( | DerivedMesh * | dm | ) |
Definition at line 479 of file DerivedMesh.cc.
References BLI_assert, DerivedMesh::calcNormals, DerivedMesh::dirty, and DM_DIRTY_NORMALS.
| void DM_from_template | ( | DerivedMesh * | dm, |
| DerivedMesh * | source, | ||
| DerivedMeshType | type, | ||
| int | numVerts, | ||
| int | numEdges, | ||
| int | numTessFaces, | ||
| int | numLoops, | ||
| int | numPolys | ||
| ) |
Definition at line 404 of file DerivedMesh.cc.
References CD_MASK_DERIVEDMESH, DM_from_template_ex(), and type.
Referenced by CDDM_copy(), and getCCGDerivedMesh().
| void DM_from_template_ex | ( | DerivedMesh * | dm, |
| DerivedMesh * | source, | ||
| DerivedMeshType | type, | ||
| int | numVerts, | ||
| int | numEdges, | ||
| int | numTessFaces, | ||
| int | numLoops, | ||
| int | numPolys, | ||
| const CustomData_MeshMasks * | mask | ||
| ) |
Utility function to initialize a DerivedMesh for the desired number of vertices, edges and faces, with a layer setup copied from source
Definition at line 374 of file DerivedMesh.cc.
References CD_CALLOC, DerivedMesh::cd_flag, CustomData_copy(), DerivedMesh::dirty, DM_init_funcs(), DerivedMesh::edgeData, DerivedMesh::faceData, DerivedMesh::loopData, mask(), DerivedMesh::needsFree, DerivedMesh::numEdgeData, DerivedMesh::numLoopData, DerivedMesh::numPolyData, DerivedMesh::numTessFaceData, DerivedMesh::numVertData, DerivedMesh::polyData, DerivedMesh::type, type, and DerivedMesh::vertData.
Referenced by DM_from_template().
| void* DM_get_edge_data | ( | DerivedMesh * | dm, |
| int | index, | ||
| int | type | ||
| ) |
Definition at line 599 of file DerivedMesh.cc.
References BLI_assert, CustomData_get(), DerivedMesh::edgeData, getNumEdges(), and type.
Referenced by ccgDM_get_edge_data(), cdDM_create(), and DM_init_funcs().
| void* DM_get_edge_data_layer | ( | DerivedMesh * | dm, |
| int | type | ||
| ) |
Definition at line 626 of file DerivedMesh.cc.
References CD_MEDGE, CustomData_get_layer(), DerivedMesh::edgeData, DerivedMesh::getEdgeArray, and type.
Referenced by ccgDM_get_edge_data_layer(), cdDM_create(), DM_init_funcs(), and set_ccgdm_all_geometry().
| void* DM_get_loop_data_layer | ( | DerivedMesh * | dm, |
| int | type | ||
| ) |
Definition at line 649 of file DerivedMesh.cc.
References CustomData_get_layer(), DerivedMesh::loopData, and type.
Referenced by DM_init_funcs(), and do_multires_bake().
| void* DM_get_poly_data | ( | DerivedMesh * | dm, |
| int | index, | ||
| int | type | ||
| ) |
Definition at line 611 of file DerivedMesh.cc.
References BLI_assert, CustomData_get(), DerivedMesh::polyData, and type.
Referenced by ccgDM_get_poly_data(), and DM_init_funcs().
| void* DM_get_poly_data_layer | ( | DerivedMesh * | dm, |
| int | type | ||
| ) |
Definition at line 644 of file DerivedMesh.cc.
References CustomData_get_layer(), DerivedMesh::polyData, and type.
Referenced by ccgDM_get_poly_data_layer(), DM_init_funcs(), and set_ccgdm_all_geometry().
| void* DM_get_tessface_data | ( | DerivedMesh * | dm, |
| int | index, | ||
| int | type | ||
| ) |
Definition at line 605 of file DerivedMesh.cc.
References BLI_assert, CustomData_get(), DerivedMesh::faceData, and type.
Referenced by ccgDM_get_tessface_data(), cdDM_create(), and DM_init_funcs().
| void* DM_get_tessface_data_layer | ( | DerivedMesh * | dm, |
| int | type | ||
| ) |
Definition at line 635 of file DerivedMesh.cc.
References CD_MFACE, CustomData_get_layer(), DerivedMesh::faceData, DerivedMesh::getTessFaceArray, and type.
Referenced by ccgDM_get_tessface_data_layer(), cdDM_create(), DM_init_funcs(), and set_ccgdm_all_geometry().
| void* DM_get_vert_data | ( | DerivedMesh * | dm, |
| int | index, | ||
| int | type | ||
| ) |
Definition at line 593 of file DerivedMesh.cc.
References BLI_assert, CustomData_get(), type, and DerivedMesh::vertData.
Referenced by ccgDM_get_vert_data(), cdDM_create(), and DM_init_funcs().
| void* DM_get_vert_data_layer | ( | DerivedMesh * | dm, |
| int | type | ||
| ) |
Definition at line 617 of file DerivedMesh.cc.
References CD_MVERT, CustomData_get_layer(), DerivedMesh::getVertArray, type, and DerivedMesh::vertData.
Referenced by ccgDM_get_vert_data_layer(), cdDM_create(), DM_init_funcs(), and set_ccgdm_all_geometry().
|
static |
Definition at line 115 of file DerivedMesh.cc.
References CD_CALLOC, CD_FLAG_TEMPORARY, CD_MEDGE, DerivedMesh::copyEdgeArray, CustomData_add_layer(), CustomData_get_layer(), CustomData_set_layer_flag(), DerivedMesh::edgeData, and DerivedMesh::getNumEdges.
Referenced by DM_init_funcs().
|
static |
Definition at line 277 of file DerivedMesh.cc.
References DerivedMesh::edgeData.
Referenced by DM_init_funcs().
|
static |
Definition at line 153 of file DerivedMesh.cc.
References CD_CALLOC, CD_FLAG_TEMPORARY, CD_MLOOP, DerivedMesh::copyLoopArray, CustomData_add_layer(), CustomData_get_layer(), CustomData_set_layer_flag(), DerivedMesh::getNumLoops, and DerivedMesh::loopData.
Referenced by DM_init_funcs().
|
static |
Definition at line 287 of file DerivedMesh.cc.
References DerivedMesh::loopData.
Referenced by DM_init_funcs().
|
static |
Definition at line 248 of file DerivedMesh.cc.
References DerivedMesh::array, BLI_assert, BLI_rw_mutex_lock(), BLI_rw_mutex_unlock(), DerivedMesh::getNumLoopTri, loops_cache_lock, DerivedMesh::looptris, DerivedMesh::num, DerivedMesh::recalcLoopTri, THREAD_LOCK_READ, and THREAD_LOCK_WRITE.
Referenced by DM_init_funcs().
|
static |
Definition at line 241 of file DerivedMesh.cc.
References BLI_assert, ELEM, DerivedMesh::getNumLoops, DerivedMesh::getNumPolys, DerivedMesh::looptris, DerivedMesh::num, and poly_to_tri_count().
Referenced by DM_init_funcs().
|
static |
Definition at line 167 of file DerivedMesh.cc.
References CD_CALLOC, CD_FLAG_TEMPORARY, CD_MPOLY, DerivedMesh::copyPolyArray, CustomData_add_layer(), CustomData_get_layer(), CustomData_set_layer_flag(), DerivedMesh::getNumPolys, and DerivedMesh::polyData.
Referenced by DM_init_funcs().
|
static |
Definition at line 292 of file DerivedMesh.cc.
References DerivedMesh::polyData.
Referenced by DM_init_funcs().
|
static |
Definition at line 129 of file DerivedMesh.cc.
References CD_CALLOC, CD_FLAG_TEMPORARY, CD_MFACE, DerivedMesh::copyTessFaceArray, CustomData_add_layer(), CustomData_get_layer(), CustomData_set_layer_flag(), DerivedMesh::faceData, and DerivedMesh::getNumTessFaces.
Referenced by DM_init_funcs().
|
static |
Definition at line 282 of file DerivedMesh.cc.
References DerivedMesh::faceData.
Referenced by DM_init_funcs().
|
static |
Definition at line 101 of file DerivedMesh.cc.
References CD_CALLOC, CD_FLAG_TEMPORARY, CD_MVERT, DerivedMesh::copyVertArray, CustomData_add_layer(), CustomData_get_layer(), CustomData_set_layer_flag(), DerivedMesh::getNumVerts, and DerivedMesh::vertData.
Referenced by DM_init_funcs().
|
static |
Definition at line 272 of file DerivedMesh.cc.
References DerivedMesh::vertData.
Referenced by DM_init_funcs().
| void DM_init | ( | DerivedMesh * | dm, |
| DerivedMeshType | type, | ||
| int | numVerts, | ||
| int | numEdges, | ||
| int | numTessFaces, | ||
| int | numLoops, | ||
| int | numPolys | ||
| ) |
Utility function to initialize a DerivedMesh for the desired number of vertices, edges and faces (doesn't allocate memory for them, just sets up the custom data layers)
Definition at line 342 of file DerivedMesh.cc.
References CD_NUMTYPES, copy_vn_i(), DerivedMesh::dirty, DM_init_funcs(), DerivedMesh::edgeData, DerivedMesh::faceData, DerivedMesh::loopData, DerivedMesh::needsFree, DerivedMesh::numEdgeData, DerivedMesh::numLoopData, DerivedMesh::numPolyData, DerivedMesh::numTessFaceData, DerivedMesh::numVertData, DerivedMesh::polyData, DerivedMesh::type, type, CustomData::typemap, and DerivedMesh::vertData.
Referenced by cdDM_from_mesh_ex().
| void DM_init_funcs | ( | DerivedMesh * | dm | ) |
Utility function to initialize a DerivedMesh's function pointers to the default implementation (for those functions which have a default)
Definition at line 301 of file DerivedMesh.cc.
References dm_dupEdgeArray(), dm_dupFaceArray(), dm_dupLoopArray(), dm_dupPolyArray(), dm_dupVertArray(), DM_get_edge_data(), DM_get_edge_data_layer(), DM_get_loop_data_layer(), DM_get_poly_data(), DM_get_poly_data_layer(), DM_get_tessface_data(), DM_get_tessface_data_layer(), DM_get_vert_data(), DM_get_vert_data_layer(), dm_getEdgeArray(), dm_getEdgeCData(), dm_getLoopArray(), dm_getLoopCData(), dm_getLoopTriArray(), dm_getNumLoopTri(), dm_getPolyArray(), dm_getPolyCData(), dm_getTessFaceArray(), dm_getTessFaceCData(), dm_getVertArray(), dm_getVertCData(), DerivedMesh::dupEdgeArray, DerivedMesh::dupLoopArray, DerivedMesh::dupPolyArray, DerivedMesh::dupTessFaceArray, DerivedMesh::dupVertArray, DerivedMesh::getEdgeArray, DerivedMesh::getEdgeData, DerivedMesh::getEdgeDataArray, DerivedMesh::getEdgeDataLayout, DerivedMesh::getLoopArray, DerivedMesh::getLoopDataArray, DerivedMesh::getLoopDataLayout, DerivedMesh::getLoopTriArray, DerivedMesh::getNumLoopTri, DerivedMesh::getPolyArray, DerivedMesh::getPolyData, DerivedMesh::getPolyDataArray, DerivedMesh::getPolyDataLayout, DerivedMesh::getTessFaceArray, DerivedMesh::getTessFaceData, DerivedMesh::getTessFaceDataArray, DerivedMesh::getTessFaceDataLayout, DerivedMesh::getVertArray, DerivedMesh::getVertData, DerivedMesh::getVertDataArray, and DerivedMesh::getVertDataLayout.
Referenced by DM_from_template_ex(), and DM_init().
| void DM_interp_vert_data | ( | DerivedMesh * | source, |
| DerivedMesh * | dest, | ||
| int * | src_indices, | ||
| float * | weights, | ||
| int | count, | ||
| int | dest_index | ||
| ) |
interpolates vertex data from the vertices indexed by src_indices in the source mesh using the given weights and stores the result in the vertex indexed by dest_index in the dest mesh
Definition at line 665 of file DerivedMesh.cc.
References count, CustomData_interp(), and DerivedMesh::vertData.
Referenced by set_ccgdm_all_geometry().
| bool DM_is_valid | ( | DerivedMesh * | dm | ) |
Definition at line 2504 of file DerivedMesh.cc.
References BKE_mesh_validate_all_customdata(), BKE_mesh_validate_arrays(), BLI_assert, CD_MDEFORMVERT, DerivedMesh::getEdgeArray, DerivedMesh::getEdgeDataLayout, DerivedMesh::getLoopArray, DerivedMesh::getLoopDataLayout, DerivedMesh::getNumEdges, DerivedMesh::getNumLoops, DerivedMesh::getNumPolys, DerivedMesh::getNumTessFaces, DerivedMesh::getNumVerts, DerivedMesh::getPolyArray, DerivedMesh::getPolyDataLayout, DerivedMesh::getTessFaceArray, DerivedMesh::getVertArray, DerivedMesh::getVertDataArray, DerivedMesh::getVertDataLayout, and is_valid.
| bool DM_release | ( | DerivedMesh * | dm | ) |
Utility function to release a DerivedMesh's layers returns true if DerivedMesh has to be released by the backend, false otherwise.
Definition at line 424 of file DerivedMesh.cc.
References DerivedMesh::array, CustomData_free(), CustomData_free_temporary(), DerivedMesh::edgeData, DerivedMesh::faceData, DerivedMesh::loopData, DerivedMesh::looptris, MEM_SAFE_FREE, DerivedMesh::needsFree, DerivedMesh::num, DerivedMesh::num_alloc, DerivedMesh::numEdgeData, DerivedMesh::numLoopData, DerivedMesh::numPolyData, DerivedMesh::numTessFaceData, DerivedMesh::numVertData, DerivedMesh::polyData, and DerivedMesh::vertData.
Referenced by ccgDM_release(), and cdDM_release().
| void DM_set_only_copy | ( | DerivedMesh * | dm, |
| const CustomData_MeshMasks * | mask | ||
| ) |
set the CD_FLAG_NOCOPY flag in custom data layers where the mask is zero for the layer type, so only layer types specified by the mask will be copied
Definition at line 540 of file DerivedMesh.cc.
References CustomData_set_only_copy(), DerivedMesh::edgeData, DerivedMesh::faceData, DerivedMesh::loopData, mask(), DerivedMesh::polyData, and DerivedMesh::vertData.
|
static |
Definition at line 1981 of file DerivedMesh.cc.
References BKE_editmesh_free_derivedmesh(), BKE_object_boundbox_calc_from_mesh(), BKE_object_free_derived_caches(), BKE_sculpt_update_object_before_eval(), BLI_assert, DEG_is_active(), depsgraph, editbmesh_calc_modifiers(), Object_Runtime::geometry_set_eval, Object::id, BMEditMesh::lastDataMask, LIB_TAG_COPIED_ON_WRITE, BMEditMesh::mesh_eval_cage, BMEditMesh::mesh_eval_final, mesh_runtime_check_normals_valid(), Object::runtime, scene, and ID::tag.
Referenced by editbmesh_get_eval_cage(), editbmesh_get_eval_cage_and_final(), and makeDerivedMesh().
|
static |
Definition at line 1528 of file DerivedMesh.cc.
References BKE_mesh_calc_normals_poly(), BKE_mesh_calc_normals_split(), BKE_mesh_ensure_normals_for_display(), BKE_mesh_tessface_clear(), BKE_mesh_tessface_ensure(), CD_CALLOC, CD_MASK_MFACE, CD_MASK_NORMAL, CD_NORMAL, CustomData_add_layer(), CustomData_free_layers(), CustomData_has_layer(), Mesh::edit_mesh, Mesh::flag, float(), CustomData_MeshMasks::fmask, Mesh::ldata, CustomData_MeshMasks::lmask, ME_AUTOSMOOTH, ME_WRAPPER_TYPE_MDATA, Mesh::mloop, Mesh::mpoly, Mesh::mvert, CustomData_MeshMasks::pmask, Mesh::runtime, Mesh::totloop, Mesh::totpoly, Mesh::totvert, Mesh_Runtime::wrapper_type, and Mesh_Runtime::wrapper_type_finalize.
Referenced by BKE_mesh_wrapper_deferred_finalize(), and editbmesh_calc_modifiers().
|
static |
Definition at line 1589 of file DerivedMesh.cc.
References add_orco_mesh(), ASSERT_IS_VALID_MESH, BKE_id_free(), BKE_mesh_copy_for_eval(), BKE_mesh_from_bmesh_for_eval_nomain(), BKE_mesh_runtime_ensure_edit_data(), BKE_mesh_runtime_reset_edit_data(), BKE_mesh_vert_coords_alloc(), BKE_mesh_vert_coords_apply(), BKE_mesh_wrapper_ensure_mdata(), BKE_mesh_wrapper_from_editmesh_with_coords(), BKE_modifier_calc_data_masks(), BKE_modifier_deform_verts(), BKE_modifier_deform_vertsEM(), BKE_modifier_get_info(), BKE_modifier_modify_mesh(), BKE_modifiers_clear_errors(), BKE_modifiers_get_cage_index(), BKE_modifiers_get_virtual_modifierlist(), BLI_assert, BLI_linklist_free(), BMEditMesh::bm, CD_CALLOC, CD_MASK_BAREMESH, CD_MASK_ORCO, CD_MASK_ORIGINDEX, CD_MASK_ORIGSPACE_MLOOP, CD_ORCO, CD_ORIGSPACE_MLOOP, MeshComponent::copy_vertex_group_names_from_object(), create_orco_mesh(), CustomData_add_layer(), CustomData_has_layer(), CustomData_MeshMasks_update(), DAG_EVAL_RENDER, Object::data, ModifierTypeInfo::deformVertsEM, DEG_get_mode(), ModifierTypeInfo::dependsOnNormals, depsgraph, Mesh_Runtime::edit_data, editbmesh_calc_modifier_final_normals(), editbmesh_modifier_is_enabled(), editbmesh_vert_coords_alloc(), eModifierMode_Editmode, eModifierMode_Realtime, eModifierTypeType_OnlyDeform, Mesh::flag, float(), Mesh::id, LIB_TAG_COPIED_ON_WRITE, mask(), CDMaskLink::mask, ME_AUTOSMOOTH, MEM_dupallocN, MEM_freeN, mesh_init_origspace(), mesh_set_only_copy(), MOD_APPLY_ORCO, MOD_APPLY_RENDER, MOD_APPLY_USECACHE, modifier_modify_mesh_and_geometry_set(), CDMaskLink::next, ModifierData::next, ModifierTypeInfo::requiredDataMask, Mesh::runtime, scene, Mesh::smoothresh, ID::tag, ModifierTypeInfo::type, ModifierData::type, EditMeshData::vertexCos, and CustomData_MeshMasks::vmask.
Referenced by editbmesh_build_data().
| Mesh* editbmesh_get_eval_cage | ( | struct Depsgraph * | depsgraph, |
| Scene * | scene, | ||
| Object * | obedit, | ||
| BMEditMesh * | em, | ||
| const CustomData_MeshMasks * | dataMask | ||
| ) |
Definition at line 2232 of file DerivedMesh.cc.
References CustomData_MeshMasks_are_matching(), depsgraph, editbmesh_build_data(), BMEditMesh::lastDataMask, BMEditMesh::mesh_eval_cage, object_get_datamask(), and scene.
Referenced by editbmesh_get_eval_cage_from_orig().
| Mesh* editbmesh_get_eval_cage_and_final | ( | Depsgraph * | depsgraph, |
| Scene * | scene, | ||
| Object * | obedit, | ||
| BMEditMesh * | em, | ||
| const CustomData_MeshMasks * | dataMask, | ||
| Mesh ** | r_final | ||
| ) |
Definition at line 2205 of file DerivedMesh.cc.
References BLI_assert, Mesh_Runtime::cd_dirty_vert, CustomData_MeshMasks_are_matching(), depsgraph, DM_DIRTY_NORMALS, editbmesh_build_data(), BMEditMesh::lastDataMask, BMEditMesh::mesh_eval_cage, BMEditMesh::mesh_eval_final, object_get_datamask(), Mesh::runtime, and scene.
| Mesh* editbmesh_get_eval_cage_from_orig | ( | struct Depsgraph * | depsgraph, |
| Scene * | scene, | ||
| Object * | obedit, | ||
| const CustomData_MeshMasks * | dataMask | ||
| ) |
Definition at line 2253 of file DerivedMesh.cc.
References BKE_editmesh_from_object(), BLI_assert, DEG_get_evaluated_id(), depsgraph, editbmesh_get_eval_cage(), Object::id, Scene::id, LIB_TAG_COPIED_ON_WRITE, scene, and ID::tag.
| bool editbmesh_modifier_is_enabled | ( | Scene * | scene, |
| const Object * | ob, | ||
| ModifierData * | md, | ||
| bool | has_prev_mesh | ||
| ) |
Definition at line 1508 of file DerivedMesh.cc.
References BKE_modifier_get_info(), BKE_modifier_is_enabled(), BKE_modifier_set_error(), eModifierMode_Editmode, eModifierMode_Realtime, eModifierTypeFlag_RequiresOriginalData, ModifierTypeInfo::flags, scene, and ModifierData::type.
Referenced by editbmesh_calc_modifiers().
| float(* editbmesh_vert_coords_alloc | ( | BMEditMesh * | em, |
| int * | r_vert_len | ||
| ) | )[3] |
Definition at line 1490 of file DerivedMesh.cc.
References BM_ITER_MESH_INDEX, BM_VERTS_OF_MESH, BMVert::co, copy_v3_v3(), KDL::cos(), float(), and MEM_malloc_arrayN.
Referenced by BKE_crazyspace_get_first_deform_matrices_editbmesh(), and editbmesh_calc_modifiers().
|
static |
Definition at line 676 of file DerivedMesh.cc.
References BM_ITER_MESH_INDEX, BM_VERTS_OF_MESH, BMVert::co, copy_v3_v3(), float(), and MEM_malloc_arrayN.
Referenced by get_orco_coords().
|
static |
Definition at line 696 of file DerivedMesh.cc.
References BKE_key_from_object(), BKE_keyblock_from_key(), BKE_mesh_orco_verts_get(), BKE_modifiers_findby_type(), CD_CLOTH_ORCO, CD_ORCO, KeyBlock::data, eModifierType_Cloth, free(), get_editbmesh_orco_verts(), ClothSimSettings::shapekey_rest, and ClothModifierData::sim_parms.
Referenced by add_orco_mesh(), and create_orco_mesh().
|
static |
Definition at line 2273 of file DerivedMesh.cc.
References BLI_BITMAP_ENABLE, BLI_BITMAP_TEST, copy_v3_v3(), MappedUserData::vertex_visit, and MappedUserData::vertexcos.
Referenced by mesh_get_mapped_verts_coords().
| void makeDerivedMesh | ( | struct Depsgraph * | depsgraph, |
| Scene * | scene, | ||
| Object * | ob, | ||
| BMEditMesh * | em, | ||
| const CustomData_MeshMasks * | dataMask | ||
| ) |
Definition at line 2064 of file DerivedMesh.cc.
References depsgraph, editbmesh_build_data(), mesh_build_data(), object_get_datamask(), and scene.
|
static |
Definition at line 1902 of file DerivedMesh.cc.
References BKE_object_boundbox_calc_from_mesh(), BKE_object_eval_assign_data(), BKE_object_free_derived_caches(), BKE_sculpt_update_object_after_eval(), BKE_sculpt_update_object_before_eval(), BLI_assert, CD_MASK_ORIGINDEX, Object::data, DEG_is_active(), DEG_is_evaluated_id(), depsgraph, CustomData_MeshMasks::emask, Object_Runtime::geometry_set_eval, GeometrySet::get_component_for_write(), Key::id, Mesh::id, Object::id, Mesh::key, Object_Runtime::last_data_mask, Object_Runtime::last_need_mapping, LIB_TAG_COPIED_ON_WRITE, mesh, mesh_build_extra_data(), mesh_calc_modifiers(), Object_Runtime::mesh_deform_eval, Mesh_Runtime::mesh_eval, mesh_runtime_check_normals_valid(), Object::mode, OB_MESH, OB_MODE_ALL_SCULPT, CustomData_MeshMasks::pmask, ReadOnly, MeshComponent::replace_mesh_but_keep_vertex_group_names(), Mesh::runtime, Object::runtime, scene, Object::sculpt, ID::tag, Object::type, and CustomData_MeshMasks::vmask.
Referenced by makeDerivedMesh(), mesh_get_eval_deform(), and mesh_get_eval_final().
|
static |
Definition at line 1885 of file DerivedMesh.cc.
References BKE_shrinkwrap_compute_boundary_data(), DAG_EVAL_NEED_SHRINKWRAP_BOUNDARY, DEG_get_eval_flags_for_id(), depsgraph, and Object::id.
Referenced by mesh_build_data().
Definition at line 869 of file DerivedMesh.cc.
References BLI_strncpy(), Mesh::edit_mesh, Mesh::id, and ID::name.
Referenced by mesh_calc_modifiers().
|
static |
Definition at line 798 of file DerivedMesh.cc.
References BKE_mesh_calc_normals_poly(), BKE_mesh_calc_normals_split(), BKE_mesh_ensure_normals_for_display(), BKE_mesh_tessface_clear(), BKE_mesh_tessface_ensure(), CD_CALLOC, CD_MASK_MFACE, CD_MASK_NORMAL, CD_NORMAL, CustomData_add_layer(), CustomData_free_layers(), CustomData_has_layer(), Mesh::flag, float(), CustomData_MeshMasks::fmask, Mesh::ldata, CustomData_MeshMasks::lmask, ME_AUTOSMOOTH, Mesh::mloop, Mesh::mpoly, Mesh::mvert, CustomData_MeshMasks::pmask, Mesh::totloop, Mesh::totpoly, and Mesh::totvert.
Referenced by mesh_calc_modifiers().
|
static |
Definition at line 972 of file DerivedMesh.cc.
References add_orco_mesh(), ASSERT_IS_VALID_MESH, BKE_id_free(), BKE_mesh_copy_for_eval(), BKE_mesh_vert_coords_alloc(), BKE_mesh_vert_coords_apply(), BKE_modifier_calc_data_masks(), BKE_modifier_deform_verts(), BKE_modifier_free_temporary_data(), BKE_modifier_get_info(), BKE_modifier_get_last_preview(), BKE_modifier_is_enabled(), BKE_modifier_modify_mesh(), BKE_modifier_set_error(), BKE_modifier_supports_mapping(), BKE_modifiers_clear_errors(), BKE_modifiers_get_virtual_modifierlist(), BKE_sculpt_multires_active(), BLI_assert, BLI_findindex(), BLI_linklist_free(), BLI_mutex_lock(), BLI_mutex_unlock(), SculptSession::bm, CD_CALLOC, CD_CLOTH_ORCO, CD_MASK_BAREMESH_ORIGINDEX, CD_MASK_CLOTH_ORCO, CD_MASK_NORMAL, CD_MASK_ORCO, CD_MASK_ORIGINDEX, CD_MASK_ORIGSPACE_MLOOP, CD_MASK_PREVIEW_MLOOPCOL, CD_ORCO, CD_ORIGINDEX, CD_ORIGSPACE_MLOOP, MeshComponent::copy_vertex_group_names_from_object(), create_orco_mesh(), CustomData_add_layer(), CustomData_get_layer(), CustomData_has_layer(), CustomData_MeshMasks_update(), DAG_EVAL_RENDER, Object::data, DEG_get_mode(), ModifierTypeInfo::dependsOnNormals, dependsOnTime(), ModifierTypeInfo::dependsOnTime, depsgraph, CustomData_MeshMasks::emask, eModifierMode_Realtime, eModifierMode_Render, eModifierType_DynamicPaint, eModifierType_Multires, eModifierTypeFlag_RequiresOriginalData, eModifierTypeType_OnlyDeform, Mesh_Runtime::eval_mutex, ModifierTypeInfo::flags, Sculpt::flags, float(), CustomData_MeshMasks::fmask, Mesh::id, LIB_TAG_COPIED_ON_WRITE_EVAL_RESULT, CustomData_MeshMasks::lmask, mask(), CDMaskLink::mask, MEM_freeN, mesh_calc_finalize(), mesh_calc_modifier_final_normals(), Mesh_Runtime::mesh_eval, mesh_init_origspace(), mesh_set_only_copy(), MOD_APPLY_ORCO, MOD_APPLY_RENDER, MOD_APPLY_USECACHE, Object::mode, modifier_modify_mesh_and_geometry_set(), Object::modifiers, CDMaskLink::next, ModifierData::next, OB_MODE_OBJECT, OB_MODE_SCULPT, CustomData_MeshMasks::pmask, prepare_geometry_set_for_mesh_modifier(), range_vn_i(), ModifierTypeInfo::requiredDataMask, Mesh::runtime, scene, Object::sculpt, ToolSettings::sculpt, SCULPT_ONLY_DEFORM, ID::tag, Scene::toolsettings, Mesh::totvert, ModifierTypeInfo::type, ModifierData::type, and CustomData_MeshMasks::vmask.
Referenced by mesh_build_data(), mesh_create_eval_final(), mesh_create_eval_final_index_render(), mesh_create_eval_no_deform(), and mesh_create_eval_no_deform_render().
| Mesh* mesh_create_eval_final | ( | Depsgraph * | depsgraph, |
| Scene * | scene, | ||
| Object * | ob, | ||
| const CustomData_MeshMasks * | dataMask | ||
| ) |
Definition at line 2150 of file DerivedMesh.cc.
References depsgraph, mesh_calc_modifiers(), and scene.
| Mesh* mesh_create_eval_final_index_render | ( | Depsgraph * | depsgraph, |
| Scene * | scene, | ||
| Object * | ob, | ||
| const CustomData_MeshMasks * | dataMask, | ||
| int | index | ||
| ) |
Definition at line 2163 of file DerivedMesh.cc.
References depsgraph, mesh_calc_modifiers(), and scene.
| Mesh* mesh_create_eval_no_deform | ( | Depsgraph * | depsgraph, |
| Scene * | scene, | ||
| Object * | ob, | ||
| const CustomData_MeshMasks * | dataMask | ||
| ) |
Definition at line 2177 of file DerivedMesh.cc.
References depsgraph, mesh_calc_modifiers(), and scene.
| Mesh* mesh_create_eval_no_deform_render | ( | Depsgraph * | depsgraph, |
| Scene * | scene, | ||
| Object * | ob, | ||
| const CustomData_MeshMasks * | dataMask | ||
| ) |
Definition at line 2190 of file DerivedMesh.cc.
References depsgraph, mesh_calc_modifiers(), and scene.
| Mesh* mesh_get_eval_deform | ( | struct Depsgraph * | depsgraph, |
| Scene * | scene, | ||
| Object * | ob, | ||
| const CustomData_MeshMasks * | dataMask | ||
| ) |
Definition at line 2119 of file DerivedMesh.cc.
References BLI_assert, CustomData_MeshMasks_are_matching(), CustomData_MeshMasks_update(), DEG_is_evaluating(), depsgraph, Object::id, Object_Runtime::last_data_mask, Object_Runtime::last_need_mapping, LIB_TAG_COPIED_ON_WRITE, mesh_build_data(), Object_Runtime::mesh_deform_eval, object_get_datamask(), Object::runtime, scene, and ID::tag.
| Mesh* mesh_get_eval_final | ( | struct Depsgraph * | depsgraph, |
| Scene * | scene, | ||
| Object * | ob, | ||
| const CustomData_MeshMasks * | dataMask | ||
| ) |
Definition at line 2084 of file DerivedMesh.cc.
References BKE_object_get_evaluated_mesh(), BLI_assert, Mesh_Runtime::cd_dirty_vert, CD_MASK_NORMAL, CustomData_MeshMasks_are_matching(), CustomData_MeshMasks_update(), DEG_is_evaluating(), depsgraph, Object::id, Object_Runtime::last_data_mask, Object_Runtime::last_need_mapping, LIB_TAG_COPIED_ON_WRITE, mesh_build_data(), object_get_datamask(), Mesh::runtime, Object::runtime, scene, and ID::tag.
Definition at line 2290 of file DerivedMesh.cc.
References BKE_mesh_foreach_mapped_vert(), BLI_BITMAP_NEW, copy_v3_v3(), Mesh_Runtime::deformed_only, make_vertexcos__mapFunc(), MEM_freeN, MESH_FOREACH_NOP, Mesh::mvert, Mesh::runtime, MappedUserData::vertex_visit, and MappedUserData::vertexcos.
Referenced by BKE_crazyspace_get_mapped_editverts().
|
static |
Definition at line 2333 of file DerivedMesh.cc.
References add_v2_v2v2(), axis_dominant_v3_to_m3(), BKE_mesh_calc_poly_normal(), BKE_mesh_tessface_clear(), CD_ORIGSPACE_MLOOP, copy_v2_v2(), CustomData_get_layer(), ELEM, invert_v2(), l, Mesh::ldata, MPoly::loopstart, max, mesh, min, Mesh::mloop, Mesh::mpoly, mul_v2_v2(), mul_v3_m3v3(), Mesh::mvert, negate_v2_v2(), blender::Vector< T, InlineBufferCapacity, Allocator >::resize(), sub_v2_v2v2(), MPoly::totloop, Mesh::totpoly, OrigSpaceLoop::uv, and BMLoop::v.
Referenced by editbmesh_calc_modifiers(), and mesh_calc_modifiers().
|
static |
Definition at line 1894 of file DerivedMesh.cc.
References BLI_assert, Mesh_Runtime::cd_dirty_loop, Mesh_Runtime::cd_dirty_poly, Mesh_Runtime::cd_dirty_vert, CD_MASK_NORMAL, mesh, Mesh::runtime, and UNUSED_VARS_NDEBUG.
Referenced by editbmesh_build_data(), and mesh_build_data().
|
static |
Definition at line 554 of file DerivedMesh.cc.
References CustomData_set_only_copy(), Mesh::fdata, Mesh::ldata, mask(), and mesh.
Referenced by editbmesh_calc_modifiers(), and mesh_calc_modifiers().
|
static |
Modifies the given mesh and geometry set. The mesh is not passed as part of the mesh component in the geometry_set input, it is only passed in input_mesh and returned in the return value.
The purpose of the geometry set is to store all geometry components that are generated by modifiers to allow outputting non-mesh data from modifiers.
Definition at line 923 of file DerivedMesh.cc.
References BKE_id_free(), BKE_mesh_copy_settings(), BKE_mesh_new_nomain(), BKE_mesh_wrapper_ensure_mdata(), BKE_modifier_get_info(), BKE_modifier_modify_mesh(), Editable, ELEM, GeometrySet::get_component_for_write(), GeometrySet::has(), ModifierTypeInfo::modifyGeometrySet, prepare_geometry_set_for_mesh_modifier(), MeshComponent::release(), MeshComponent::replace_mesh_but_keep_vertex_group_names(), and ModifierData::type.
Referenced by editbmesh_calc_modifiers(), and mesh_calc_modifiers().
|
static |
Definition at line 2014 of file DerivedMesh.cc.
References ViewLayer::basact, BKE_paint_select_face_test(), CD_MASK_MDEFORMVERT, CD_MASK_MLOOPCOL, CD_MASK_MLOOPUV, CD_MASK_MTFACE, CD_MASK_MVERT_SKIN, DEG_get_customdata_mask_for_object(), DEG_get_evaluated_view_layer(), DEG_get_original_object(), DEG_is_active(), depsgraph, CustomData_MeshMasks::fmask, CustomData_MeshMasks::lmask, Object::mode, OB_MODE_EDIT, OB_MODE_TEXTURE_PAINT, OB_MODE_VERTEX_PAINT, OB_MODE_WEIGHT_PAINT, Base::object, and CustomData_MeshMasks::vmask.
Referenced by editbmesh_get_eval_cage(), editbmesh_get_eval_cage_and_final(), makeDerivedMesh(), mesh_get_eval_deform(), and mesh_get_eval_final().
|
static |
Some modifiers don't work on geometry sets directly, but expect a single mesh as input. Therefore, we convert data from the geometry set into a single mesh, so that those modifiers can work on it as well.
Definition at line 893 of file DerivedMesh.cc.
References Editable, blender::bke::geometry_set_realize_mesh_for_modifier(), GeometrySet::get_component_for_write(), GeometrySet::has_instances(), GeometrySet::has_pointcloud(), mesh, MeshComponent::release(), and MeshComponent::replace_mesh_but_keep_vertex_group_names().
Referenced by mesh_calc_modifiers(), and modifier_modify_mesh_and_geometry_set().
|
static |
Definition at line 93 of file DerivedMesh.cc.
Referenced by dm_getLoopTriArray().