3.4 KiB
Raw Permalink Blame History

前言

数据结构

!assimp_structure.png

Struct Content
aiScene mRootNodemMeshesmMaterialsmAnimationsmTexturesmLightsmCameras
aiNode mTransformationmParentmChildrenmMeshes(索引)
aiMesh mVerticesmNormalsmTangentsmBitangentsmColorsmTextureCoordsmFacesmBonesmAnimMeshes
aiFace mIndices
aiMaterial GetTextureCount(...)GetTexture(...)
aiAnimation mDurationmTicksPerSecondmChannelsmMeshChannels
aiNodeAnim mNodeNamemPositionKeysmRotationKeysmScalingKeysmPostState

Model类

Scene场景

  • mRootNode根节点,是整个场景图的起点,包含了其他所有子节点的引用。
  • mMeshes[]包含了场景中所有的网格Mesh数据的数组。
  • mMaterials[]:包含了场景中所有材质的数组。

Node节点

  • Root Node顶层的根节点可以有多个子节点。
  • Child Node子节点可以进一步包含更多的子节点和网格。
  • mChildren[]子节点数组
  • mMeshes[]:当前节点所含网格的数组。
  • 每个节点都可能包含对其他子节点的引用和/或对一个或多个网格的引用。这构成了一个树状结构用于表示3D模型的层次和组成。

Mesh网格

  • mVertices[]:存储网格顶点的数组。
  • mNormals[]:存储顶点法线的数组,用于光照和渲染。
  • mTextureCoords[]:存储纹理坐标的数组,用于将纹理映射到模型上。
  • mFaces[]:存储面(由顶点构成)的数组。
  • mMaterialIndex材质索引用于从场景中的材质数组mMaterials[]中引用对应的材质。

Face

  • mIndices[]:存储构成面的顶点索引的数组。

载入文件

mScenePtr = mImporter.ReadFile(file, 
							   aiProcess_Triangulate | 
							   aiProcess_MakeLeftHanded | 
							   aiProcess_CalcTangentSpace | 
							   aiProcess_GenSmoothNormals | 
							   aiProcess_OptimizeMeshes);

枚举说明

  • aiProcess_Triangulate非三角形几何图元主动拆分成三角形。
  • aiProcess_MakeLeftHanded转换成左手坐标系一般用于Direct3D渲染程序。
  • aiProcess_CalcTangentSpace
  • aiProcess_GenSmoothNormals生成平滑法线。
  • aiProcess_OptimizeMeshes优化模型减少模型数量