OpenGL基础26:Assimp库
一、模型文件
游戏中有很多复杂的模型往往都是美术通过3D建模工具构建出来的,当然不是程序将顶点写死在代码里的,想想看一个简单的人物模型可能就有上千个顶点,这个时候按之前“生成木箱子”的方法肯定就不可行了
从3D模型的设计到最后体现在场景中,整个过程可以分为2个步骤
当使用3D建模工具导出模型文件时,建模工具会自己生成所有的顶点坐标、顶点法线和纹理坐标等信息,这些图像技术细节并不需要美工去处理,美工只需要关心如何构建高品质的模型,所有的技术细节内容都隐藏在里导出的模型文件里。而对于图形开发者,就必须得去关注这些技术细节了
因此,紧接着作为开发者的工作就是去解析这些导出的模型文件,并将其中的模型数据存储为OpenGL能够使用的数据,要知道,模型也和图片一样,有很多种不同的格式,每种格式的数据存储方式也不一样,像是Wavefront的.obj这样的模型格式,只包含了模型数据以及材质信息,而以XML为基础的Collada文件格式则非常的丰富,包含模型、光照、多种材质、动画数据、摄像机、完整的场景信息等等,想处理和加载这些模型其实非常的复杂
二、Assimp模型加载库
Assimp(Open Asset Import Library)库就可以帮我们解决模型加载的问题,当然也支持几乎所有的格式,其内部将不同的模型文件都转换为一个统一的数据结构,只要Assimp加载完了模型文件,我们就可以从Assimp上获取所有我们需要的模型数据
先搞定安装的问题,Assimp库的构建应该比之前的SOIL库等要复杂一些,因为这个最好自己cmake,尽管在我提供的安装包里面有现成的,但是它只支持Win32+VS2019
OpenGL环境配置(超全整合版)Assimp库可以从这篇文章中的链接中下载到
①第一步:将文件解压到C盘或者其它盘的根目录,打开之后如下:
安装cmake,如果你已经装过了就不用管了
②第二步:如下
- 选择你的Assimp路径
- 选择你Assimp路径中的build文件夹,如果没有对应文件夹就创建一个,保证里面是空的
- 点击,选择你的VS版本,是32位还是64位可以参考你openGLdemo的配置
- 点击,等,如果中间区域是一片红(样例图就是),那就再点一次
- 点击,成功后应该会打开你的VS
中间可能遇到的错误/问题:
- 找不到DirectX:DirectX官方下载
- 找不到你的VS版本,你的VS过新,但是cmake工具过旧了,去 https://cmake.org/download/ 下载最新的版本吧
③第三步:编译
可能遇到的错误:
- 找不到 gtest.lib:换个 https://github.com/assimp/assimp/releases/ 版本或者换个assimp路径
④第四步:如果你觉得不cmake也行,又或者环境和我一致,你可以直接跳过①②③,用我cmake好的现成的
然后就简单了,步骤都一样:
include文件夹里面的所有文件全部放入老位置(C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\include)不过注意有两个include:一个在assimp的根目录,里面有很多文件,一个在build目录,里面只有一个config,都要放
然后进入上图中的目录,dll放入老位置(C:\Windows\SysWOW64),lib放入老位置(C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\lib\x86)
⑤第五步:打开你的项目,菜单→项目→属性,进入如下界面,附加依赖项中添加assimp-vc142-mtd.lib即可完成环境配置
测试一下,应该99.5%没问题了