3.4 KiB
3.4 KiB
前言
- https://github.com/assimp/assimp
- 知乎文章
- Assimp与模型渲染的故事:模型加载,骨骼蒙皮动画:https://zhuanlan.zhihu.com/p/559637598
- Assimp库的编译总结:https://zhuanlan.zhihu.com/p/533138560
数据结构
Struct | Content |
---|---|
aiScene | mRootNode,mMeshes,mMaterials,mAnimations,mTextures,mLights,mCameras |
aiNode | mTransformation,mParent,mChildren,mMeshes(索引) |
aiMesh | mVertices,mNormals,mTangents,mBitangents,mColors,mTextureCoords,mFaces,mBones,mAnimMeshes |
aiFace | mIndices |
aiMaterial | GetTextureCount(...),GetTexture(...) |
aiAnimation | mDuration,mTicksPerSecond,mChannels,mMeshChannels |
aiNodeAnim | mNodeName,mPositionKeys,mRotationKeys,mScalingKeys,mPostState |
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:优化模型,减少模型数量?