Path Tracer
Public Attributes | List of all members
aiMesh Struct Reference

enum aiMorphingMethod More...

#include <mesh.h>

Public Attributes

unsigned int mPrimitiveTypes
 
unsigned int mNumVertices
 
unsigned int mNumFaces
 
C_STRUCT aiVector3DmVertices
 
C_STRUCT aiVector3DmNormals
 
C_STRUCT aiVector3DmTangents
 
C_STRUCT aiVector3DmBitangents
 
C_STRUCT aiColor4DmColors [AI_MAX_NUMBER_OF_COLOR_SETS]
 
C_STRUCT aiVector3DmTextureCoords [AI_MAX_NUMBER_OF_TEXTURECOORDS]
 
unsigned int mNumUVComponents [AI_MAX_NUMBER_OF_TEXTURECOORDS]
 
C_STRUCT aiFacemFaces
 
unsigned int mNumBones
 
C_STRUCT aiBone ** mBones
 
unsigned int mMaterialIndex
 
C_STRUCT aiString mName
 
unsigned int mNumAnimMeshes
 
C_STRUCT aiAnimMesh ** mAnimMeshes
 
unsigned int mMethod
 
C_STRUCT aiAABB mAABB
 

Detailed Description

enum aiMorphingMethod

A mesh represents a geometry or model with a single material.

It usually consists of a number of vertices and a series of primitives/faces referencing the vertices. In addition there might be a series of bones, each of them addressing a number of vertices with a certain weight. Vertex data is presented in channels with each channel containing a single per-vertex information such as a set of texture coords or a normal vector. If a data pointer is non-null, the corresponding data stream is present. From C++-programs you can also use the comfort functions Has*() to test for the presence of various data streams.

A Mesh uses only a single material which is referenced by a material ID.

Note
The mPositions member is usually not optional. However, vertex positions could be missing if the AI_SCENE_FLAGS_INCOMPLETE flag is set in

Member Data Documentation

◆ mAnimMeshes

C_STRUCT aiAnimMesh** aiMesh::mAnimMeshes

Attachment meshes for this mesh, for vertex-based animation. Attachment meshes carry replacement data for some of the mesh'es vertex components (usually positions, normals). Note! Currently only works with Collada loader.

◆ mBitangents

C_STRUCT aiVector3D* aiMesh::mBitangents

Vertex bitangents. The bitangent of a vertex points in the direction of the positive Y texture axis. The array contains normalized vectors, nullptr if not present. The array is mNumVertices in size.

Note
If the mesh contains tangents, it automatically also contains bitangents.

◆ mBones

C_STRUCT aiBone** aiMesh::mBones

The bones of this mesh. A bone consists of a name by which it can be found in the frame hierarchy and a set of vertex weights.

◆ mColors

C_STRUCT aiColor4D* aiMesh::mColors[AI_MAX_NUMBER_OF_COLOR_SETS]

Vertex color sets. A mesh may contain 0 to AI_MAX_NUMBER_OF_COLOR_SETS vertex colors per vertex. nullptr if not present. Each array is mNumVertices in size if present.

◆ mFaces

C_STRUCT aiFace* aiMesh::mFaces

The faces the mesh is constructed from. Each face refers to a number of vertices by their indices. This array is always present in a mesh, its size is given in mNumFaces. If the AI_SCENE_FLAGS_NON_VERBOSE_FORMAT is NOT set each face references an unique set of vertices.

◆ mMaterialIndex

unsigned int aiMesh::mMaterialIndex

The material used by this mesh. A mesh uses only a single material. If an imported model uses multiple materials, the import splits up the mesh. Use this value as index into the scene's material list.

◆ mMethod

unsigned int aiMesh::mMethod

Method of morphing when animeshes are specified.

◆ mName

C_STRUCT aiString aiMesh::mName

Name of the mesh. Meshes can be named, but this is not a requirement and leaving this field empty is totally fine. There are mainly three uses for mesh names:

  • some formats name nodes and meshes independently.
  • importers tend to split meshes up to meet the one-material-per-mesh requirement. Assigning the same (dummy) name to each of the result meshes aids the caller at recovering the original mesh partitioning.
  • Vertex animations refer to meshes by their names.

◆ mNormals

C_STRUCT aiVector3D* aiMesh::mNormals

Vertex normals. The array contains normalized vectors, nullptr if not present. The array is mNumVertices in size. Normals are undefined for point and line primitives. A mesh consisting of points and lines only may not have normal vectors. Meshes with mixed primitive types (i.e. lines and triangles) may have normals, but the normals for vertices that are only referenced by point or line primitives are undefined and set to QNaN (WARN: qNaN compares to inequal to everything, even to qNaN itself. Using code like this to check whether a field is qnan is:

#define IS_QNAN(f) (f != f)

still dangerous because even 1.f == 1.f could evaluate to false! ( remember the subtleties of IEEE754 artithmetics). Use stuff like fpclassify instead.

Note
Normal vectors computed by Assimp are always unit-length. However, this needn't apply for normals that have been taken directly from the model file.

◆ mNumAnimMeshes

unsigned int aiMesh::mNumAnimMeshes

The number of attachment meshes. Note! Currently only works with Collada loader.

◆ mNumBones

unsigned int aiMesh::mNumBones

The number of bones this mesh contains. Can be 0, in which case the mBones array is nullptr.

◆ mNumFaces

unsigned int aiMesh::mNumFaces

The number of primitives (triangles, polygons, lines) in this mesh. This is also the size of the mFaces array. The maximum value for this member is AI_MAX_FACES.

◆ mNumUVComponents

unsigned int aiMesh::mNumUVComponents[AI_MAX_NUMBER_OF_TEXTURECOORDS]

Specifies the number of components for a given UV channel. Up to three channels are supported (UVW, for accessing volume or cube maps). If the value is 2 for a given channel n, the component p.z of mTextureCoords[n][p] is set to 0.0f. If the value is 1 for a given channel, p.y is set to 0.0f, too.

Note
4D coords are not supported

◆ mNumVertices

unsigned int aiMesh::mNumVertices

The number of vertices in this mesh. This is also the size of all of the per-vertex data arrays. The maximum value for this member is AI_MAX_VERTICES.

◆ mPrimitiveTypes

unsigned int aiMesh::mPrimitiveTypes

Bitwise combination of the members of the aiPrimitiveType enum. This specifies which types of primitives are present in the mesh. The "SortByPrimitiveType"-Step can be used to make sure the output meshes consist of one primitive type each.

◆ mTangents

C_STRUCT aiVector3D* aiMesh::mTangents

Vertex tangents. The tangent of a vertex points in the direction of the positive X texture axis. The array contains normalized vectors, nullptr if not present. The array is mNumVertices in size. A mesh consisting of points and lines only may not have normal vectors. Meshes with mixed primitive types (i.e. lines and triangles) may have normals, but the normals for vertices that are only referenced by point or line primitives are undefined and set to qNaN. See the mNormals member for a detailed discussion of qNaNs.

Note
If the mesh contains tangents, it automatically also contains bitangents.

◆ mTextureCoords

C_STRUCT aiVector3D* aiMesh::mTextureCoords[AI_MAX_NUMBER_OF_TEXTURECOORDS]

Vertex texture coords, also known as UV channels. A mesh may contain 0 to AI_MAX_NUMBER_OF_TEXTURECOORDS per vertex. nullptr if not present. The array is mNumVertices in size.

◆ mVertices

C_STRUCT aiVector3D* aiMesh::mVertices

Vertex positions. This array is always present in a mesh. The array is mNumVertices in size.


The documentation for this struct was generated from the following file:
aiScene::mFlags
unsigned int mFlags
Definition: scene.h:253