1,
Assimp可以导入几十种不同格式的模型文件(同样也可以导出部分模型格式)。只要Assimp加载完了模型文件,我们就可以从Assimp上获取所有我们需要的模型数据。Assimp把不同的模型文件都转换为一个统一的数据结构,所有无论我们导入何种格式的模型文,件,都可以用同一个方式去访问我们需要的模型数据。

2
当导入一个模型文件时,即Assimp加载一整个包含所有模型和场景数据的模型文件到一个scene对象时,Assimp会为这个模型文件中的所有场景节点、模型节点都生成一个具有对应关系的数据结构,且将这些场景中的各种元素与模型数据对应起来。下图展示了一个简化,,的Assimp生成的模型文件数据结构:

  • 所有的模型、场景数据都包含在Scene对象中,如所有的材质和Mesh。同样,场景的根节点引用也包含在这个scene对象中。
  • 场景的根节点(Root node)可能也会包含很多子节点和一个指向保存模型点云数据mMeshes[]的索引集合。根节点上的mMeshes[]里保存了实际了Mesh对象,而每个子节点上的mMesshes[]都只是指向根节点中的mMeshes[]的一个引用(译者注:C/C++称为指针,Java/C#称为引用)。
  • 一个Mesh对象本身包含渲染所需的所有相关数据,比如顶点位置、法线向量、纹理坐标、面片及物体的材质。
  • 一个Mesh会包含多个面片。一个Face(面片)表示渲染中的一个最基本的形状单位,即图元(基本图元有点、线、三角面片、矩形面片)。一个面片记录了一个图元的顶点索引,通过这个索引,可以在mMeshes[]中寻找到对应的顶点位置数据。顶点数据和索引分开存放,可以便于我们使用缓存(VBO、NBO、TBO、IBO)来高速渲染物体。
  • 一个Mesh还会包含一个Material(材质)对象用于指定物体的一些材质属性。如颜色、纹理贴图(漫反射贴图、高光贴图等)。

所以我们要做的第一件事,就是加载一个模型文件为Scene对象,然后获取每个节点对应的Mesh对象(我们需要递归搜索每个节点的子节点来获取所有的节点),并处理每个Mesh对象对应的顶点数据、索引以及它的材质属性。最终我们得到一个只包含我们需要的数据的Mesh集合。

3,
Assimp使用一个aiScene对象来表示加载的mesh(网格结构),aiScene对象中包含了mesh,且这个mesh部分封装了模型。
aiScene对象中至少包含一个mesh,而复杂的模型就可能包含多个mesh。

std::vector<MeshEntry> m_Entries;


转载于:https://www.cnblogs.com/liuhan333/p/6725900.html

最新文章

  1. arduino点阵声音频谱_基于Arduino和频谱分析的LED音乐课节拍器
  2. nodejs配置摘要
  3. 后台开发技术--接入层设计
  4. wxWidgets:wxHtmlCellEvent类用法
  5. mysql没有开启binlog能恢复数据吗_神了!一个妹子 rm -rf 把公司整个数据库删没了......
  6. MySQL学习笔记之五:存储引擎和查询缓存
  7. html网页之间怎么切换效果,HTML教程:网页页面切换的各种效果-♚付涛纪实阁♚...
  8. 继微博之后,抖音、今日头条、小红书宣布将显示账号IP属地
  9. 如何评价一个RPC框架的性能
  10. 491. 递增子序列
  11. .xsession-errors:openConnection: connect: No such file or directory cannot connect to brltty at :0
  12. PL/SQL批处理语句(BULK COLLECT子句和FORALL语句)
  13. 还挺好看!用命令行画思维导图;66天机器学习之旅;斯坦福CS234 强化学习课程;哈佛CS50 计算机科学导论课程;前沿论文 | ShowMeAI资讯日报
  14. 大型互联网产品的全链路压测
  15. arcgis出界址点成果表_勘测定界界址点坐标成果表(TXT文件)
  16. 服务器系统要用GUID还是MBR,分享win10分区格式MBR和GUID有什么区别 教你区分MBR和GUID格式...
  17. python求解方程组_NumPy线性方程组求解
  18. 大数据整合方案架构总结
  19. java英文翻译_Java实现英文文本单词翻译器功能的简单实例
  20. IOS逆向学习之路之iPod touch4 越狱心得

热门文章

  1. springboot与dubbo整合
  2. 康托展开逆展开算法笔记
  3. 【Maven】1.使用myecplise配置自己的Maven配置,不使用默认的maven
  4. 【Spring】对象后期处理,BeanPostProcessor
  5. python备份文件
  6. 有了中文版MSDN2,何必又东奔西走去找资料
  7. 正样本和负样本,前景类/ 背景,hard negative mining
  8. qa qc qm的区别
  9. MacOS开发必备工具brew,安装nginx反向代理,替代linux工具 apt-get和 yum
  10. Java集合之map 集合使用