assimp

编译Assimp傻瓜教程

别说谁变了你拦得住时间么 提交于 2019-11-27 19:09:30
assimp的编译过程和搭建OpenGL环境时glfw的编译基本相同,建议先阅读 环境搭建 下载源码 这里使用的是3.3.1版本,Github下载assimp 源码 解压完你会得到 接下来我们要编译这些源码 为什么要在自己机器上编译?因为从源代码编译库可以保证生成的库是兼容你的操作系统和CPU的,而预编译的二进制文件可能会出现兼容问题(甚至有时候没提供支持你系统的文件) 但是提供源代码所产生的一个问题在于不是每个人都用相同的IDE开发程序,因而源码提供的工程/解决方案文件可能和一些IDE不兼容,人们只能从.c/.cpp和.h/.hpp文件来自己建立工程/解决方案,这是一项枯燥的工作,但因此也诞生了一个叫做CMake的工具 CMake CMake是一个工程文件生成工具 http://www.cmake.org/cmake/resources/software.html 我们可以使用预定义好的CMake脚本,根据自己的选择(像是Visual Studio, Code::Blocks, Eclipse)生成不同IDE的工程文件。这个工具就能让我们从GLFW源码里创建一个Visual Studio 2017工程文件,之后就能顺利编译 CMake需要一个 源代码目录 和一个 存放编译结果的目标文件目录 ,源代码目录我们选择下载的assimp的源代码的根目录

模型导入问题

家住魔仙堡 提交于 2019-11-27 00:44:19
一: 基本认知: 关于模型加载库:Assimp 1.1 Scene下的mMeshes数组储存了真正的Mesh对象,节点中的mMeshes数组保存的只是场景中网格数组的索引。 1.2 一个 Mesh(网格) 对象本身包含了渲染所需要的所有相关数据,像是顶点位置、法向量、纹理坐标、面(Face)和物体的材质。一个模型(通常)会包括多个网格。 组合模型的每个单独的形状就叫做一个网格(Mesh) 。比如说有一个人形的角色:艺术家通常会将头部、四肢、衣服、武器建模为分开的组件,并将这些网格组合而成的结果表现为最终的模型。一个网格是我们在OpenGL中绘制物体所需的最小单位(顶点数据、索引和材质属性) 1.3 一个网格包含了多个面。 Face代表的是物体的渲染图元(Primitive)(三角形、方形、点)。一个面包含了组成图元的顶点的索引。 1.4 一个网格也包含了一个Material对象,它包含了一些函数能让我们获取物体的材质属性,比如说颜色和纹理贴图(比如漫反射和镜面光贴图)。 1.5 我们需要做的第一件事是将一个物体加载到Scene对象中,遍历节点,获取对应的Mesh对象(我们需要递归搜索每个节点的子节点),并处理每个Mesh对象来获取顶点数据、索引以及它的材质属性。最终的结果是一系列的网格数据,我们会将它们包含在一个Model对象中。 1.6 如果我们想要绘制一个模型