Blender V4.3
Mesh Class Reference

#include <DNA_mesh_types.h>

Inherits Geometry.

Inherited by Volume.

Classes

struct  SubdEdgeCrease
 
struct  SubdFace
 
struct  Triangle
 

Public Types

enum  SubdivisionType { SUBDIVISION_NONE , SUBDIVISION_LINEAR , SUBDIVISION_CATMULL_CLARK }
 
- Public Types inherited from Geometry
enum  Type { MESH , HAIR , VOLUME , POINTCLOUD }
 

Public Member Functions

Triangle get_triangle (size_t i) const
 
size_t num_triangles () const
 
SubdEdgeCrease get_subd_crease (size_t i) const
 
bool need_tesselation ()
 
 Mesh ()
 
 ~Mesh ()
 
void resize_mesh (int numverts, int numfaces)
 
void reserve_mesh (int numverts, int numfaces)
 
void resize_subd_faces (int numfaces, int num_ngons, int numcorners)
 
void reserve_subd_faces (int numfaces, int num_ngons, int numcorners)
 
void reserve_subd_creases (size_t num_creases)
 
void clear_non_sockets ()
 
void clear (bool preserve_shaders=false) override
 
void add_vertex (float3 P)
 
void add_vertex_slow (float3 P)
 
void add_triangle (int v0, int v1, int v2, int shader, bool smooth)
 
void add_subd_face (const int *corners, int num_corners, int shader_, bool smooth_)
 
void add_edge_crease (int v0, int v1, float weight)
 
void add_vertex_crease (int v, float weight)
 
void copy_center_to_motion_step (const int motion_step)
 
void compute_bounds () override
 
void apply_transform (const Transform &tfm, const bool apply_to_motion) override
 
void add_face_normals ()
 
void add_vertex_normals ()
 
void add_undisplaced ()
 
void get_uv_tiles (ustring map, unordered_set< int > &tiles) override
 
void pack_shaders (Scene *scene, uint *shader)
 
void pack_normals (packed_float3 *vnormal)
 
void pack_verts (packed_float3 *tri_verts, packed_uint3 *tri_vindex, uint *tri_patch, float2 *tri_patch_uv)
 
void pack_patches (uint *patch_data)
 
PrimitiveType primitive_type () const override
 
void tessellate (DiagSplit *split)
 
SubdFace get_subd_face (size_t index) const
 
SubdParamsget_subd_params ()
 
size_t get_num_subd_faces () const
 
void set_num_subd_faces (size_t num_subd_faces_)
 
size_t get_num_subd_verts ()
 
- Public Member Functions inherited from Geometry
 Geometry (const NodeType *node_type, const Type type)
 
virtual ~Geometry ()
 
bool need_attribute (Scene *scene, AttributeStandard std)
 
bool need_attribute (Scene *scene, ustring name)
 
AttributeRequestSet needed_attributes ()
 
float motion_time (int step) const
 
int motion_step (float time) const
 
void compute_bvh (Device *device, DeviceScene *dscene, SceneParams *params, Progress *progress, size_t n, size_t total)
 
bool need_build_bvh (BVHLayout layout) const
 
bool is_instanced () const
 
bool has_true_displacement () const
 
bool has_motion_blur () const
 
bool has_voxel_attributes () const
 
bool is_mesh () const
 
bool is_hair () const
 
bool is_pointcloud () const
 
bool is_volume () const
 
void tag_update (Scene *scene, bool rebuild)
 
void tag_bvh_update (bool rebuild)
 
- Public Member Functions inherited from Node
 Node (const NodeType *type, ustring name=ustring())
 
virtual ~Node ()=0
 
void set (const SocketType &input, bool value)
 
void set (const SocketType &input, int value)
 
void set (const SocketType &input, uint value)
 
void set (const SocketType &input, uint64_t value)
 
void set (const SocketType &input, float value)
 
void set (const SocketType &input, float2 value)
 
void set (const SocketType &input, float3 value)
 
void set (const SocketType &input, const char *value)
 
void set (const SocketType &input, ustring value)
 
void set (const SocketType &input, const Transform &value)
 
void set (const SocketType &input, Node *value)
 
template<class ValueType , std::enable_if_t< std::is_enum_v< ValueType >, bool > = true>
void set (const SocketType &input, const ValueType &value)
 
void set (const SocketType &input, array< bool > &value)
 
void set (const SocketType &input, array< int > &value)
 
void set (const SocketType &input, array< float > &value)
 
void set (const SocketType &input, array< float2 > &value)
 
void set (const SocketType &input, array< float3 > &value)
 
void set (const SocketType &input, array< ustring > &value)
 
void set (const SocketType &input, array< Transform > &value)
 
void set (const SocketType &input, array< Node * > &value)
 
bool get_bool (const SocketType &input) const
 
int get_int (const SocketType &input) const
 
uint get_uint (const SocketType &input) const
 
uint64_t get_uint64 (const SocketType &input) const
 
float get_float (const SocketType &input) const
 
float2 get_float2 (const SocketType &input) const
 
float3 get_float3 (const SocketType &input) const
 
ustring get_string (const SocketType &input) const
 
Transform get_transform (const SocketType &input) const
 
Nodeget_node (const SocketType &input) const
 
const array< bool > & get_bool_array (const SocketType &input) const
 
const array< int > & get_int_array (const SocketType &input) const
 
const array< float > & get_float_array (const SocketType &input) const
 
const array< float2 > & get_float2_array (const SocketType &input) const
 
const array< float3 > & get_float3_array (const SocketType &input) const
 
const array< ustring > & get_string_array (const SocketType &input) const
 
const array< Transform > & get_transform_array (const SocketType &input) const
 
const array< Node * > & get_node_array (const SocketType &input) const
 
bool has_default_value (const SocketType &input) const
 
void set_default_value (const SocketType &input)
 
bool equals_value (const Node &other, const SocketType &input) const
 
void copy_value (const SocketType &input, const Node &other, const SocketType &other_input)
 
void set_value (const SocketType &input, const Node &other, const SocketType &other_input)
 
bool equals (const Node &other) const
 
void hash (MD5Hash &md5)
 
size_t get_total_size_in_bytes () const
 
bool is_a (const NodeType *type)
 
bool socket_is_modified (const SocketType &input) const
 
bool is_modified () const
 
void tag_modified ()
 
void clear_modified ()
 
void print_modified_sockets () const
 
const NodeOwnerget_owner () const
 
void set_owner (const NodeOwner *owner_)
 
int reference_count () const
 
void reference ()
 
void dereference ()
 
void clear_reference_count ()
 

Public Attributes

ID id
 
struct AnimDataadt
 
struct Ipo *ipo DNA_DEPRECATED
 
struct Keykey
 
struct Material ** mat
 
int verts_num
 
int edges_num
 
int faces_num
 
int corners_num
 
intface_offset_indices
 
CustomData vert_data
 
CustomData edge_data
 
CustomData face_data
 
CustomData corner_data
 
ListBase vertex_group_names
 
int vertex_group_active_index
 
int attributes_active_index
 
struct MSelectmselect
 
int totselect
 
int act_face
 
struct Meshtexcomesh
 
float texspace_location [3]
 
float texspace_size [3]
 
char texspace_flag
 
char editflag
 
uint16_t flag
 
float smoothresh_legacy DNA_DEPRECATED
 
float remesh_voxel_size
 
float remesh_voxel_adaptivity
 
int face_sets_color_seed
 
int face_sets_color_default
 
char * active_color_attribute
 
char * default_color_attribute
 
char symmetry
 
char remesh_mode
 
short totcol
 
char cd_flag DNA_DEPRECATED
 
char subdiv DNA_DEPRECATED
 
char subdivr DNA_DEPRECATED
 
char subsurftype DNA_DEPRECATED
 
struct MPoly *mpoly DNA_DEPRECATED
 
struct MLoop *mloop DNA_DEPRECATED
 
struct MVert *mvert DNA_DEPRECATED
 
struct MEdge *medge DNA_DEPRECATED
 
struct MDeformVert *dvert DNA_DEPRECATED
 
struct MTFace *mtface DNA_DEPRECATED
 
struct TFace *tface DNA_DEPRECATED
 
struct MCol *mcol DNA_DEPRECATED
 
struct MFace *mface DNA_DEPRECATED
 
CustomData fdata_legacy
 
int totface_legacy
 
char _pad1 [4]
 
MeshRuntimeHandleruntime
 
AttributeSet subd_attributes
 
- Public Attributes inherited from Geometry
Type geometry_type
 
AttributeSet attributes
 
BoundBox bounds
 
bool transform_applied
 
bool transform_negative_scaled
 
Transform transform_normal
 
BVHbvh
 
size_t attr_map_offset
 
size_t prim_offset
 
bool has_volume
 
bool has_surface_bssrdf
 
bool need_update_rebuild
 
bool need_update_bvh_for_offset
 
size_t index
 
- Public Attributes inherited from Node
ustring name
 
const NodeTypetype
 
InternalNode internal
 
LeafNode leaf
 

Protected Member Functions

 Mesh (const NodeType *node_type_, Type geom_type_)
 
void clear (bool preserve_shaders, bool preserve_voxel_data)
 
- Protected Member Functions inherited from Node
template<typename T >
void set_if_different (const SocketType &input, T value)
 
void set_if_different (const SocketType &input, Node *value)
 
template<typename T >
void set_if_different (const SocketType &input, array< T > &value)
 
void set_if_different (const SocketType &input, array< Node * > &value)
 
void dereference_all_used_nodes ()
 

Friends

class BVH2
 
class BVHBuild
 
class BVHSpatialSplit
 
class DiagSplit
 
class EdgeDice
 
class GeometryManager
 
class ObjectManager
 

Additional Inherited Members

- Static Public Attributes inherited from Geometry
static const uint MAX_MOTION_STEPS = 129
 
- Static Protected Member Functions inherited from Node
template<typename T >
static Tget_socket_value (const Node *node, const SocketType &socket)
 
- Protected Attributes inherited from Node
const NodeOwnerowner
 
int ref_count {0}
 
SocketModifiedFlags socket_modified
 

Detailed Description

Definition at line 56 of file DNA_mesh_types.h.

Member Enumeration Documentation

◆ SubdivisionType

Enumerator
SUBDIVISION_NONE 
SUBDIVISION_LINEAR 
SUBDIVISION_CATMULL_CLARK 

Definition at line 120 of file scene/mesh.h.

Constructor & Destructor Documentation

◆ Mesh() [1/2]

Mesh::Mesh ( const NodeType * node_type_,
Type geom_type_ )
protected

Definition at line 176 of file scene/mesh.cpp.

References NULL, and SUBDIVISION_NONE.

◆ Mesh() [2/2]

Mesh::Mesh ( )

Definition at line 196 of file scene/mesh.cpp.

◆ ~Mesh()

Mesh::~Mesh ( )

Definition at line 198 of file scene/mesh.cpp.

Member Function Documentation

◆ add_edge_crease()

void Mesh::add_edge_crease ( int v0,
int v1,
float weight )

Definition at line 400 of file scene/mesh.cpp.

◆ add_face_normals()

◆ add_subd_face()

void Mesh::add_subd_face ( const int * corners,
int num_corners,
int shader_,
bool smooth_ )

Definition at line 359 of file scene/mesh.cpp.

References get_subd_face().

◆ add_triangle()

void Mesh::add_triangle ( int v0,
int v1,
int v2,
int shader,
bool smooth )

Definition at line 341 of file scene/mesh.cpp.

References get_num_subd_faces(), and v2.

Referenced by EdgeDice::add_triangle().

◆ add_undisplaced()

◆ add_vertex()

void Mesh::add_vertex ( float3 P)

Definition at line 319 of file scene/mesh.cpp.

References get_num_subd_faces(), P, verts, and zero_float2().

◆ add_vertex_crease()

void Mesh::add_vertex_crease ( int v,
float weight )

Definition at line 411 of file scene/mesh.cpp.

References v.

◆ add_vertex_normals()

◆ add_vertex_slow()

void Mesh::add_vertex_slow ( float3 P)

Definition at line 330 of file scene/mesh.cpp.

References get_num_subd_faces(), P, verts, and zero_float2().

◆ apply_transform()

void Mesh::apply_transform ( const Transform & tfm,
const bool apply_to_motion )
overridevirtual

◆ clear() [1/2]

void Mesh::clear ( bool preserve_shaders,
bool preserve_voxel_data )
protected

◆ clear() [2/2]

void Mesh::clear ( bool preserve_shaders = false)
overridevirtual

Reimplemented from Geometry.

Reimplemented in Volume.

Definition at line 314 of file scene/mesh.cpp.

References clear().

Referenced by clear(), and Volume::clear().

◆ clear_non_sockets()

void Mesh::clear_non_sockets ( )

Definition at line 269 of file scene/mesh.cpp.

References Geometry::clear(), and NULL.

Referenced by clear().

◆ compute_bounds()

◆ copy_center_to_motion_step()

void Mesh::copy_center_to_motion_step ( const int motion_step)

◆ get_num_subd_faces()

size_t Mesh::get_num_subd_faces ( ) const
inline

◆ get_num_subd_verts()

size_t Mesh::get_num_subd_verts ( )
inline

Definition at line 243 of file scene/mesh.h.

Referenced by Attribute::element_size().

◆ get_subd_crease()

SubdEdgeCrease Mesh::get_subd_crease ( size_t i) const
inline

Definition at line 109 of file scene/mesh.h.

References Mesh::SubdEdgeCrease::v.

◆ get_subd_face()

Mesh::SubdFace Mesh::get_subd_face ( size_t index) const

◆ get_subd_params()

SubdParams * Mesh::get_subd_params ( )

◆ get_triangle()

Triangle Mesh::get_triangle ( size_t i) const
inline

Definition at line 74 of file scene/mesh.h.

Referenced by add_face_normals(), and add_vertex_normals().

◆ get_uv_tiles()

void Mesh::get_uv_tiles ( ustring map,
unordered_set< int > & tiles )
overridevirtual

◆ need_tesselation()

bool Mesh::need_tesselation ( )

Definition at line 170 of file scene/mesh.cpp.

References get_subd_params().

◆ num_triangles()

◆ pack_normals()

◆ pack_patches()

void Mesh::pack_patches ( uint * patch_data)

Definition at line 799 of file scene/mesh.cpp.

References get_num_subd_faces(), get_subd_face(), mod(), and verts.

Referenced by GeometryManager::device_update_mesh().

◆ pack_shaders()

void Mesh::pack_shaders ( Scene * scene,
uint * shader )

Definition at line 708 of file scene/mesh.cpp.

References num_triangles().

Referenced by GeometryManager::device_update_mesh().

◆ pack_verts()

void Mesh::pack_verts ( packed_float3 * tri_verts,
packed_uint3 * tri_vindex,
uint * tri_patch,
float2 * tri_patch_uv )

Definition at line 761 of file scene/mesh.cpp.

References get_num_subd_faces(), make_packed_uint3(), num_triangles(), and verts.

◆ primitive_type()

PrimitiveType Mesh::primitive_type ( ) const
overridevirtual

Implements Geometry.

Definition at line 845 of file scene/mesh.cpp.

References Geometry::has_motion_blur(), PRIMITIVE_MOTION_TRIANGLE, and PRIMITIVE_TRIANGLE.

◆ reserve_mesh()

void Mesh::reserve_mesh ( int numverts,
int numfaces )

Definition at line 219 of file scene/mesh.cpp.

References get_num_subd_faces(), and verts.

◆ reserve_subd_creases()

void Mesh::reserve_subd_creases ( size_t num_creases)

Definition at line 263 of file scene/mesh.cpp.

◆ reserve_subd_faces()

void Mesh::reserve_subd_faces ( int numfaces,
int num_ngons,
int numcorners )

Definition at line 249 of file scene/mesh.cpp.

References AttributeSet::resize(), and subd_attributes.

◆ resize_mesh()

void Mesh::resize_mesh ( int numverts,
int numfaces )

Definition at line 204 of file scene/mesh.cpp.

References get_num_subd_faces(), and verts.

◆ resize_subd_faces()

void Mesh::resize_subd_faces ( int numfaces,
int num_ngons,
int numcorners )

Definition at line 235 of file scene/mesh.cpp.

References AttributeSet::resize(), and subd_attributes.

◆ set_num_subd_faces()

void Mesh::set_num_subd_faces ( size_t num_subd_faces_)
inline

Definition at line 238 of file scene/mesh.h.

◆ tessellate()

Friends And Related Symbol Documentation

◆ BVH2

friend class BVH2
friend

Definition at line 178 of file scene/mesh.h.

◆ BVHBuild

friend class BVHBuild
friend

Definition at line 179 of file scene/mesh.h.

◆ BVHSpatialSplit

friend class BVHSpatialSplit
friend

Definition at line 180 of file scene/mesh.h.

◆ DiagSplit

friend class DiagSplit
friend

Definition at line 181 of file scene/mesh.h.

◆ EdgeDice

friend class EdgeDice
friend

Definition at line 182 of file scene/mesh.h.

◆ GeometryManager

friend class GeometryManager
friend

Definition at line 183 of file scene/mesh.h.

◆ ObjectManager

friend class ObjectManager
friend

Definition at line 184 of file scene/mesh.h.

Member Data Documentation

◆ _pad1

char Mesh::_pad1[4]

Definition at line 220 of file DNA_mesh_types.h.

◆ act_face

int Mesh::act_face

In most cases the last selected element (see mselect) represents the active element. For faces we make an exception and store the active face separately so it can be active even when no faces are selected. This is done to prevent flickering in the material properties and UV Editor which base the content they display on the current material which is controlled by the active face.

Note
This is mainly stored for use in edit-mode.

Definition at line 133 of file DNA_mesh_types.h.

◆ active_color_attribute

◆ adt

struct AnimData* Mesh::adt

Animation data (must be immediately after id for utilities to use it).

Definition at line 61 of file DNA_mesh_types.h.

Referenced by blender::ed::outliner::TreeElementIDMesh::expand().

◆ attributes_active_index

int Mesh::attributes_active_index

The index of the active attribute in the UI. The attribute list is a combination of the generic type attributes from vertex, edge, face, and corner custom data.

Set to -1 when none is active.

Definition at line 110 of file DNA_mesh_types.h.

Referenced by BKE_attributes_active_index_p(), and BKE_mesh_copy_parameters().

◆ corner_data

CustomData Mesh::corner_data

Definition at line 94 of file DNA_mesh_types.h.

Referenced by add_interpolated_faces_to_new_mesh(), BKE_mesh_calc_loop_tangents(), BKE_mesh_new_nomain_from_template_ex(), BKE_mesh_nomain_to_mesh(), BKE_mesh_runtime_is_valid(), BM_mesh_copy_init_customdata_from_mesh_array(), bmo_get_loop_color_ref(), context_init_grid_pointers(), copy_ccg_data(), copy_masked_faces_to_new_mesh(), data_transfer_dtdata_type_postprocess(), data_transfer_layersmapping_generate(), blender::draw::draw_subdiv_create_requested_buffers(), blender::ed::object::dt_layers_select_src_itemf(), blender::geometry::execute_realize_mesh_tasks(), blender::draw::extract_edituv_stretch_angle_subdiv(), blender::draw::extract_tan_init_common(), blender::draw::extract_uv_maps(), blender::draw::extract_uv_maps_subdiv(), imapaint_pick_uv(), make_duplis_faces(), mesh_calc_tri_tessface(), mesh_copy_data(), mesh_merge_transform(), mesh_wrapper_ensure_subdivision(), multires_create_grids_in_unsubdivided_base_mesh(), multires_subdivide_create_tangent_displacement_linear_grids(), multiresModifier_subdivide_to_level(), blender::ed::object::object_curves_empty_hair_add_exec(), paint_sample_color(), blender::draw::particle_batch_cache_ensure_pos_and_seg(), blender::draw::particle_batch_cache_ensure_procedural_strand_data(), proj_paint_layer_clone_init(), proj_paint_state_mesh_eval_init(), project_paint_begin(), project_paint_clone_face_skip(), project_paint_prepare_all_faces(), blender::bke::subdiv::subdiv_interpolate_corner_data(), blender::bke::subdiv::subdiv_mesh_ctx_cache_custom_data_layers(), blender::bke::subdiv::subdiv_mesh_ctx_cache_uv_layers(), blender::bke::subdiv::subdiv_mesh_topology_info(), and blender::ed::curves::surface_set::surface_set_exec().

◆ corners_num

int Mesh::corners_num

The number of face corners in the mesh, and the size of corner_data.

Definition at line 81 of file DNA_mesh_types.h.

Referenced by arrayModifier_doArray(), blender::ed::object::bake(), blender::ed::object::bake_targets_populate_pixels_color_attributes(), BKE_mesh_calc_loop_tangents(), BKE_mesh_new_nomain_from_template_ex(), BKE_mesh_nomain_to_mesh(), BKE_mesh_remap_calc_loops_from_mesh(), BKE_mesh_runtime_is_valid(), BKE_object_data_transfer_ex(), BKE_object_data_transfer_layout(), blender::bke::compare_meshes::compare_meshes(), context_init_grid_pointers(), copy_ccg_data(), data_transfer_dtdata_type_postprocess(), data_transfer_layersmapping_generate(), do_multires_bake(), blender::geometry::execute_realize_mesh_tasks(), blender::draw::extract_attributes_subdiv(), blender::draw::extract_positions_subdiv(), imapaint_pick_uv(), mesh_copy_data(), blender::geometry::mesh_copy_selection(), blender::geometry::mesh_copy_selection_keep_edges(), blender::geometry::mesh_copy_selection_keep_verts(), blender::bke::mesh_remesh_reproject_attributes(), multires_create_grids_in_unsubdivided_base_mesh(), multires_do_versions_simple_to_catmull_clark(), multires_subdivide_create_tangent_displacement_linear_grids(), multires_unsubdivide_extract_grids(), multiresModifier_subdivide_to_level(), proj_paint_state_mesh_eval_init(), blender::io::alembic::AbcMeshReader::read_mesh(), sculpt_update_object(), stats_mesheval(), blender::bke::subdiv::subdiv_mesh_context_free(), blender::bke::subdiv::subdiv_mesh_ctx_cache_custom_data_layers(), blender::bke::subdiv::subdiv_mesh_ctx_cache_uv_layers(), blender::bke::subdiv::subdiv_mesh_topology_info(), blender::io::alembic::AbcMeshReader::topology_changed(), blender::io::usd::USDMeshReader::topology_changed(), and MeshImporter::write_geometry().

◆ default_color_attribute

◆ DNA_DEPRECATED [1/15]

struct Ipo* ipo Mesh::DNA_DEPRECATED

Old animation system, deprecated for 2.5.

Definition at line 64 of file DNA_mesh_types.h.

◆ DNA_DEPRECATED [2/15]

float smoothresh_legacy Mesh::DNA_DEPRECATED

Definition at line 152 of file DNA_mesh_types.h.

◆ DNA_DEPRECATED [3/15]

char cd_flag Mesh::DNA_DEPRECATED

Deprecated flag for choosing whether to store specific custom data that was built into Mesh structs in edit mode. Replaced by separating that data to separate layers. Kept for forward and backwards compatibility.

Definition at line 185 of file DNA_mesh_types.h.

◆ DNA_DEPRECATED [4/15]

char subdiv Mesh::DNA_DEPRECATED

Definition at line 186 of file DNA_mesh_types.h.

◆ DNA_DEPRECATED [5/15]

char subdivr Mesh::DNA_DEPRECATED

Definition at line 187 of file DNA_mesh_types.h.

◆ DNA_DEPRECATED [6/15]

char subsurftype Mesh::DNA_DEPRECATED

Definition at line 188 of file DNA_mesh_types.h.

◆ DNA_DEPRECATED [7/15]

struct MPoly* mpoly Mesh::DNA_DEPRECATED

Deprecated pointer to mesh polygons, kept for forward compatibility.

Definition at line 191 of file DNA_mesh_types.h.

◆ DNA_DEPRECATED [8/15]

struct MLoop* mloop Mesh::DNA_DEPRECATED

Deprecated pointer to face corners, kept for forward compatibility.

Definition at line 193 of file DNA_mesh_types.h.

◆ DNA_DEPRECATED [9/15]

struct MVert* mvert Mesh::DNA_DEPRECATED

Deprecated array of mesh vertices, kept for reading old files, now stored in CustomData.

Definition at line 196 of file DNA_mesh_types.h.

◆ DNA_DEPRECATED [10/15]

struct MEdge* medge Mesh::DNA_DEPRECATED

Deprecated array of mesh edges, kept for reading old files, now stored in CustomData.

Definition at line 198 of file DNA_mesh_types.h.

◆ DNA_DEPRECATED [11/15]

struct MDeformVert* dvert Mesh::DNA_DEPRECATED

Deprecated "Vertex group" data. Kept for reading old files, now stored in CustomData.

Definition at line 200 of file DNA_mesh_types.h.

◆ DNA_DEPRECATED [12/15]

struct MTFace* mtface Mesh::DNA_DEPRECATED

Deprecated runtime data for tessellation face UVs and texture, kept for reading old files.

Definition at line 202 of file DNA_mesh_types.h.

◆ DNA_DEPRECATED [13/15]

struct TFace* tface Mesh::DNA_DEPRECATED

Deprecated, use mtface.

Definition at line 204 of file DNA_mesh_types.h.

◆ DNA_DEPRECATED [14/15]

struct MCol* mcol Mesh::DNA_DEPRECATED

Deprecated array of colors for the tessellated faces, kept for reading old files.

Definition at line 206 of file DNA_mesh_types.h.

◆ DNA_DEPRECATED [15/15]

struct MFace* mface Mesh::DNA_DEPRECATED

Deprecated face storage (quads & triangles only). Kept for reading old files.

Definition at line 208 of file DNA_mesh_types.h.

◆ edge_data

◆ edges_num

◆ editflag

◆ face_data

◆ face_offset_indices

int* Mesh::face_offset_indices

Array owned by mesh. See #Mesh::faces() and #OffsetIndices.

This array is shared based on the bke::MeshRuntime::face_offsets_sharing_info. Avoid accessing directly when possible.

Definition at line 89 of file DNA_mesh_types.h.

Referenced by BKE_mesh_nomain_to_mesh(), and mesh_copy_data().

◆ face_sets_color_default

int Mesh::face_sets_color_default

◆ face_sets_color_seed

◆ faces_num

int Mesh::faces_num

The number of faces in the mesh, and the size of face_data.

Definition at line 79 of file DNA_mesh_types.h.

Referenced by blender::ed::sculpt_paint::trim::apply_trim(), arrayModifier_doArray(), blender::ed::object::bake(), blender::ed::object::bake_targets_populate_pixels_color_attributes(), BKE_mesh_new_nomain_from_template_ex(), BKE_mesh_nomain_to_mesh(), BKE_mesh_remap_calc_faces_from_mesh(), BKE_mesh_runtime_is_valid(), BKE_object_data_transfer_ex(), BKE_object_data_transfer_layout(), BKE_subdiv_to_ccg_mesh(), BMD_mesh_intersection(), blender::bke::compare_meshes::compare_meshes(), construct_param_handle_subsurfed(), context_init_lookup(), data_transfer_layersmapping_generate(), blender::bke::subdiv::deform_coarse_vertices(), deform_verts(), do_multires_bake(), blender::draw::draw_subdiv_build_cache(), blender::draw::draw_subdiv_cache_ensure_mat_offsets(), blender::draw::draw_subdiv_create_requested_buffers(), blender::ed::sculpt_paint::AddOperationExecutor::execute(), blender::ed::sculpt_paint::DensityAddOperationExecutor::execute(), blender::ed::sculpt_paint::SlideOperationExecutor::execute(), blender::geometry::execute_realize_mesh_tasks(), foreach_grid_coordinate(), blender::bke::subdiv::foreach_subdiv_geometry(), blender::bke::subdiv::get_num_faces(), get_quick_mesh(), lineart_object_load_single_instance(), make_duplis_faces(), mesh_copy_data(), blender::geometry::mesh_copy_selection(), blender::geometry::mesh_copy_selection_keep_edges(), blender::geometry::mesh_copy_selection_keep_verts(), blender::bke::mesh_remesh_reproject_attributes(), paintface_flush_flags(), blender::draw::particle_calculate_parent_mcol(), blender::draw::particle_calculate_parent_uvs(), proj_paint_state_mesh_eval_init(), raycastMesh(), blender::io::alembic::AbcMeshReader::read_mesh(), sculpt_update_object(), stats_mesheval(), blender::bke::subdiv::subdiv_foreach_ctx_count(), blender::bke::subdiv::subdiv_foreach_ctx_init(), blender::bke::subdiv::subdiv_foreach_ctx_init_offsets(), blender::bke::subdiv::subdiv_foreach_every_corner_vertices(), blender::bke::subdiv::subdiv_foreach_every_edge_vertices(), blender::bke::subdiv::subdiv_foreach_single_geometry_vertices(), blender::bke::subdiv::subdiv_mesh_ctx_cache_custom_data_layers(), blender::bke::subdiv::subdiv_to_mesh(), blender::io::alembic::AbcMeshReader::topology_changed(), blender::io::usd::USDMeshReader::topology_changed(), blender::io::obj::OBJMesh::tot_faces(), and blender::ed::curves::convert_to_particle_system::try_convert_single_object().

◆ fdata_legacy

◆ flag

uint16_t Mesh::flag

Mostly more flags used when editing or displaying the mesh.

Definition at line 150 of file DNA_mesh_types.h.

Referenced by BKE_mesh_copy_parameters(), blender::ed::object::single_obdata_user_make(), and blender::ed::sculpt_paint::undo::step_decode().

◆ id

ID Mesh::id

Definition at line 59 of file DNA_mesh_types.h.

Referenced by blender::ed::object::add_shapekey_layers(), blender::ed::object::bake(), BKE_mesh_assign_object(), BKE_mesh_copy_for_eval(), BKE_mesh_copy_parameters_for_eval(), BKE_mesh_new_from_object(), BKE_mesh_new_from_object_to_bmain(), BKE_mesh_nomain_to_mesh(), BKE_mesh_nomain_to_meshkey(), BKE_mesh_runtime_is_valid(), BKE_object_data_transfer_ex(), BKE_sculpt_color_layer_create_if_needed(), bmo_get_loop_color_ref(), cloth_build_springs(), MeshImporter::create_mesh_object(), curve_calc_modifiers_post(), blender::ed::object::data_transfer_exec_is_object_valid(), data_transfer_mesh_attributes_transfer_active_color_string(), data_transfer_mesh_attributes_transfer_default_color_string(), do_hair_dynamics(), blender::bke::editbmesh_build_data(), blender::geometry::execute_realize_mesh_tasks(), get_evaluated_object_data_with_materials(), get_quick_mesh(), lattice_deform_coords_impl(), mesh_blend_write(), blender::bke::mesh_build_data(), blender::bke::mesh_calc_finalize(), blender::bke::mesh_calc_modifiers(), mesh_copy_data(), mesh_new_from_mesh(), blender::bke::mesh_remesh_reproject_attributes(), mesh_undostep_reference_elems_from_objects(), mesh_undosys_step_encode(), MOD_lineart_gpencil_generate_v3(), blender::ed::object::modifier_apply_obdata(), modify_mesh(), nearest_world_mesh(), blender::ed::object::object_convert_exec(), raycastMesh(), blender::io::alembic::read_velocity(), blender::animrig::tests::KeyframingTest::SetUp(), snap_object_editmesh(), snapMesh(), blender::ed::geometry::store_result_geometry(), blender::bke::tests::TEST(), blender::bke::tests::TEST(), undomesh_from_editmesh(), and MeshImporter::write_geometry().

◆ key

◆ mat

struct Material** Mesh::mat

An array of materials, with length totcol. These can be overridden by material slots on Object. Indices in the "material_index" attribute control which material is used for every face.

Definition at line 72 of file DNA_mesh_types.h.

Referenced by blender::ed::object::bake_targets_output_external(), BKE_mesh_copy_parameters_for_eval(), BKE_mesh_new_from_object_to_bmain(), mesh_copy_data(), and modify_mesh().

◆ mselect

struct MSelect* Mesh::mselect

This array represents the selection order when the user manually picks elements in edit-mode, some tools take advantage of this information. All elements in this array are expected to be selected, see BKE_mesh_mselect_validate which ensures this. For procedurally created meshes, this is generally empty (selections are stored as boolean attributes in the corresponding custom data).

Definition at line 119 of file DNA_mesh_types.h.

Referenced by BKE_mesh_new_nomain_from_template_ex(), and mesh_copy_data().

◆ remesh_mode

char Mesh::remesh_mode

Choice between different remesh methods in the UI.

Definition at line 175 of file DNA_mesh_types.h.

Referenced by BKE_mesh_copy_parameters().

◆ remesh_voxel_adaptivity

float Mesh::remesh_voxel_adaptivity

Definition at line 156 of file DNA_mesh_types.h.

Referenced by BKE_mesh_copy_parameters().

◆ remesh_voxel_size

float Mesh::remesh_voxel_size

Per-mesh settings for voxel remesh.

Definition at line 155 of file DNA_mesh_types.h.

Referenced by BKE_mesh_copy_parameters(), and BKE_shrinkwrap_remesh_target_project().

◆ runtime

MeshRuntimeHandle* Mesh::runtime

Data that isn't saved in files, including caches of derived data, temporary data to improve the editing experience, etc. The struct is created when reading files and can be accessed without null checks, with the exception of some temporary meshes which should allocate and free the data if they are passed to functions that expect run-time data.

Definition at line 228 of file DNA_mesh_types.h.

Referenced by blender::ed::spreadsheet::GeometryDataSource::apply_selection_filter(), arrayModifier_doArray(), BKE_editmesh_vert_coords_when_deformed(), BKE_mesh_new_from_object(), BKE_mesh_nomain_to_mesh(), BKE_mesh_wrapper_ensure_mdata(), BKE_mesh_wrapper_ensure_subdivision(), BKE_object_get_pre_modified_mesh(), BKE_object_select_update(), brush_add(), brush_add_count_iter(), blender::draw::calc_face_visibility_mesh(), blender::draw::calc_mesh_edge_visibility(), blender::geometry::copy_loose_edge_hint(), copy_loose_edge_hint(), blender::geometry::copy_loose_vert_hint(), copy_loose_vert_hint(), data_for_snap(), deform_verts(), blender::draw::DRW_mesh_batch_cache_create_requested(), ED_mesh_get_edit_shape_key(), edbm_blend_from_shape_exec(), blender::bke::editbmesh_build_data(), blender::bke::editbmesh_calc_modifiers(), blender::bke::subdiv::evaluate_vertex_and_apply_displacement_copy(), blender::draw::extract_edge_factor_mesh(), blender::draw::extract_edituv_face_dots_mesh(), blender::draw::extract_face_dot_positions_mesh(), blender::bke::pbvh::face_normals_cache_eval(), give_parvert(), SnapCache_EditMesh::has_mesh_updated(), lineart_object_load_single_instance(), blender::draw::mesh_buffer_cache_create_requested(), blender::bke::mesh_build_data(), blender::bke::mesh_calc_finalize(), blender::bke::mesh_calc_modifiers(), mesh_copy_data(), blender::geometry::mesh_copy_selection_keep_edges(), blender::geometry::mesh_copy_selection_keep_verts(), mesh_data_from_duplicator_object(), blender::bke::mesh_get_mapped_verts_coords(), mesh_new_from_mesh_object(), blender::draw::mesh_render_data_loose_geom_mesh(), mesh_wrapper_ensure_subdivision(), blender::nodes::node_geo_deform_curves_on_surface_cc::node_geo_exec(), object_update_from_subsurf_ccg(), blender::bke::object::pbvh_ensure(), PE_mirror_x(), psys_calc_dmcache(), psys_particle_dm_face_lookup(), psys_thread_context_init_distribute(), remap_hair_emitter(), blender::ed::sculpt_paint::undo::restore_list(), blender::deg::ObjectRuntimeBackup::restore_to_object(), sculpt_update_object(), snap_object_data_editmesh_get(), stats_mesheval(), blender::bke::subdiv::subdiv_mesh_tag_center_vertex(), blender::bke::subdiv::subdiv_mesh_topology_info(), blender::bke::subdiv::subdiv_to_mesh(), undomesh_from_editmesh(), and blender::bke::pbvh::vert_normals_cache_eval().

◆ subd_attributes

◆ symmetry

char Mesh::symmetry

User-defined symmetry flag (eMeshSymmetryType) that causes editing operations to maintain symmetrical geometry. Supported by operations such as transform and weight-painting.

Definition at line 172 of file DNA_mesh_types.h.

Referenced by BKE_mesh_copy_parameters().

◆ texcomesh

struct Mesh* Mesh::texcomesh

An optional mesh owned elsewhere (by Main) that can be used to override the texture space #loc and #size.

Note
Vertex indices should be aligned for this to work usefully.

Definition at line 140 of file DNA_mesh_types.h.

Referenced by BKE_mesh_orco_verts_get().

◆ texspace_flag

char Mesh::texspace_flag

◆ texspace_location

float Mesh::texspace_location[3]

Texture space location and size, used for procedural coordinates when rendering.

Definition at line 143 of file DNA_mesh_types.h.

Referenced by BKE_mesh_copy_parameters(), and BKE_mesh_eval_geometry().

◆ texspace_size

float Mesh::texspace_size[3]

Definition at line 144 of file DNA_mesh_types.h.

Referenced by BKE_mesh_copy_parameters(), and BKE_mesh_eval_geometry().

◆ totcol

◆ totface_legacy

◆ totselect

int Mesh::totselect

The length of the mselect array.

Definition at line 122 of file DNA_mesh_types.h.

◆ vert_data

CustomData Mesh::vert_data

Definition at line 91 of file DNA_mesh_types.h.

Referenced by add_interp_verts_copy_edges_to_new_mesh(), blender::ed::object::add_shapekey_layers(), blender::ed::spreadsheet::GeometryDataSource::apply_selection_filter(), blender::ed::object::bake_targets_populate_pixels_color_attributes(), base_skin(), BKE_mesh_calc_loop_tangents(), BKE_mesh_new_nomain_from_template_ex(), BKE_mesh_nomain_to_mesh(), BKE_mesh_runtime_is_valid(), BKE_mesh_to_pointcloud(), BKE_object_as_kdtree(), BKE_object_data_transfer_ex(), BM_mesh_copy_init_customdata_from_mesh_array(), bmo_get_loop_color_ref(), construct_param_handle_subsurfed(), contarget_get_mesh_mat(), copy_masked_verts_to_new_mesh(), cutEdges(), data_transfer_layersmapping_generate(), blender::draw::draw_subdiv_topology_info_cb(), blender::draw::DRW_mesh_batch_cache_create_requested(), blender::ed::object::dt_layers_select_src_itemf(), ED_mesh_pick_face_vert(), explodeMesh(), blender::draw::extract_orco(), blender::draw::extract_tan_init_common(), give_parvert(), lattice_deform_coords_impl(), make_duplis_faces(), make_duplis_verts(), mesh_copy_data(), mesh_merge_transform(), multires_unsubdivide_extract_grids(), multires_unsubdivide_prepare_original_bmesh_for_extract(), blender::ed::object::object_convert_exec(), paintvert_flush_flags(), psys_calc_dmcache(), psys_particle_on_dm(), blender::bke::subdiv::subdiv_mesh_ctx_cache_custom_data_layers(), blender::bke::subdiv::subdiv_mesh_topology_info(), blender::bke::subdiv::subdiv_mesh_vertex_of_loose_edge_interpolate(), blender::bke::subdiv::subdiv_vertex_data_copy(), blender::bke::subdiv::subdiv_vertex_data_interpolate(), subdivide_base(), blender::bke::subdiv::vertex_interpolation_from_corner(), and blender::bke::subdiv::vertex_interpolation_init().

◆ vertex_group_active_index

int Mesh::vertex_group_active_index

The active index in the vertex_group_names list.

Definition at line 102 of file DNA_mesh_types.h.

Referenced by BKE_mesh_copy_parameters().

◆ vertex_group_names

ListBase Mesh::vertex_group_names

List of vertex group (bDeformGroup) names and flags only. Actual weights are stored in dvert.

Note
This pointer is for convenient access to the CD_MDEFORMVERT layer in vert_data.

Definition at line 100 of file DNA_mesh_types.h.

Referenced by BKE_id_defgroup_list_get(), BKE_mesh_copy_parameters_for_eval(), BKE_mesh_nomain_to_mesh(), ED_mesh_join_objects_exec(), blender::geometry::execute_realize_mesh_tasks(), blender::geometry::gather_vert_attributes(), and mesh_copy_data().

◆ verts_num

int Mesh::verts_num

The number of vertices in the mesh, and the size of vert_data.

Definition at line 75 of file DNA_mesh_types.h.

Referenced by add_interp_verts_copy_edges_to_new_mesh(), blender::bke::add_orco_mesh(), blender::ed::object::add_shapekey_layers(), add_verts_to_dgroups(), blender::ed::spreadsheet::GeometryDataSource::apply_selection_filter(), arrayModifier_doArray(), base_skin(), BKE_key_evaluate_object_ex(), BKE_mesh_calc_loop_tangents(), BKE_mesh_mirror_apply_mirror_on_axis_for_modifier(), BKE_mesh_new_nomain_from_template_ex(), BKE_mesh_nomain_to_mesh(), BKE_mesh_nomain_to_meshkey(), BKE_mesh_remap_calc_edges_from_mesh(), BKE_mesh_remap_calc_loops_from_mesh(), BKE_mesh_remap_calc_verts_from_mesh(), BKE_mesh_remap_find_best_match_from_mesh(), BKE_mesh_runtime_is_valid(), BKE_mesh_to_pointcloud(), BKE_object_data_transfer_ex(), BKE_object_data_transfer_layout(), BKE_shrinkwrap_mesh_nearest_surface_deform(), BKE_shrinkwrap_remesh_target_project(), BMD_mesh_intersection(), blender::nodes::node_geo_dual_mesh_cc::calc_dual_mesh(), blender::bke::compare_meshes::compare_meshes(), blender::bke::compare_meshes::construct_vertex_mapping(), blender::ed::object::convert_psys_to_mesh(), copy_masked_edges_to_new_mesh(), copy_masked_verts_to_new_mesh(), data_transfer_layersmapping_generate(), deform_verts(), deform_verts(), deformVerts_do(), distribute_from_verts_exec(), do_multires_bake(), blender::draw::DRW_subdivide_loose_geom(), blender::nodes::node_geo_duplicate_elements_cc::duplicate_faces(), dynamicPaint_brushMeshCalculateVelocity(), dynamicPaint_surfaceNumOfPoints(), ED_mesh_deform_bind_callback(), ED_mesh_join_objects_exec(), ED_mesh_mirror_spatial_table_begin(), ED_mesh_shapes_join_objects_exec(), blender::nodes::node_geo_edge_paths_to_selection_cc::edge_paths_to_selection(), blender::ed::sculpt_paint::boundary::ensure_boundary_info(), blender::geometry::execute_realize_mesh_tasks(), blender::bke::pbvh::face_normals_cache_eval(), blender::bke::subdiv::foreach_subdiv_geometry(), geometry_extract_apply(), blender::ed::sculpt_paint::trim::gesture_apply_for_symmetry_pass(), get_effector_tot(), blender::bke::get_mesh_accessor_functions(), blender::io::usd::get_shape_key_basis_mesh(), give_parvert(), make_duplis_verts(), mesh_copy_data(), blender::geometry::mesh_copy_selection(), blender::geometry::mesh_copy_selection_keep_edges(), blender::geometry::mesh_copy_selection_keep_verts(), blender::bke::mesh_eval_to_meshkey(), mesh_get_x_mirror_faces(), blender::bke::mesh_remesh_reproject_attributes(), MOD_lineart_gpencil_generate_v3(), multires_reshape_apply_base_refit_base_mesh(), multires_unsubdivide_extract_grids(), multires_unsubdivide_prepare_original_bmesh_for_extract(), multiresModifier_reshapeFromObject(), blender::bke::subdiv::precalc_uv_layer(), proj_paint_state_mesh_eval_init(), psys_calc_dmcache(), blender::io::alembic::read_velocity(), sculpt_update_object(), stats_mesheval(), blender::bke::subdiv::subdiv_foreach_ctx_count(), blender::bke::subdiv::subdiv_foreach_ctx_init(), blender::bke::subdiv::subdiv_foreach_ctx_init_offsets(), blender::bke::subdiv::subdiv_mesh_ctx_cache_custom_data_layers(), blender::bke::subdiv::subdiv_mesh_topology_info(), blender::bke::subdiv::subdiv_to_mesh(), subdivide_base(), blender::io::alembic::AbcMeshReader::topology_changed(), blender::io::usd::USDMeshReader::topology_changed(), blender::ed::sculpt_paint::undo::topology_matches(), blender::io::obj::OBJMesh::tot_vertices(), blender::bke::pbvh::vert_normals_cache_eval(), blender::bke::pbvh::vert_positions_eval(), and blender::bke::pbvh::vert_positions_eval_for_write().


The documentation for this class was generated from the following files: