OpenGL使用Assimp库导入3d模型
在一些商业的游戏应用中模型的网格是由美工艺术家使用一些建模软件创建的,例如:Blender,Maya,3ds Max等。这些软件提供了强大的工具来帮助美工创建复杂的模型。
Assimp(Open Asset Import Library)是一个处理很多3D格式文件的开源库,包括最流行的3d格式,在Linux和Windows系统都可以很方便的使用。这个模型解析库可以很容易的整合到C/C++程序中使用。
Mesh类
Mesh类表示的是Assimp框架和我们的OpenGL程序的接口:
-
LoadMesh()
LoadMesh()函数的参数,加载模型然后创建模型中包含的且我们的程序能够理解的顶点缓冲,索引缓冲和纹理对象数据。
- 创建了Assimp::Importer类的一个实例,调用其ReadFile方法来读取文件,获得一个指向aiScene对象的指针。这个对象包含整个模型的内容,并分布在模型不同的aiMesh结构中
- 调用InitFromScene()函数来初始化这个Mesh对象。分配mesh对象的内存空间、准备我们要用的纹理向量以及所有的网格数据和材质
- 解析模型数据将顶点属性数据依次存放到Vertices容器中
- 创建索引缓存
- 用顶点和索引向量完成MeshEntry结构体的初始化
- 加载模型所用的所有纹理。一个材质是可以