一、模型文件

游戏中有很多复杂的模型往往都是美术通过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,如果你已经装过了就不用管了

②第二步:如下

  1. 选择你的Assimp路径
  2. 选择你Assimp路径中的build文件夹,如果没有对应文件夹就创建一个,保证里面是空的
  3. 点击,选择你的VS版本,是32位还是64位可以参考你openGLdemo的配置
  4. 点击,等,如果中间区域是一片红(样例图就是),那就再点一次
  5. 点击,成功后应该会打开你的VS

中间可能遇到的错误/问题:

  1. 找不到DirectX:DirectX官方下载
  2. 找不到你的VS版本,你的VS过新,但是cmake工具过旧了,去 https://cmake.org/download/ 下载最新的版本吧

③第三步:编译

可能遇到的错误:

  1. 找不到 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%没问题了

OpenGL基础26:Assimp库相关推荐

  1. OpenGL基础8:SOIL库

    一.SOIL SOIL是简易OpenGL图像库(Simple OpenGL Image Library)的缩写,它支持大多数流行的图像格式,关于SOIL的介绍应该很多,这里就不说了,我们先装上 Ope ...

  2. [OpenGL] 使用Assimp库的骨骼动画

    Tutorial 38: Skeletal Animation With Assimp 最终,我们来到了这里.有数百万的读者都要求这一教程(我可能夸大了一些,但确实有不少).骨骼动画(skeletio ...

  3. OpenGL绘制罗纳尔多三维模型-Assimp库

    本文主要讲解assimp库的使用. 先看效果-资源在文末 正视图: 后视图: 侧视图: 主要使用assimp库进行加载obj模型: 核心代码: 通过加载完的scene对象解析模型的数据: void l ...

  4. windows C++ Opengl基础框架源码

    windows C++ Opengl基础框架源码 项目开发环境 项目功能 项目演示 项目源码传送门 项目开发环境 开发语言:C++和IDE:VS2017,操作系统Windows版本windows SD ...

  5. 1 2014年12月电大远程网络教育计算机统考 最 新 题 库,2014年12月份电大远程网络教育计算机应用基础统考题库试卷6...

    2014年12月电大远程网络教育计算机应用基础统考题库试卷 21.Word 的替换命令所在的选项卡是____ . A ."文件" B."开始" C." ...

  6. [转]OpenGL基础技术讲座--发展历史

    OpenGL基础技术讲座--发展历史 第一讲 OpenGL 的发展历史 人们对三维图形技术的研究已经经历了一个很长的历程,而且涌现了许多三维图形开发工具,其中SGI公司推出的GL(Graphics L ...

  7. OpenGL基础40:Uniform缓冲

    前置:OpenGL基础39:GLSL内建变量与接口块 想想之前代码,glUniform()和glGetUniformLocation()的使用数量是不是过于频繁了,对于每个着色器的每一个uniform ...

  8. OpenGL基础30:模板测试

    前置:OpenGL基础29:深度测试 一.模板测试 前面一章提到过:深度缓冲测试在片段着色器运行.以及模板测试(Stencil Testing)之后,那么这下知道模板测试是在什么时候了吧,模板测试和深 ...

  9. OpenGL基础28:模型

    参考文献:https://learnopengl.com/#!Getting-started/OpenGL 前置:OpenGL基础27:网格 一.模型 有了mesh类之后,接下来就是实现一个model ...

最新文章

  1. 性别从后台获取得值的那点事儿
  2. (转载)关于安装Ubuntu系统时提示“分配到/的分区/dev/sdax开始于xxxx字节,使用磁盘的最小对齐,这可能造成非常差的性能...的解决办法
  3. JS:attachEvent和addEventListener方法
  4. Python爬虫项目,获取所有网站上的新闻,并保存到数据库中,解析html网页等(未完待续)
  5. 基于element ui的收起展开检索条件效果
  6. 【Selenium2】【项目实战】
  7. 关于进行安装程序出现注册DLL/OCX失败,返回码:0x5问题
  8. 【017】【毕业设计】基于51单片机的频率计设计的Proteus仿真与实物设计
  9. 修复软件图标不正常显示问题
  10. 触摸芯片的四种多点触摸技术
  11. D - Frodo and pillows CodeForces - 760B
  12. chm文件打不开:提示已取消到该网页的导航的解决办法
  13. HDU4609 3-idiots fft
  14. 外观html与外观css的区别,用房间和装修来解读html代码与css样式的区别和关系
  15. html导出带页码的word,使用js把html导出word,并配置样式和分页功能
  16. SQL 给时间字段增加一固定时间
  17. 双粗虚线中间一条实线_马路上实线两边有很粗的虚线(中间实线或虚线两边还有很粗的虚线是啥意思)...
  18. OBB包围盒及其碰撞检测算法(一)
  19. python 中 self的用法
  20. 串口通信协议--UART、RS-232、RS-485、RS-422

热门文章

  1. python中国官网-Python教程
  2. python入门经典代码-【python】编程语言入门经典100例--11
  3. python所有软件-Python和pip,列出可用的软件包的所有版本?
  4. 为什么说吉利博越定义了智能SUV
  5. atxserver运行没有反应_关于厌氧反应器的酸化现象与恢复措施!
  6. 两个水平排列的div顶部对齐~详细
  7. Vue调试工具的安装方法(动动鼠标就完成,不会意外报错,超爽~)
  8. JavaScript基础简单入门
  9. oracle type is varray,oracle – 使用TYPE属性检索VARRAY元素类型
  10. h5实现一键复制到粘贴板 兼容iOS