|
Blender V5.0
|
Go to the source code of this file.
Classes | |
| struct | MLoopNorSpace |
| struct | MLoopNorSpaceArray |
Enumerations | |
| enum | eMeshBatchDirtyMode : int8_t { BKE_MESH_BATCH_DIRTY_ALL = 0 , BKE_MESH_BATCH_DIRTY_SELECT , BKE_MESH_BATCH_DIRTY_SELECT_PAINT , BKE_MESH_BATCH_DIRTY_SHADING , BKE_MESH_BATCH_DIRTY_UVEDIT_ALL , BKE_MESH_BATCH_DIRTY_UVEDIT_SELECT } |
| enum | { MLNOR_SPACE_IS_SINGLE = 1 << 0 } |
| enum | { MLNOR_SPACEARR_LOOP_INDEX = 0 , MLNOR_SPACEARR_BMLOOP_PTR = 1 } |
Functions | |
| BMesh * | BKE_mesh_to_bmesh_ex (const Mesh *mesh, const BMeshCreateParams *create_params, const BMeshFromMeshParams *convert_params) |
| BMesh * | BKE_mesh_to_bmesh (Mesh *mesh, int active_shapekey, bool add_key_index, const BMeshCreateParams *params) |
| Mesh * | BKE_mesh_from_bmesh_nomain (BMesh *bm, const BMeshToMeshParams *params, const Mesh *me_settings) |
| Mesh * | BKE_mesh_from_bmesh_for_eval_nomain (BMesh *bm, const CustomData_MeshMasks *cd_mask_extra, const Mesh *me_settings) |
| void | BKE_mesh_ensure_default_orig_index_customdata (Mesh *mesh) |
| void | BKE_mesh_ensure_default_orig_index_customdata_no_check (Mesh *mesh) |
| void | BKE_mesh_clear_geometry (Mesh *mesh) |
| void | BKE_mesh_clear_geometry_and_metadata (Mesh *mesh) |
| Mesh * | BKE_mesh_add (Main *bmain, const char *name) |
| void | BKE_mesh_copy_parameters_for_eval (Mesh *me_dst, const Mesh *me_src) |
| void | BKE_mesh_copy_parameters (Mesh *me_dst, const Mesh *me_src) |
| void | BKE_mesh_ensure_skin_customdata (Mesh *mesh) |
| void | BKE_mesh_face_offsets_ensure_alloc (Mesh *mesh) |
| Mesh * | BKE_mesh_new_nomain (int verts_num, int edges_num, int faces_num, int corners_num) |
| Mesh * | BKE_mesh_new_nomain_from_template (const Mesh *me_src, int verts_num, int edges_num, int faces_num, int corners_num) |
| Mesh * | BKE_mesh_new_nomain_from_template_ex (const Mesh *me_src, int verts_num, int edges_num, int tessface_num, int faces_num, int corners_num, CustomData_MeshMasks mask) |
| Mesh * | BKE_mesh_copy_for_eval (const Mesh &source) |
| Mesh * | BKE_mesh_new_nomain_from_curve (const Object *ob) |
| Mesh * | BKE_mesh_new_nomain_from_curve_displist (const Object *ob, const ListBase *dispbase) |
| bool | BKE_mesh_attribute_required (blender::StringRef name) |
| blender::Array< blender::float3 > | BKE_mesh_orco_verts_get (const Object *ob) |
| void | BKE_mesh_orco_verts_transform (Mesh *mesh, blender::MutableSpan< blender::float3 > orco, bool invert) |
| void | BKE_mesh_orco_verts_transform (Mesh *mesh, float(*orco)[3], int totvert, bool invert) |
| void | BKE_mesh_orco_ensure (Object *ob, Mesh *mesh) |
| Mesh * | BKE_mesh_from_object (Object *ob) |
| void | BKE_mesh_assign_object (Main *bmain, Object *ob, Mesh *mesh) |
| void | BKE_mesh_to_curve_nurblist (const Mesh *mesh, ListBase *nurblist, int edge_users_test) |
| void | BKE_mesh_to_curve (Main *bmain, Depsgraph *depsgraph, Scene *scene, Object *ob) |
| void | BKE_mesh_to_pointcloud (Main *bmain, Depsgraph *depsgraph, Scene *scene, Object *ob) |
| void | BKE_pointcloud_to_mesh (Main *bmain, Depsgraph *depsgraph, Scene *scene, Object *ob) |
| void | BKE_mesh_material_index_remove (Mesh *mesh, short index) |
| bool | BKE_mesh_material_index_used (Mesh *mesh, short index) |
| void | BKE_mesh_material_index_clear (Mesh *mesh) |
| void | BKE_mesh_material_remap (Mesh *mesh, const unsigned int *remap, unsigned int remap_len) |
| void | BKE_mesh_texspace_calc (Mesh *mesh) |
| void | BKE_mesh_texspace_ensure (Mesh *mesh) |
| void | BKE_mesh_texspace_get (Mesh *mesh, float r_texspace_location[3], float r_texspace_size[3]) |
| void | BKE_mesh_texspace_get_reference (Mesh *mesh, char **r_texspace_flag, float **r_texspace_location, float **r_texspace_size) |
| Mesh * | BKE_mesh_new_from_object (Depsgraph *depsgraph, Object *object, bool preserve_all_data_layers, bool preserve_origindex, bool ensure_subdivision) |
| Mesh * | BKE_mesh_new_from_object_to_bmain (Main *bmain, Depsgraph *depsgraph, Object *object, bool preserve_all_data_layers) |
| void | BKE_mesh_nomain_to_mesh (Mesh *mesh_src, Mesh *mesh_dst, Object *ob, bool process_shape_keys=true) |
| void | BKE_mesh_nomain_to_meshkey (Mesh *mesh_src, Mesh *mesh_dst, KeyBlock *kb) |
| void | BKE_mesh_tessface_clear (Mesh *mesh) |
| void | BKE_mesh_mselect_clear (Mesh *mesh) |
| void | BKE_mesh_mselect_validate (Mesh *mesh) |
| int | BKE_mesh_mselect_find (const Mesh *mesh, int index, int type) |
| int | BKE_mesh_mselect_active_get (const Mesh *mesh, int type) |
| void | BKE_mesh_mselect_active_set (Mesh *mesh, int index, int type) |
| void | BKE_mesh_count_selected_items (const Mesh *mesh, int r_count[3]) |
| bool | BKE_mesh_vert_normals_are_dirty (const Mesh *mesh) |
| bool | BKE_mesh_face_normals_are_dirty (const Mesh *mesh) |
| void | BKE_lnor_spacearr_init (MLoopNorSpaceArray *lnors_spacearr, int numLoops, char data_type) |
| void | BKE_lnor_spacearr_clear (MLoopNorSpaceArray *lnors_spacearr) |
| void | BKE_lnor_spacearr_free (MLoopNorSpaceArray *lnors_spacearr) |
| void | BKE_lnor_spacearr_tls_init (MLoopNorSpaceArray *lnors_spacearr, MLoopNorSpaceArray *lnors_spacearr_tls) |
| void | BKE_lnor_spacearr_tls_join (MLoopNorSpaceArray *lnors_spacearr, MLoopNorSpaceArray *lnors_spacearr_tls) |
| MLoopNorSpace * | BKE_lnor_space_create (MLoopNorSpaceArray *lnors_spacearr) |
| void | BKE_lnor_space_define (MLoopNorSpace *lnor_space, const float lnor[3], const float vec_ref[3], const float vec_other[3], blender::Span< blender::float3 > edge_vectors) |
| void | BKE_lnor_space_add_loop (MLoopNorSpaceArray *lnors_spacearr, MLoopNorSpace *lnor_space, int corner, void *bm_loop, bool is_single) |
| void | BKE_lnor_space_custom_data_to_normal (const MLoopNorSpace *lnor_space, const short clnor_data[2], float r_custom_lnor[3]) |
| void | BKE_lnor_space_custom_normal_to_data (const MLoopNorSpace *lnor_space, const float custom_lnor[3], short r_clnor_data[2]) |
| bool | BKE_mesh_has_custom_loop_normals (Mesh *mesh) |
| float | BKE_mesh_calc_area (const Mesh *mesh) |
| bool | BKE_mesh_center_median (const Mesh *mesh, float r_cent[3]) |
| bool | BKE_mesh_center_median_from_faces (const Mesh *mesh, float r_cent[3]) |
| bool | BKE_mesh_center_of_surface (const Mesh *mesh, float r_cent[3]) |
| bool | BKE_mesh_center_of_volume (const Mesh *mesh, float r_cent[3]) |
| void | BKE_mesh_calc_volume (const float(*vert_positions)[3], int mverts_num, const blender::int3 *corner_tris, int corner_tris_num, const int *corner_verts, float *r_volume, float r_center[3]) |
| void | BKE_mesh_mdisp_flip (MDisps *md, bool use_loop_mdisp_flip) |
| void | BKE_mesh_merge_customdata_for_apply_modifier (Mesh *mesh) |
| void | BKE_mesh_calc_relative_deform (const int *face_offsets, int faces_num, const int *corner_verts, int totvert, const float(*vert_cos_src)[3], const float(*vert_cos_dst)[3], const float(*vert_cos_org)[3], float(*vert_cos_new)[3]) |
| bool | BKE_mesh_validate (Mesh *mesh, bool do_verbose, bool cddata_check_mask) |
| bool | BKE_mesh_is_valid (Mesh *mesh) |
| bool | BKE_mesh_validate_material_indices (Mesh *mesh) |
| bool | BKE_mesh_validate_arrays (Mesh *mesh, float(*vert_positions)[3], unsigned int verts_num, blender::int2 *edges, unsigned int edges_num, MFace *legacy_faces, unsigned int legacy_faces_num, const int *corner_verts, int *corner_edges, unsigned int corners_num, const int *face_offsets, unsigned int faces_num, MDeformVert *dverts, bool do_verbose, bool do_fixes, bool *r_change) |
| bool | BKE_mesh_validate_all_customdata (CustomData *vert_data, uint verts_num, CustomData *edge_data, uint edges_num, CustomData *corner_data, uint corners_num, CustomData *face_data, uint faces_num, bool check_meshmask, bool do_verbose, bool do_fixes, bool *r_change) |
| void | BKE_mesh_strip_loose_faces (Mesh *mesh) |
| void | BKE_mesh_eval_geometry (Depsgraph *depsgraph, Mesh *mesh) |
| void | BKE_mesh_batch_cache_dirty_tag (Mesh *mesh, eMeshBatchDirtyMode mode) |
| void | BKE_mesh_batch_cache_free (void *batch_cache) |
| char * | BKE_mesh_debug_info (const Mesh *mesh) ATTR_NONNULL(1) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT |
| void | BKE_mesh_debug_print (const Mesh *mesh) ATTR_NONNULL(1) |
Variables | |
| void(* | BKE_mesh_batch_cache_dirty_tag_cb )(Mesh *mesh, eMeshBatchDirtyMode mode) |
| void(* | BKE_mesh_batch_cache_free_cb )(void *batch_cache) |
| anonymous enum |
| Enumerator | |
|---|---|
| MLNOR_SPACEARR_LOOP_INDEX | |
| MLNOR_SPACEARR_BMLOOP_PTR | |
Definition at line 298 of file BKE_mesh.h.
| anonymous enum |
| enum eMeshBatchDirtyMode : int8_t |
| Enumerator | |
|---|---|
| BKE_MESH_BATCH_DIRTY_ALL | |
| BKE_MESH_BATCH_DIRTY_SELECT | |
| BKE_MESH_BATCH_DIRTY_SELECT_PAINT | |
| BKE_MESH_BATCH_DIRTY_SHADING | |
| BKE_MESH_BATCH_DIRTY_UVEDIT_ALL | |
| BKE_MESH_BATCH_DIRTY_UVEDIT_SELECT | |
Definition at line 37 of file BKE_mesh.h.
| void BKE_lnor_space_add_loop | ( | MLoopNorSpaceArray * | lnors_spacearr, |
| MLoopNorSpace * | lnor_space, | ||
| int | corner, | ||
| void * | bm_loop, | ||
| bool | is_single ) |
Add a new given loop to given lnor_space. Depending on lnor_space->data_type, we expect bm_loop to be a pointer to BMLoop struct (in case of BMLOOP_PTR), or nullptr (in case of LOOP_INDEX), loop index is then stored in pointer. If is_single is set, the BMLoop or loop index is directly stored in lnor_space->loops pointer (since there is only one loop in this fan), else it is added to the linked list of loops in the fan.
Definition at line 672 of file mesh_normals.cc.
References BLI_assert, BLI_linklist_prepend_nlink(), MLoopNorSpaceArray::data_type, MLoopNorSpace::flags, MLoopNorSpace::loops, MLoopNorSpaceArray::loops_pool, MLoopNorSpaceArray::lspacearr, MLNOR_SPACE_IS_SINGLE, MLNOR_SPACEARR_BMLOOP_PTR, MLNOR_SPACEARR_LOOP_INDEX, and POINTER_FROM_INT.
Referenced by bm_mesh_loops_calc_normals_for_loop().
| MLoopNorSpace * BKE_lnor_space_create | ( | MLoopNorSpaceArray * | lnors_spacearr | ) |
Definition at line 582 of file mesh_normals.cc.
References BLI_memarena_calloc(), MLoopNorSpaceArray::mem, and MLoopNorSpaceArray::spaces_num.
Referenced by bm_mesh_loops_calc_normals_for_loop().
| void BKE_lnor_space_custom_data_to_normal | ( | const MLoopNorSpace * | lnor_space, |
| const short | clnor_data[2], | ||
| float | r_custom_lnor[3] ) |
Definition at line 745 of file mesh_normals.cc.
References copy_v3_v3(), blender::bke::mesh::corner_space_custom_data_to_normal(), blender::bke::mesh::CornerNormalSpace::ref_alpha, MLoopNorSpace::ref_alpha, blender::bke::mesh::CornerNormalSpace::ref_beta, MLoopNorSpace::ref_beta, blender::bke::mesh::CornerNormalSpace::vec_lnor, MLoopNorSpace::vec_lnor, blender::bke::mesh::CornerNormalSpace::vec_ortho, MLoopNorSpace::vec_ortho, blender::bke::mesh::CornerNormalSpace::vec_ref, and MLoopNorSpace::vec_ref.
Referenced by BM_custom_loop_normals_to_vector_layer(), BM_lnorspace_rebuild(), bm_mesh_loops_calc_normals_for_loop(), edbm_average_normals_exec(), edbm_smooth_normals_exec(), and loop_normal_editdata_init().
| void BKE_lnor_space_custom_normal_to_data | ( | const MLoopNorSpace * | lnor_space, |
| const float | custom_lnor[3], | ||
| short | r_clnor_data[2] ) |
Definition at line 811 of file mesh_normals.cc.
References copy_v2_v2_short(), blender::bke::mesh::corner_space_custom_normal_to_data(), blender::bke::mesh::CornerNormalSpace::ref_alpha, MLoopNorSpace::ref_alpha, blender::bke::mesh::CornerNormalSpace::ref_beta, MLoopNorSpace::ref_beta, blender::bke::mesh::CornerNormalSpace::vec_lnor, MLoopNorSpace::vec_lnor, blender::bke::mesh::CornerNormalSpace::vec_ortho, MLoopNorSpace::vec_ortho, blender::bke::mesh::CornerNormalSpace::vec_ref, and MLoopNorSpace::vec_ref.
Referenced by blender::ed::transform::applyNormalRotation(), bevel_harden_normals(), BM_lnorspace_rebuild(), bm_mesh_loops_assign_normal_data(), edbm_average_normals_exec(), edbm_flip_normals_custom_loop_normals(), edbm_normals_tools_exec(), edbm_set_normals_from_faces_exec(), edbm_smooth_normals_exec(), flip_custom_normals(), blender::ed::transform::freeCustomNormalArray(), normals_merge(), normals_split(), and point_normals_apply().
| void BKE_lnor_space_define | ( | MLoopNorSpace * | lnor_space, |
| const float | lnor[3], | ||
| const float | vec_ref[3], | ||
| const float | vec_other[3], | ||
| blender::Span< blender::float3 > | edge_vectors ) |
Should only be called once. Beware, this modifies ref_vec and other_vec in place! In case no valid space can be generated, ref_alpha and ref_beta are set to zero (which means 'use auto lnors').
Definition at line 657 of file mesh_normals.cc.
References copy_v3_v3(), blender::bke::mesh::corner_fan_space_define(), blender::bke::mesh::CornerNormalSpace::ref_alpha, MLoopNorSpace::ref_alpha, blender::bke::mesh::CornerNormalSpace::ref_beta, MLoopNorSpace::ref_beta, blender::bke::mesh::CornerNormalSpace::vec_lnor, MLoopNorSpace::vec_lnor, blender::bke::mesh::CornerNormalSpace::vec_ortho, MLoopNorSpace::vec_ortho, blender::bke::mesh::CornerNormalSpace::vec_ref, and MLoopNorSpace::vec_ref.
Referenced by bm_mesh_loops_calc_normals_for_loop().
| void BKE_lnor_spacearr_clear | ( | MLoopNorSpaceArray * | lnors_spacearr | ) |
Definition at line 563 of file mesh_normals.cc.
References BLI_memarena_clear(), MLoopNorSpaceArray::loops_pool, MLoopNorSpaceArray::lspacearr, MLoopNorSpaceArray::mem, and MLoopNorSpaceArray::spaces_num.
Referenced by BKE_lnor_spacearr_tls_join(), BM_lnorspace_rebuild(), bm_mesh_loops_custom_normals_set(), and mesh_customdata_custom_splitnormals_clear_exec().
| void BKE_lnor_spacearr_free | ( | MLoopNorSpaceArray * | lnors_spacearr | ) |
Definition at line 573 of file mesh_normals.cc.
References BLI_memarena_free(), MLoopNorSpaceArray::loops_pool, MLoopNorSpaceArray::lspacearr, MLoopNorSpaceArray::mem, and MLoopNorSpaceArray::spaces_num.
Referenced by BM_lnorspace_err(), BM_mesh_data_free(), bm_mesh_loops_calc_normals__multi_threaded(), and bm_mesh_loops_calc_normals__single_threaded().
| void BKE_lnor_spacearr_init | ( | MLoopNorSpaceArray * | lnors_spacearr, |
| int | numLoops, | ||
| char | data_type ) |
Definition at line 516 of file mesh_normals.cc.
References BLI_assert, BLI_memarena_alloc(), BLI_memarena_calloc(), BLI_memarena_new(), BLI_MEMARENA_STD_BUFSIZE, MLoopNorSpaceArray::data_type, ELEM, MLoopNorSpaceArray::loops_pool, MLoopNorSpaceArray::lspacearr, MLoopNorSpaceArray::mem, MLNOR_SPACEARR_BMLOOP_PTR, MLNOR_SPACEARR_LOOP_INDEX, and MLoopNorSpaceArray::spaces_num.
Referenced by BM_lnorspace_err(), bm_mesh_loops_calc_normals__multi_threaded(), and bm_mesh_loops_calc_normals__single_threaded().
| void BKE_lnor_spacearr_tls_init | ( | MLoopNorSpaceArray * | lnors_spacearr, |
| MLoopNorSpaceArray * | lnors_spacearr_tls ) |
Utility for multi-threaded calculation that ensures lnors_spacearr_tls doesn't share memory with lnors_spacearr that would cause it not to be thread safe.
Definition at line 544 of file mesh_normals.cc.
References BLI_memarena_new(), BLI_MEMARENA_STD_BUFSIZE, and MLoopNorSpaceArray::mem.
Referenced by bm_mesh_loops_calc_normals_for_vert_init_fn().
| void BKE_lnor_spacearr_tls_join | ( | MLoopNorSpaceArray * | lnors_spacearr, |
| MLoopNorSpaceArray * | lnors_spacearr_tls ) |
Utility for multi-threaded calculation that merges lnors_spacearr_tls into lnors_spacearr.
Definition at line 551 of file mesh_normals.cc.
References BKE_lnor_spacearr_clear(), BLI_assert, BLI_memarena_free(), BLI_memarena_merge(), MLoopNorSpaceArray::data_type, MLoopNorSpaceArray::mem, and MLoopNorSpaceArray::spaces_num.
Referenced by bm_mesh_loops_calc_normals_for_vert_reduce_fn().
Definition at line 1078 of file blenkernel/intern/mesh.cc.
References BKE_id_new(), and name.
Referenced by BKE_mesh_new_from_object_to_bmain(), BKE_object_obdata_add_from_type(), BKE_pointcloud_to_mesh(), blender::io::usd::USDMeshReader::create_object(), blender::io::usd::USDShapeReader::create_object(), blender::bke::tests::ArmatureDeformTestBase::create_test_mesh_object(), blender::io::ply::importer_main(), blender::io::stl::importer_main(), blender::bke::tests::MeshTestData::MeshTestData(), Freestyle::BlenderStrokeRenderer::NewMesh(), blender::io::alembic::AbcMeshReader::readObjectData(), blender::io::alembic::AbcSubDReader::readObjectData(), blender::animrig::tests::KeyframingTest::SetUp(), blender::bke::tests::TEST_F(), blender::bke::tests::TEST_F(), blender::bke::tests::TwoMeshesTestData::TwoMeshesTestData(), and blender::bke::tests::WholeIDTestData::WholeIDTestData().
Definition at line 1589 of file blenkernel/intern/mesh.cc.
References BKE_modifiers_test_object(), BKE_object_materials_sync_length(), Object::data, Mesh::id, id_us_min(), id_us_plus(), multires_force_sculpt_rebuild(), OB_MESH, and Object::type.
Referenced by blender::animrig::tests::KeyframingTest::SetUp(), and blender::animrig::tests::TEST_F().
| bool BKE_mesh_attribute_required | ( | blender::StringRef | name | ) |
Definition at line 530 of file blenkernel/intern/mesh.cc.
Referenced by BKE_attribute_required().
| void BKE_mesh_batch_cache_dirty_tag | ( | Mesh * | mesh, |
| eMeshBatchDirtyMode | mode ) |
Definition at line 450 of file mesh_runtime.cc.
References BKE_mesh_batch_cache_dirty_tag_cb, and Mesh::runtime.
Referenced by BKE_object_batch_cache_dirty_tag(), BKE_object_data_select_update(), blender::ed::sculpt_paint::face_set::edit_modify_geometry(), blender::ed::sculpt_paint::fill_active_color(), geometry_extract_apply(), blender::ed::sculpt_paint::trim::gesture_end(), paint_mask_slice_exec(), paintface_flush_flags(), paintvert_flush_flags(), blender::ed::object::quadriflow_start_job(), blender::ed::object::shade_smooth_exec(), blender::ed::sculpt_paint::symmetrize_exec(), tag_object_after_update(), uv_select_tag_update_for_object(), uv_shortest_path_pick_ex(), blender::ed::object::voxel_remesh_exec(), vpaint_mode_toggle_exec(), vpaint_stroke_update_step(), and wpaint_stroke_update_step().
| void BKE_mesh_batch_cache_free | ( | void * | batch_cache | ) |
Definition at line 463 of file mesh_runtime.cc.
References BKE_mesh_batch_cache_free_cb.
Referenced by blender::bke::free_batch_cache().
Definition at line 88 of file mesh_evaluate.cc.
References blender::bke::mesh::face_area_calc(), faces, i, and blender::Span< T >::slice().
Referenced by blender::ed::object::quadriflow_check().
| void BKE_mesh_calc_relative_deform | ( | const int * | face_offsets, |
| int | faces_num, | ||
| const int * | corner_verts, | ||
| int | totvert, | ||
| const float(*) | vert_cos_src[3], | ||
| const float(*) | vert_cos_dst[3], | ||
| const float(*) | vert_cos_org[3], | ||
| float(*) | vert_cos_new[3] ) |
This function takes the difference between 2 vertex-coord-arrays (vert_cos_src, vert_cos_dst), and applies the difference to vert_cos_new relative to vert_cos_org.
| vert_cos_src | reference deform source. |
| vert_cos_dst | reference deform destination. |
| vert_cos_org | reference for the output location. |
| vert_cos_new | resulting coords. |
Definition at line 713 of file mesh_evaluate.cc.
References add_v3_v3(), copy_v3_v3(), faces, i, MEM_calloc_arrayN(), MEM_freeN(), mul_v3_fl(), blender::IndexRange::size(), blender::IndexRange::start(), and transform_point_by_tri_v3().
Referenced by meshcache_do().
| void BKE_mesh_calc_volume | ( | const float(*) | vert_positions[3], |
| int | mverts_num, | ||
| const blender::int3 * | corner_tris, | ||
| int | corner_tris_num, | ||
| const int * | corner_verts, | ||
| float * | r_volume, | ||
| float | r_center[3] ) |
Calculate the volume and center.
| r_volume | Volume (unsigned). |
| r_center | Center of mass. |
Definition at line 390 of file mesh_evaluate.cc.
References fabsf, i, madd_v3_v3fl(), mesh_calc_center_centroid_ex(), mul_v3_fl(), v2, volume_tetrahedron_signed_v3(), and zero_v3().
Definition at line 240 of file mesh_evaluate.cc.
References blender::array_utils::compute_sum(), copy_v3_v3(), mul_v3_fl(), and Mesh::verts_num.
Referenced by BKE_mesh_center_of_surface(), and blender::ed::object::object_origin_set_exec().
Calculate the center from faces, use when we want to ignore vertex locations that don't have connected faces.
Definition at line 254 of file mesh_evaluate.cc.
References add_v3_v3(), faces, Mesh::faces_num, i, mul_v3_fl(), blender::Span< T >::slice(), and zero_v3().
Referenced by BKE_mesh_center_of_volume().
Definition at line 274 of file mesh_evaluate.cc.
References BKE_mesh_center_median(), blender::bke::mesh::face_area_centroid_calc(), faces, Mesh::faces_num, i, is_finite_v3(), madd_v3_v3fl(), mul_v3_fl(), blender::Span< T >::slice(), UNLIKELY, and zero_v3().
Referenced by blender::ed::object::object_origin_set_exec().
Definition at line 306 of file mesh_evaluate.cc.
References add_v3_v3(), BKE_mesh_center_median_from_faces(), copy_v3_v3(), faces, Mesh::faces_num, i, is_finite_v3(), blender::bke::mesh::mesh_calc_face_volume_centroid_with_reference_center(), mul_v3_fl(), blender::Span< T >::slice(), UNLIKELY, and zero_v3().
Referenced by blender::ed::object::object_origin_set_exec().
| void BKE_mesh_clear_geometry | ( | Mesh * | mesh | ) |
Remove all geometry and derived data like caches from the mesh.
Definition at line 1053 of file blenkernel/intern/mesh.cc.
References BKE_mesh_runtime_clear_cache(), and mesh_clear_geometry().
Referenced by BM_mesh_bm_to_me(), and blender::ed::sculpt_paint::undo::restore_geometry_data().
| void BKE_mesh_clear_geometry_and_metadata | ( | Mesh * | mesh | ) |
Same as BKE_mesh_clear_geometry, but also clears attribute meta-data like active attribute names and vertex group names. Used when the geometry is entirely replaced.
Definition at line 1059 of file blenkernel/intern/mesh.cc.
References BKE_mesh_runtime_clear_cache(), clear_attribute_names(), and mesh_clear_geometry().
Referenced by BKE_mesh_nomain_to_mesh().
Performs copy for use during evaluation.
Definition at line 1375 of file blenkernel/intern/mesh.cc.
References BKE_id_copy_ex(), Mesh::id, and LIB_ID_COPY_LOCALIZE.
Referenced by BKE_crazyspace_build_sculpt(), BKE_multires_create_mesh(), BKE_sculpt_get_first_deform_matrices(), BKE_subdiv_to_ccg_mesh(), canvas_copyMesh(), cloth_make_rest_mesh(), blender::ed::object::convert_curves_to_mesh(), blender::ed::object::convert_mesh_to_mesh(), blender::bke::MeshComponent::copy(), blender::bke::create_orco_mesh(), deform_verts(), deform_verts(), dynamicPaint_brushMeshCalculateVelocity(), dynamicPaint_Modifier_apply(), dynamicPaint_paintMesh(), blender::bke::editbmesh_calc_modifiers(), blender::bke::MeshComponent::ensure_owns_direct_data(), blender::geometry::execute_realize_mesh_tasks(), blender::bke::MeshComponent::get_for_write(), blender::ed::geometry::get_original_geometry_eval_copy(), blender::io::usd::get_shape_key_basis_mesh(), blender::geometry::boolean::mesh_boolean_float(), blender::bke::mesh_calc_modifiers(), blender::ed::object::mesh_data_to_grease_pencil(), mesh_new_from_evaluated_curve_type_object(), mesh_new_from_mball_object(), blender::ed::object::quadriflow_start_job(), RE_bake_normal_world_to_tangent(), RE_bake_pixels_populate_from_objects(), and blender::ed::object::remesh_symmetry_bisect().
Copy user editable settings that we want to preserve when a new mesh is based on an existing mesh.
Definition at line 1270 of file blenkernel/intern/mesh.cc.
References Mesh::attributes_active_index, copy_v3_v3(), Mesh::editflag, Mesh::face_sets_color_default, Mesh::face_sets_color_seed, Mesh::flag, Mesh::remesh_mode, Mesh::remesh_voxel_adaptivity, Mesh::remesh_voxel_size, Mesh::symmetry, Mesh::texspace_flag, Mesh::texspace_location, Mesh::texspace_size, and Mesh::vertex_group_active_index.
Referenced by BKE_id_eval_properties_copy(), BKE_mesh_copy_parameters_for_eval(), BKE_mesh_nomain_to_mesh(), BKE_mesh_remesh_voxel(), BKE_mesh_remesh_voxel(), and blender::ed::sculpt_paint::store_mesh_from_eval().
A version of BKE_mesh_copy_parameters that is intended for evaluated output (the modifier stack for example).
Definition at line 1292 of file blenkernel/intern/mesh.cc.
References BKE_defgroup_copy_list(), BKE_mesh_copy_parameters(), BLI_assert, BLI_listbase_is_empty(), copy_attribute_names(), Mesh::id, ID_TAG_COPIED_ON_EVAL, ID_TAG_NO_MAIN, Mesh::mat, MEM_dupallocN(), MEM_freeN(), Mesh::runtime, ID::tag, Mesh::totcol, and Mesh::vertex_group_names.
Referenced by BKE_mesh_from_bmesh_for_eval_nomain(), BKE_mesh_from_bmesh_nomain(), BKE_mesh_new_nomain_from_template_ex(), BKE_mesh_wrapper_from_editmesh(), create_empty_mesh(), blender::geometry::execute_realize_mesh_tasks(), blender::geometry::extract_mesh_edges(), blender::geometry::extract_mesh_faces(), blender::geometry::extract_mesh_vertices(), blender::geometry::mesh_copy_selection(), blender::geometry::mesh_copy_selection_keep_edges(), blender::geometry::mesh_copy_selection_keep_verts(), blender::geometry::mesh_triangulate(), blender::bke::modifier_modify_mesh_and_geometry_set(), modify_mesh(), blender::geometry::reorder_mesh(), and blender::bke::subdiv::subdiv_mesh_topology_info().
| void BKE_mesh_count_selected_items | ( | const Mesh * | mesh, |
| int | r_count[3] ) |
Definition at line 2046 of file blenkernel/intern/mesh.cc.
References bm.
| char * BKE_mesh_debug_info | ( | const Mesh * | mesh | ) |
Definition at line 28 of file mesh_debug.cc.
References BLI_dynstr_append(), BLI_dynstr_appendf(), BLI_dynstr_free(), BLI_dynstr_get_cstring(), BLI_dynstr_new(), Mesh::corner_data, CustomData_debug_info_from_layers(), Mesh::edge_data, Mesh::edges_num, Mesh::face_data, Mesh::faces_num, Mesh::fdata_legacy, ret, Mesh::runtime, Mesh::totface_legacy, Mesh::vert_data, and Mesh::verts_num.
Referenced by BKE_mesh_debug_print().
| void BKE_mesh_debug_print | ( | const Mesh * | mesh | ) |
Definition at line 73 of file mesh_debug.cc.
References BKE_mesh_debug_info(), MEM_freeN(), and str.
| void BKE_mesh_ensure_default_orig_index_customdata | ( | Mesh * | mesh | ) |
Add original index (CD_ORIGINDEX) layers if they don't already exist. This is meant to be used when creating an evaluated mesh from an original edit mode mesh, to allow mapping from the evaluated vertices to the originals.
The mesh is expected to of a ME_WRAPPER_TYPE_MDATA wrapper type. This is asserted.
Definition at line 1437 of file blenkernel/intern/mesh.cc.
References BKE_mesh_ensure_default_orig_index_customdata_no_check(), BLI_assert, and ME_WRAPPER_TYPE_MDATA.
Referenced by blender::bke::create_orco_mesh(), and subdivide_edit_mesh().
| void BKE_mesh_ensure_default_orig_index_customdata_no_check | ( | Mesh * | mesh | ) |
Same as BKE_mesh_ensure_default_orig_index_customdata but does not perform any checks: they must be done by the caller.
Definition at line 1443 of file blenkernel/intern/mesh.cc.
References ensure_orig_index_layer().
Referenced by BKE_mesh_ensure_default_orig_index_customdata(), and BKE_mesh_wrapper_ensure_mdata().
| void BKE_mesh_ensure_skin_customdata | ( | Mesh * | mesh | ) |
Definition at line 535 of file blenkernel/intern/mesh.cc.
References bm, BM_data_layer_add(), BM_ITER_MESH, BM_VERTS_OF_MESH, CD_MVERT_SKIN, CD_SET_DEFAULT, CustomData_add_layer(), CustomData_bmesh_get(), CustomData_has_layer(), MVertSkin::flag, MVERT_SKIN_ROOT, and v.
Referenced by BKE_object_copy_modifier(), mesh_customdata_skin_add_exec(), blender::ed::object::modifier_add(), and blender::ed::object::skin_root_mark_exec().
| void BKE_mesh_eval_geometry | ( | Depsgraph * | depsgraph, |
| Mesh * | mesh ) |
Definition at line 2060 of file blenkernel/intern/mesh.cc.
References BKE_id_free(), BKE_mesh_texspace_calc(), copy_v3_v3(), DEG_debug_print_eval(), DEG_get_original(), DEG_is_active(), depsgraph, ME_TEXSPACE_FLAG_AUTO_EVALUATED, Mesh::texspace_flag, Mesh::texspace_location, and Mesh::texspace_size.
Referenced by blender::deg::DepsgraphNodeBuilder::build_object_data_geometry_datablock().
| bool BKE_mesh_face_normals_are_dirty | ( | const Mesh * | mesh | ) |
Return true if the mesh face normals either are not stored or are dirty.
Definition at line 101 of file mesh_normals.cc.
References Mesh::runtime.
Referenced by C_BVHTree_FromObject(), and mesh_calc_tri_tessface().
| void BKE_mesh_face_offsets_ensure_alloc | ( | Mesh * | mesh | ) |
Add face offsets to describe faces to a new mesh.
Definition at line 1083 of file blenkernel/intern/mesh.cc.
References BLI_assert, blender::implicit_sharing::info_for_mem_free(), and MEM_malloc_arrayN().
Referenced by BKE_mesh_legacy_convert_polys_to_offsets(), BKE_mesh_new_nomain(), BKE_mesh_new_nomain_from_template_ex(), blender::bm_to_mesh_faces(), and Freestyle::BlenderStrokeRenderer::GenerateStrokeMesh().
| Mesh * BKE_mesh_from_bmesh_for_eval_nomain | ( | BMesh * | bm, |
| const CustomData_MeshMasks * | cd_mask_extra, | ||
| const Mesh * | me_settings ) |
Definition at line 1418 of file blenkernel/intern/mesh.cc.
References BKE_id_new_nomain(), BKE_mesh_copy_parameters_for_eval(), bm, and BM_mesh_bm_to_me_for_eval().
Referenced by base_skin(), BKE_mesh_mirror_bisect_on_mirror_plane_for_modifier(), blender::bke::create_orco_mesh(), deform_verts(), blender::io::ply::do_triangulation(), blender::io::alembic::ABCGenericMeshWriter::do_write(), blender::io::usd::USDGenericMeshWriter::do_write(), doEdgeSplit(), blender::geometry::boolean::mesh_boolean_float(), modify_mesh(), modify_mesh(), modify_mesh(), blender::nodes::node_geo_deform_curves_on_surface_cc::node_geo_exec(), subdivide_edit_mesh(), triangulate_mesh(), and WireframeModifier_do().
| Mesh * BKE_mesh_from_bmesh_nomain | ( | BMesh * | bm, |
| const BMeshToMeshParams * | params, | ||
| const Mesh * | me_settings ) |
Definition at line 1407 of file blenkernel/intern/mesh.cc.
References BKE_id_new_nomain(), BKE_mesh_copy_parameters_for_eval(), BLI_assert, bm, BM_mesh_bm_to_me(), and params.
Referenced by BKE_mesh_remesh_voxel_fix_poles(), geometry_extract_apply(), paint_mask_slice_exec(), and blender::ed::sculpt_paint::trim::update_normals().
Definition at line 1577 of file blenkernel/intern/mesh.cc.
References Object::data, OB_MESH, and Object::type.
Referenced by blender::bke::build_pbvh_from_ccg(), do_paintface_box_select(), ED_object_texture_paint_mode_enter_ex(), ED_object_texture_paint_mode_exit_ex(), ED_paint_proj_mesh_data_check(), ED_wpaint_ensure_data(), blender::ed::sculpt_paint::boundary::ensure_boundary_info(), blender::ed::sculpt_paint::fill_active_color(), blender::ed::sculpt_paint::vwpaint::mode_enter_generic(), blender::ed::sculpt_paint::vwpaint::mode_exit_generic(), multires_force_external_reload(), multiresModifier_del_levels(), blender::ed::sculpt_paint::object_sculpt_mode_enter(), blender::ed::sculpt_paint::object_sculpt_mode_exit(), paint_proj_new_stroke(), paint_select_less_exec(), paint_select_more_exec(), paintface_deselect_all_visible(), paintface_flush_flags(), paintface_hide(), paintface_minmax(), paintface_mouse_select(), paintface_reveal(), paintface_select_linked(), paintface_select_loop(), paintvert_deselect_all_visible(), paintvert_flush_flags(), paintvert_hide(), paintvert_reveal(), paintvert_select_less_exec(), paintvert_select_linked(), paintvert_select_linked_vertices(), paintvert_select_more_exec(), paintvert_select_ungrouped(), blender::ed::object::quadriflow_remesh_exec(), vertex_color_brightness_contrast_exec(), vertex_color_hsv_exec(), vertex_color_invert_exec(), vertex_color_levels_exec(), vertex_color_set_exec(), vertex_color_smooth(), vertex_paint_from_weight(), vertex_weight_paint_mode_poll(), blender::ed::object::vgroup_selected_get(), vpaint_mode_toggle_exec(), vpaint_stroke_test_start(), weight_sample_group_invoke(), weight_sample_invoke(), wpaint_mode_toggle_exec(), and wpaint_stroke_test_start().
| bool BKE_mesh_has_custom_loop_normals | ( | Mesh * | mesh | ) |
High-level custom normals functions.
Definition at line 568 of file blenkernel/intern/mesh.cc.
References CD_PROP_INT16_2D, and CustomData_has_layer_named().
Referenced by mesh_customdata_custom_splitnormals_add_exec().
| bool BKE_mesh_is_valid | ( | Mesh * | mesh | ) |
Checks if a Mesh is valid without any modification. This is always verbose.
Definition at line 1078 of file mesh_validate.cc.
References BKE_mesh_validate_all_customdata(), BKE_mesh_validate_arrays(), BLI_assert, CD_MDEFORMVERT, CD_MFACE, CustomData_get_layer_for_write(), blender::MutableSpan< T >::data(), blender::Span< T >::data(), blender::MutableSpan< T >::size(), and blender::Span< T >::size().
Referenced by blender::bke::mesh_calc_edges(), and blender::geometry::mesh_triangulate().
| void BKE_mesh_material_index_clear | ( | Mesh * | mesh | ) |
Definition at line 1652 of file blenkernel/intern/mesh.cc.
References BKE_mesh_tessface_clear(), and blender::bke::MutableAttributeAccessor::remove().
Referenced by material_data_index_clear_id().
| void BKE_mesh_material_index_remove | ( | Mesh * | mesh, |
| short | index ) |
Definition at line 1613 of file blenkernel/intern/mesh.cc.
References BKE_mesh_tessface_clear(), BLI_assert_unreachable, blender::bke::AttributeWriter< T >::domain, blender::bke::Face, blender::bke::AttributeWriter< T >::finish(), i, blender::MutableSpan< T >::index_range(), blender::bke::MutableAttributeAccessor::lookup_for_write(), blender::MutableVArraySpan< T >::save(), and blender::bke::AttributeWriter< T >::varray.
Referenced by material_data_index_remove_id().
| bool BKE_mesh_material_index_used | ( | Mesh * | mesh, |
| short | index ) |
Definition at line 1638 of file blenkernel/intern/mesh.cc.
References blender::Span< T >::contains(), blender::bke::Face, blender::VArrayCommon< T >::get_internal_single(), blender::VArrayCommon< T >::is_single(), and blender::bke::AttributeAccessor::lookup_or_default().
Referenced by BKE_object_material_slot_used().
Definition at line 1662 of file blenkernel/intern/mesh.cc.
References BM_FACES_OF_MESH, BM_ITER_MESH, blender::bke::Face, blender::bke::SpanAttributeWriter< T >::finish(), i, blender::bke::MutableAttributeAccessor::lookup_or_add_for_write_span(), BMFace::mat_nr, MAT_NR_REMAP, and blender::bke::SpanAttributeWriter< T >::span.
Referenced by BKE_object_material_remap().
| void BKE_mesh_mdisp_flip | ( | MDisps * | md, |
| bool | use_loop_mdisp_flip ) |
Flip a single corner's MDisps structure, low level function to be called from face-flipping code which re-arranged the mdisps themselves.
Definition at line 462 of file mesh_evaluate.cc.
References MDisps::disps, float, sqrt, swap_v3_v3(), MDisps::totdisp, UNLIKELY, x, and y.
Referenced by bmesh_kernel_loop_reverse(), and blender::bke::mesh_flip_faces().
| void BKE_mesh_merge_customdata_for_apply_modifier | ( | Mesh * | mesh | ) |
Account for custom-data such as UVs becoming detached because of imprecision in custom-data interpolation. Without running this operation subdivision surface can cause UVs to be disconnected, see: #81065.
Definition at line 100 of file mesh_merge_customdata.cc.
References blender::Vector< T, InlineBufferCapacity, Allocator >::append(), blender::bke::Corner, blender::bke::AttributeIter::data_type, blender::bke::AttributeIter::domain, blender::bke::Float2, blender::bke::AttributeAccessor::foreach_attribute(), blender::Vector< T, InlineBufferCapacity, Allocator >::is_empty(), blender::bke::MutableAttributeAccessor::lookup_for_write_span(), blender::bke::AttributeIter::name, and blender::threading::parallel_for().
Referenced by blender::ed::object::convert_mesh_to_mesh(), and blender::ed::object::modifier_apply_exec_ex().
| int BKE_mesh_mselect_active_get | ( | const Mesh * | mesh, |
| int | type ) |
Definition at line 2013 of file blenkernel/intern/mesh.cc.
References BLI_assert, ELEM, ME_ESEL, ME_FSEL, and ME_VSEL.
Referenced by ED_mesh_active_dvert_get_ob().
| void BKE_mesh_mselect_active_set | ( | Mesh * | mesh, |
| int | index, | ||
| int | type ) |
Definition at line 2025 of file blenkernel/intern/mesh.cc.
References BKE_mesh_mselect_find(), BLI_assert, and MEM_reallocN.
Referenced by ed_wpaint_vertex_select_pick().
| void BKE_mesh_mselect_clear | ( | Mesh * | mesh | ) |
Definition at line 1927 of file blenkernel/intern/mesh.cc.
References MEM_SAFE_FREE.
Referenced by blender::ed::sculpt_paint::dyntopo::enable_ex(), and paintvert_deselect_all_visible().
| int BKE_mesh_mselect_find | ( | const Mesh * | mesh, |
| int | index, | ||
| int | type ) |
Definition at line 2000 of file blenkernel/intern/mesh.cc.
References BLI_assert, ELEM, i, ME_ESEL, ME_FSEL, and ME_VSEL.
Referenced by BKE_mesh_mselect_active_set().
| void BKE_mesh_mselect_validate | ( | Mesh * | mesh | ) |
Definition at line 1933 of file blenkernel/intern/mesh.cc.
References BLI_assert_unreachable, blender::bke::Edge, blender::bke::Face, MSelect::index, blender::bke::AttributeAccessor::lookup_or_default(), ME_ESEL, ME_FSEL, ME_VSEL, MEM_freeN(), MEM_malloc_arrayN(), MEM_reallocN, and blender::bke::Point.
Referenced by do_lasso_select_paintvert(), do_paintvert_box_select(), ed_wpaint_vertex_select_pick(), paint_vertsel_circle_select(), and paintvert_deselect_all_visible().
| Mesh * BKE_mesh_new_from_object | ( | Depsgraph * | depsgraph, |
| Object * | object, | ||
| bool | preserve_all_data_layers, | ||
| bool | preserve_origindex, | ||
| bool | ensure_subdivision ) |
Create new mesh from the given object at its current state. The caller owns the result mesh.
If preserve_all_data_layers is true then the modifier stack is re-evaluated to ensure it preserves all possible custom data layers.
Definition at line 874 of file mesh_convert.cc.
References BLI_assert, depsgraph, Mesh::id, mesh_new_from_curve_type_object(), mesh_new_from_mball_object(), mesh_new_from_mesh_object(), OB_CURVES_LEGACY, OB_FONT, OB_MBALL, OB_MESH, OB_SURF, Mesh::runtime, and ID::us.
Referenced by blender::ed::object::bake(), blender::ed::object::bake_mesh_new_from_object(), BKE_mesh_new_from_object_to_bmain(), BKE_object_to_mesh(), bpy_bmesh_from_object(), blender::io::alembic::ABCMetaballWriter::get_export_mesh(), blender::io::usd::USDMetaballWriter::get_export_mesh(), blender::io::usd::USDTextWriter::get_export_mesh(), lineart_object_load_single_instance(), object_copy_mesh_data(), and blender::io::obj::OBJMesh::OBJMesh().
| Mesh * BKE_mesh_new_from_object_to_bmain | ( | Main * | bmain, |
| Depsgraph * | depsgraph, | ||
| Object * | object, | ||
| bool | preserve_all_data_layers ) |
This is a version of BKE_mesh_new_from_object() which stores mesh in the given main database. However, that function enforces object type to be a geometry one, and ensures a mesh is always generated, be it empty.
Definition at line 950 of file mesh_convert.cc.
References BKE_library_foreach_ID_link(), BKE_mesh_add(), BKE_mesh_new_from_object(), BKE_mesh_nomain_to_mesh(), BLI_assert, depsgraph, ELEM, foreach_libblock_make_original_callback(), foreach_libblock_make_usercounts_callback(), Mesh::id, id_us_min(), IDWALK_NOP, Mesh::mat, OB_CURVES_LEGACY, OB_FONT, OB_MBALL, OB_MESH, OB_SURF, Mesh::totcol, and ID::us.
Referenced by blender::ed::object::convert_mball_to_mesh(), and blender::ed::object::object_data_convert_curve_to_mesh().
| Mesh * BKE_mesh_new_nomain | ( | int | verts_num, |
| int | edges_num, | ||
| int | faces_num, | ||
| int | corners_num ) |
Definition at line 1218 of file blenkernel/intern/mesh.cc.
References BKE_idtype_idcode_to_name(), BKE_libblock_alloc(), BKE_libblock_init_empty(), BKE_mesh_face_offsets_ensure_alloc(), ID_ME, LIB_ID_CREATE_LOCALIZE, and blender::bke::mesh_ensure_required_data_layers().
Referenced by BKE_mball_polygonize(), BKE_modifier_deform_verts(), blender::ed::object::convert_curves_to_mesh(), blender::ed::object::convert_grease_pencil_to_mesh(), blender::ed::object::convert_mesh_to_mesh(), blender::io::ply::convert_ply_to_mesh(), blender::ed::object::convert_psys_to_mesh(), blender::nodes::node_geo_mesh_primitive_circle_cc::create_circle_mesh(), blender::geometry::create_cuboid_mesh(), blender::geometry::create_cylinder_or_cone_mesh(), create_empty_mesh(), blender::geometry::create_grid_mesh(), blender::geometry::create_line_mesh(), blender::io::obj::MeshFromGeometry::create_mesh(), blender::bke::tests::ArmatureDeformTestBase::create_test_mesh(), blender::geometry::create_uv_sphere_mesh(), blender::geometry::create_vertex_mesh(), curve_calc_modifiers_post(), blender::bke::curve_to_mesh_sweep(), blender::nodes::node_geo_duplicate_elements_cc::duplicate_edges(), blender::nodes::node_geo_duplicate_elements_cc::duplicate_faces(), blender::nodes::node_geo_duplicate_elements_cc::duplicate_points_mesh(), evaluate_surface_object(), blender::geometry::execute_realize_mesh_tasks(), blender::geometry::extract_mesh_edges(), blender::geometry::extract_mesh_faces(), blender::geometry::extract_mesh_vertices(), blender::ed::sculpt_paint::trim::generate_geometry(), blender::nodes::node_geo_points_to_vertices_cc::geometry_set_points_to_vertices(), get_quick_mesh(), hair_create_input_mesh(), blender::io::fbx::import_meshes(), blender::ed::mesh::join_objects_exec(), blender::bke::mesh_new_no_attributes(), mesh_nurbs_displist_to_mesh(), blender::bke::modifier_modify_mesh_and_geometry_set(), blender::modify_mesh(), blender::io::stl::read_stl_binary(), blender::ed::geometry::store_result_geometry(), blender::io::stl::STLMeshHelper::to_mesh(), and blender::bke::bake::try_load_mesh().
These functions construct a new Mesh, contrary to BKE_mesh_to_curve_nurblist which modifies ob itself.
Definition at line 338 of file mesh_convert.cc.
References BKE_mesh_new_nomain_from_curve_displist(), and Object::runtime.
Referenced by blender::io::alembic::ABCCurveMeshWriter::get_export_mesh(), and knifeproject_poly_from_object().
Definition at line 326 of file mesh_convert.cc.
References Object::data, Curve::mat, MEM_dupallocN(), mesh_copy_texture_space_from_curve_type(), mesh_nurbs_displist_to_mesh(), and Curve::totcol.
Referenced by BKE_mesh_new_nomain_from_curve(), and curve_calc_modifiers_post().
| Mesh * BKE_mesh_new_nomain_from_template | ( | const Mesh * | me_src, |
| int | verts_num, | ||
| int | edges_num, | ||
| int | faces_num, | ||
| int | corners_num ) |
Definition at line 1365 of file blenkernel/intern/mesh.cc.
References BKE_mesh_new_nomain_from_template_ex(), and CD_MASK_EVERYTHING.
Referenced by arrayModifier_doArray(), BKE_mesh_mirror_apply_mirror_on_axis_for_modifier(), blender::geometry::create_merged_mesh(), MOD_solidify_extrude_modifyMesh(), MOD_solidify_nonmanifold_modifyMesh(), modify_mesh(), modify_mesh(), modify_mesh(), modify_mesh(), multires_unsubdivide_to_basemesh(), blender::io::alembic::AbcMeshReader::read_mesh(), and subdivide_base().
| Mesh * BKE_mesh_new_nomain_from_template_ex | ( | const Mesh * | me_src, |
| int | verts_num, | ||
| int | edges_num, | ||
| int | tessface_num, | ||
| int | faces_num, | ||
| int | corners_num, | ||
| CustomData_MeshMasks | mask ) |
Definition at line 1314 of file blenkernel/intern/mesh.cc.
References BKE_id_new_nomain(), BKE_mesh_copy_parameters_for_eval(), BKE_mesh_face_offsets_ensure_alloc(), CD_MFACE, CD_SET_DEFAULT, Mesh::corner_data, Mesh::corners_num, CustomData_add_layer(), CustomData_get_layer(), CustomData_init_layout_from(), Mesh::edge_data, Mesh::edges_num, Mesh::face_data, Mesh::faces_num, Mesh::fdata_legacy, mask(), MEM_dupallocN(), blender::bke::mesh_ensure_required_data_layers(), mesh_tessface_clear_intern(), Mesh::mselect, Mesh::totface_legacy, Mesh::vert_data, and Mesh::verts_num.
Referenced by BKE_mesh_new_nomain_from_template(), cutEdges(), and explodeMesh().
| void BKE_mesh_nomain_to_mesh | ( | Mesh * | mesh_src, |
| Mesh * | mesh_dst, | ||
| Object * | ob, | ||
| bool | process_shape_keys = true ) |
Move data from a mesh outside of the main data-base into a mesh in the data-base. Takes ownership of the source mesh.
| process_shape_keys | Whether to move CD_SHAPEKEY layers to the destination mesh. If there are no such layers and the number of vertices changed, the shape key data will be lost. If this parameter is false, the caller is expected to handle shape keys itself. |
Definition at line 1085 of file mesh_convert.cc.
References Mesh::active_color_attribute, BKE_id_free(), BKE_mesh_clear_geometry_and_metadata(), BKE_mesh_copy_parameters(), BLI_assert, CD_MASK_MESH, CD_SHAPEKEY, CLOG_WARN, copy_loose_edge_hint(), copy_loose_vert_hint(), copy_overlapping_hint(), Mesh::corner_data, Mesh::corners_num, CustomData_has_layer(), CustomData_init_from(), Object::data, Mesh::default_color_attribute, Mesh::edge_data, Mesh::edges_num, Mesh::face_data, Mesh::face_offset_indices, Mesh::faces_num, find_object_active_key_uid(), Key::id, Mesh::id, ID_TAG_NO_MAIN, id_us_min(), Mesh::key, LOG, mask(), move_shapekey_layers_to_keyblocks(), ID::name, Mesh::runtime, ID::tag, Mesh::vert_data, Mesh::vertex_group_names, and Mesh::verts_num.
Referenced by blender::ed::sculpt_paint::trim::apply_join_operation(), blender::ed::sculpt_paint::trim::apply_trim(), BKE_mesh_new_from_object_to_bmain(), blender::ed::object::convert_curves_to_mesh(), blender::ed::object::convert_grease_pencil_to_mesh(), blender::ed::object::convert_mesh_to_mesh(), blender::ed::object::convert_psys_to_mesh(), blender::io::obj::MeshFromGeometry::create_mesh_object(), blender::bke::tests::ArmatureDeformTestBase::create_test_mesh_object(), geometry_extract_apply(), blender::io::ply::importer_main(), blender::io::stl::importer_main(), blender::ed::mesh::join_objects_exec(), blender::ed::object::modifier_apply_obdata(), multiresModifier_rebuild_subdiv(), paint_mask_slice_exec(), blender::ed::object::quadriflow_start_job(), blender::io::usd::USDMeshReader::read_object_data(), blender::io::usd::USDShapeReader::read_object_data(), blender::io::alembic::AbcMeshReader::readObjectData(), blender::io::alembic::AbcSubDReader::readObjectData(), blender::ed::geometry::store_result_geometry(), blender::ed::sculpt_paint::store_sculpt_entire_mesh(), and blender::ed::object::voxel_remesh_exec().
Definition at line 1150 of file mesh_convert.cc.
References BLI_assert, blender::MutableSpan< T >::copy_from(), KeyBlock::data, Key::elemsize, Mesh::id, ID_TAG_NO_MAIN, Mesh::key, MEM_freeN(), MEM_malloc_arrayN(), ID::tag, KeyBlock::totelem, and Mesh::verts_num.
Referenced by blender::ed::object::modifier_apply_shape().
Add a CD_ORCO layer to the Mesh if there is none already.
Definition at line 1563 of file blenkernel/intern/mesh.cc.
References BKE_mesh_orco_verts_get(), BKE_mesh_orco_verts_transform(), CD_CONSTRUCT, CD_ORCO, blender::MutableSpan< T >::copy_from(), CustomData_add_layer(), CustomData_has_layer(), and data.
Referenced by psys_thread_context_init_distribute().
| blender::Array< blender::float3 > BKE_mesh_orco_verts_get | ( | const Object * | ob | ) |
Definition at line 1522 of file blenkernel/intern/mesh.cc.
References Object::data, result, and blender::Span< T >::size().
Referenced by BKE_mesh_orco_ensure(), and blender::bke::get_orco_coords().
| void BKE_mesh_orco_verts_transform | ( | Mesh * | mesh, |
| blender::MutableSpan< blender::float3 > | orco, | ||
| bool | invert ) |
References depsgraph, and invert().
Referenced by blender::bke::add_orco_mesh(), distribute_children_exec(), distribute_from_verts_exec(), blender::draw::extract_tan_init_common(), psys_face_mat(), psys_interpolate_face(), psys_particle_on_dm(), psys_thread_context_init_distribute(), blender::io::alembic::read_generated_coordinates(), and blender::io::alembic::write_generated_coordinates().
Definition at line 1558 of file blenkernel/intern/mesh.cc.
References BKE_mesh_orco_verts_transform(), and invert().
| void BKE_mesh_strip_loose_faces | ( | Mesh * | mesh | ) |
Definition at line 256 of file mesh_legacy_convert.cc.
References b, CustomData_copy_data(), CustomData_free_elem(), Mesh::fdata_legacy, Mesh::totface_legacy, and MFace::v3.
Referenced by BKE_mesh_calc_edges_legacy(), BKE_mesh_validate_arrays(), and blo_do_versions_pre250().
| void BKE_mesh_tessface_clear | ( | Mesh * | mesh | ) |
Definition at line 1919 of file blenkernel/intern/mesh.cc.
References mesh_tessface_clear_intern().
Referenced by BKE_mesh_material_index_clear(), BKE_mesh_material_index_remove(), BKE_sculpt_color_layer_create_if_needed(), do_versions_after_linking_280(), ED_mesh_color_ensure(), blender::ed::sculpt_paint::fill_mesh_face_or_corner_attribute(), mesh_ensure_tessellation_customdata(), and blender::bke::mesh_init_origspace().
| void BKE_mesh_texspace_calc | ( | Mesh * | mesh | ) |
Definition at line 1450 of file blenkernel/intern/mesh.cc.
References bounds(), copy_v3_v3(), ME_TEXSPACE_FLAG_AUTO, ME_TEXSPACE_FLAG_AUTO_EVALUATED, and mid_v3_v3v3().
Referenced by BKE_mesh_eval_geometry(), BKE_mesh_texspace_ensure(), and mesh_copy_texture_space_from_curve_type().
| void BKE_mesh_texspace_ensure | ( | Mesh * | mesh | ) |
Definition at line 1483 of file blenkernel/intern/mesh.cc.
References BKE_mesh_texspace_calc(), ME_TEXSPACE_FLAG_AUTO, and ME_TEXSPACE_FLAG_AUTO_EVALUATED.
Referenced by BKE_mesh_texspace_get(), BKE_mesh_texspace_get_reference(), blender::draw::overlay::Bounds::object_sync(), psys_get_texture(), and psys_thread_context_init_distribute().
Definition at line 1492 of file blenkernel/intern/mesh.cc.
References BKE_mesh_texspace_ensure(), and copy_v3_v3().
Referenced by BKE_mesh_orco_verts_transform(), create_mesh(), blender::draw::drw_volume_object_mesh_init(), mesh_texture_space(), ObjectInfos::sync(), and blender::io::hydra::VolumeModifierData::write_transform().
| void BKE_mesh_texspace_get_reference | ( | Mesh * | mesh, |
| char ** | r_texspace_flag, | ||
| float ** | r_texspace_location, | ||
| float ** | r_texspace_size ) |
Definition at line 1504 of file blenkernel/intern/mesh.cc.
References BKE_mesh_texspace_ensure().
Referenced by BKE_object_obdata_texspace_get().
| BMesh * BKE_mesh_to_bmesh | ( | Mesh * | mesh, |
| int | active_shapekey, | ||
| bool | add_key_index, | ||
| const BMeshCreateParams * | params ) |
| active_shapekey | See BMeshFromMeshParams::active_shapekey. |
| add_key_index | See BMeshFromMeshParams::add_key_index. |
Definition at line 1393 of file blenkernel/intern/mesh.cc.
References BMeshFromMeshParams::active_shapekey, BMeshFromMeshParams::add_key_index, BKE_mesh_to_bmesh_ex(), BMeshFromMeshParams::calc_face_normal, BMeshFromMeshParams::calc_vert_normal, params, and BMeshFromMeshParams::use_shapekey.
Referenced by EDBM_mesh_make_from_mesh(), and blender::bke::tests::ArmatureDeformTestBase::edit_mesh_test().
| BMesh * BKE_mesh_to_bmesh_ex | ( | const Mesh * | mesh, |
| const BMeshCreateParams * | create_params, | ||
| const BMeshFromMeshParams * | convert_params ) |
Definition at line 1381 of file blenkernel/intern/mesh.cc.
References bm, BM_mesh_bm_from_me(), BM_mesh_create(), and BMALLOC_TEMPLATE_FROM_ME.
Referenced by BKE_mesh_mirror_apply_mirror_on_axis(), BKE_mesh_mirror_bisect_on_mirror_plane_for_modifier(), BKE_mesh_to_bmesh(), blender::io::ply::do_triangulation(), blender::io::alembic::ABCGenericMeshWriter::do_write(), blender::io::usd::USDGenericMeshWriter::do_write(), doEdgeSplit(), modify_mesh(), modify_mesh(), triangulate_mesh(), and WireframeModifier_do().
Definition at line 505 of file mesh_convert.cc.
References BKE_curve_add(), BKE_mesh_to_curve_nurblist(), BKE_object_free_derived_caches(), BKE_object_get_evaluated_mesh_no_subsurf(), CU_3D, Object::data, DEG_get_evaluated(), depsgraph, ListBase::first, Curve::flag, Object::id, id_us_min(), ID::name, Curve::nurb, OB_CURVES_LEGACY, and Object::type.
Referenced by blender::ed::object::convert_mesh_to_curves_legacy().
Definition at line 373 of file mesh_convert.cc.
References appendPolyLineVert(), BLI_addtail(), BLI_freelinkN(), BLI_freelistN(), Nurb::bp, copy_v3_v3(), CU_NURB_CYCLIC, CU_NURB_ENDPOINT, EdgeLink::edge, BPoint::f1, ListBase::first, Nurb::flagu, i, VertLink::index, blender::offset_indices::OffsetIndices< T >::index_range(), blender::Span< T >::index_range(), ListBase::last, MEM_calloc_arrayN(), MEM_callocN(), MEM_freeN(), VertLink::next, Nurb::orderu, Nurb::pntsu, Nurb::pntsv, prependPolyLineVert(), EdgeLink::prev, BPoint::radius, Nurb::resolu, SELECT, blender::Span< T >::size(), blender::Span< T >::slice(), BPoint::vec, and BPoint::weight.
Referenced by BKE_mesh_to_curve(), and knifeproject_poly_from_object().
Definition at line 535 of file mesh_convert.cc.
References Geometry::attributes, BKE_id_materials_copy(), BKE_object_free_derived_caches(), BKE_object_get_evaluated_mesh(), BKE_pointcloud_add(), BLI_assert, copy_attributes(), Object::data, DEG_get_evaluated(), depsgraph, Object::id, id_us_min(), ID::name, OB_MESH, OB_POINTCLOUD, blender::bke::Point, PointCloud::totpoint, Object::type, and Mesh::verts_num.
Referenced by blender::ed::object::convert_mesh_to_pointcloud().
| bool BKE_mesh_validate | ( | Mesh * | mesh, |
| bool | do_verbose, | ||
| bool | cddata_check_mask ) |
Validates and corrects a Mesh.
Definition at line 1023 of file mesh_validate.cc.
References BKE_mesh_runtime_clear_cache(), BKE_mesh_validate_all_customdata(), BKE_mesh_validate_arrays(), CD_MDEFORMVERT, CD_MFACE, CLOG_INFO, CustomData_get_layer_for_write(), blender::MutableSpan< T >::data(), blender::Span< T >::data(), DEG_id_tag_update(), ID_RECALC_GEOMETRY_ALL_MODES, LOG, blender::MutableSpan< T >::size(), and blender::Span< T >::size().
Referenced by blender::io::ply::convert_ply_to_mesh(), blender::io::obj::MeshFromGeometry::create_mesh(), Freestyle::BlenderStrokeRenderer::GenerateStrokeMesh(), blender::io::fbx::import_meshes(), blender::io::alembic::read_mpolys(), blender::io::stl::read_stl_file(), blender::io::alembic::AbcMeshReader::readObjectData(), and blender::io::alembic::AbcSubDReader::readObjectData().
| bool BKE_mesh_validate_all_customdata | ( | CustomData * | vert_data, |
| uint | verts_num, | ||
| CustomData * | edge_data, | ||
| uint | edges_num, | ||
| CustomData * | corner_data, | ||
| uint | corners_num, | ||
| CustomData * | face_data, | ||
| uint | faces_num, | ||
| bool | check_meshmask, | ||
| bool | do_verbose, | ||
| bool | do_fixes, | ||
| bool * | r_change ) |
Definition at line 970 of file mesh_validate.cc.
References CD_MASK_MESH, CD_PROP_FLOAT2, CustomData_get_clone_layer(), CustomData_get_stencil_layer(), CustomData_number_of_layers(), CustomData_set_layer_clone(), CustomData_set_layer_stencil(), mask(), MAX_MTFACE, mesh_validate_customdata(), and PRINT_ERR.
Referenced by BKE_mesh_is_valid(), BKE_mesh_runtime_is_valid(), and BKE_mesh_validate().
| bool BKE_mesh_validate_arrays | ( | Mesh * | mesh, |
| float(*) | vert_positions[3], | ||
| unsigned int | verts_num, | ||
| blender::int2 * | edges, | ||
| unsigned int | edges_num, | ||
| MFace * | legacy_faces, | ||
| unsigned int | legacy_faces_num, | ||
| const int * | corner_verts, | ||
| int * | corner_edges, | ||
| unsigned int | corners_num, | ||
| const int * | face_offsets, | ||
| unsigned int | faces_num, | ||
| MDeformVert * | dverts, | ||
| bool | do_verbose, | ||
| bool | do_fixes, | ||
| bool * | r_change ) |
Validate the mesh, do_fixes requires mesh to be non-null.
Definition at line 163 of file mesh_validate.cc.
References Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::add(), b, Array< T, InlineBufferCapacity, Allocator >::begin(), BKE_defvert_remove_group(), BKE_mesh_strip_loose_faces(), BLI_assert, CHECK_FACE_EDGE, CHECK_FACE_VERT_INDEX, CLAMP, BitVector< InlineBufferCapacity, Allocator >::clear_and_shrink(), Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::contains(), SortFace::corner_start, Array< T, InlineBufferCapacity, Allocator >::data(), MDeformWeight::def_nr, MDeformVert::dw, edge_store_from_mface_quad(), edge_store_from_mface_tri(), Array< T, InlineBufferCapacity, Allocator >::end(), SortFaceLegacy::es, faces, blender::bke::AttributeWriter< T >::finish(), i, MSelect::index, SortFace::index, SortFaceLegacy::index, SortFace::invalid, IS_REMOVED_EDGE, Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::lookup(), ME_ESEL, ME_FSEL, ME_VSEL, MEM_freeN(), blender::bke::mesh_calc_edges(), mesh_strip_edges(), SortFace::numverts, blender::parallel_sort(), PRINT_ERR, PRINT_MSG, REMOVE_CORNER_TAG, REMOVE_EDGE_TAG, REMOVE_FACE_TAG, Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::reserve(), search_face_cmp(), search_face_corner_cmp(), search_legacy_face_cmp(), Array< T, InlineBufferCapacity, Allocator >::size(), strip_loose_faces_corners(), MSelect::type, v, MFace::v1, MFace::v2, v2, MFace::v3, MFace::v4, blender::bke::AttributeWriter< T >::varray, SortFace::verts, verts, MDeformWeight::weight, and zero_v3().
Referenced by BKE_mesh_is_valid(), BKE_mesh_runtime_is_valid(), BKE_mesh_validate(), and blo_do_versions_290().
| bool BKE_mesh_validate_material_indices | ( | Mesh * | mesh | ) |
Check all material indices of faces are valid, invalid ones are set to 0.
Definition at line 1131 of file mesh_validate.cc.
References DEG_id_tag_update(), blender::bke::AttributeWriter< T >::finish(), i, ID_RECALC_GEOMETRY_ALL_MODES, max_ii(), and blender::bke::AttributeWriter< T >::varray.
| bool BKE_mesh_vert_normals_are_dirty | ( | const Mesh * | mesh | ) |
Return true if the mesh vertex normals either are not stored or are dirty.
Definition at line 96 of file mesh_normals.cc.
References Mesh::runtime.
Referenced by arrayModifier_doArray().
Definition at line 566 of file mesh_convert.cc.
References BKE_id_materials_copy(), BKE_mesh_add(), BKE_object_free_derived_caches(), BLI_assert, copy_attributes(), Object::data, DEG_get_evaluated(), depsgraph, Object::id, id_us_min(), ID::name, OB_MESH, OB_POINTCLOUD, blender::bke::object_get_evaluated_geometry_set(), blender::bke::Point, and Object::type.
Referenced by blender::ed::object::convert_pointcloud_to_mesh().
|
extern |
Definition at line 447 of file mesh_runtime.cc.
Referenced by BKE_mesh_batch_cache_dirty_tag(), and DRW_module_init().
|
extern |
Definition at line 448 of file mesh_runtime.cc.
Referenced by BKE_mesh_batch_cache_free(), and DRW_module_init().