【LearnOpenGL】【P12】导入原神的3D模型

0 上一章节我们创建了丰富的光照类型场景,本章节我们将使用第三方“Assimp”库导入3维模型文件,并在场景中进行模型渲染。
(1)配置Assimp动态链接库。
(2)创建Mesh类。
(3)创建Model类。
(4)导入原神模型文件。

1.0 配置Assimp动态链接库。
1.1 下载Assimp(https://kimkulling.itch.io/the-asset-importer-lib)。

1.2 安装Assimp后找到它bin目录下的动态链接库文件,将该dll文件复制到我们项目的Debug目录下。


1.3 在项目属性里设置好头文件路径、静态链接库路径和静态链接库名。




2.0 创建Mesh类。
2.1 该网格类的成员变量将存放网格模型的顶点信息、顶点索引信息以及纹理信息。

2.2 在类初始化时会根据顶点、索引和纹理信息生成对应的VAO、VBO以及EBO对象,并将以上对象绑定到OpenGL的buffer中。


2.3 Mesh的绘制接口将绑定VAO对象,使用纹理和索引信息绘制图像。


3.0 创建Model类。
3.1 创建模型类,该类对象的抽象层次比Mesh类更高一级,模型类将记录模型文件的导入路径,并存储经过Assimp库转换后得到的网格对象数组。我们还会同时记录模型的纹理缓存,以此来提高模型纹理的导入效率,避免重复的纹理加载过程。

3.2 在构造Model对象时,通过传入的路径加载模型文件到网格数据。


3.3 使用Assimp库的接口得到Assimp的场景对象。使用递归的方式遍历场景对象里所有的节点数据。

3.4 将Assimp的Mesh信息转换为我们自己的Mesh类的信息。



4.0 导入原神模型文件。
4.1 下载网络上的原神模型文件资源,里面将包含模型文件以及相应的贴图文件。我们将神里绫华(Kamisato Ayaka)和甘雨的模型文件以及贴图资源放入对应的文件夹位置。






4.2 将两个角色的模型路径作为实参,创建两个Model对象。

4.3 创建模型的Shader对象。

4.4 设置Shader对象的MVP矩阵,以及法向量转换矩阵。调用Model对象的绘制接口将会遍历Model里面所有的Mesh对象的绘制接口。


4.5 编译运行程序,我们就能在场景中得到 甘雨 和 神里绫华 的三维模型啦。




4.6 同理我们还可以导入其他原神角色的模型。



