欢迎光临散文网 会员登陆 & 注册

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

2023-05-04 15:23 作者:Code有毒  | 我要投稿

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 同理我们还可以导入其他原神角色的模型。


【LearnOpenGL】【P12】导入原神的3D模型的评论 (共 条)

分享到微博请遵守国家法律