Assimp原理介绍
简介
我们用Opengl画立方体的时候,知道需要有顶点位置,如果想要在立方体上贴纹理的话,还需要知道纹理坐标,但是画复杂一些的模型就需要借助3DS Max等工具实现了,而使用工具导出来的模型文件数据不能直接使用,需要做一些转换,Assimp就帮我们实现了这一个功能。
Assimp(Open Asset Import Library)是一个模型加载库 ,它会把不同格式的模型数据转换为统一的抽象的数据类型,从而得到我们需要的数据。
结构(摘录自参考文章)
当使用Assimp导入一个模型的时候,它通常会将整个模型加载进一个场景(Scene)对象,它会包含导入的模型/场景中的所有数据。Assimp会将场景载入为一系列的节点(Node),每个节点包含了场景对象中所储存数据的索引,每个节点都可以有任意数量的子节点。Assimp数据结构的(简化)模型如下:
- 和材质和网格(Mesh)一样,所有的场景/模型数据都包含在Scene对象中。Scene对象也包含了场景根节点的引用。 场景的Root
- node(根节点)可能包含子节点(和其它的节点一样),它会有一系列指向场景对象中mMeshes数组中储存的网格数据的索引。Scene下的mMeshes数组储存了真正的Mesh对象,节点中的mMeshes数组保存的只是场景中网