【我的OpenGL学习进阶之旅】Assimp库支持哪些3D模型格式?

这篇具有很好参考价值的文章主要介绍了【我的OpenGL学习进阶之旅】Assimp库支持哪些3D模型格式?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、LearnOpenGL中介绍Assimp

在通过LearnOpenGL学习OpenGL知识的时候,有介绍如何通过Assimp来加载3D模型,并了解了Mesh网格的概念。

  • Assimp
  • Mesh网格
  • 3D模型

在 https://learnopengl-cn.github.io/03%20Model%20Loading/01%20Assimp/ 中有介绍使用Assimp库来加载3D模型.obj格式。

一个非常流行的模型导入库是Assimp,它是Open Asset Import Library(开放的资产导入库)的缩写。Assimp能够导入很多种不同的模型文件格式(并也能够导出部分的格式),它会将所有的模型数据加载至Assimp的通用数据结构中。当Assimp加载完模型之后,我们就能够从Assimp的数据结构中提取我们所需的所有数据了。由于Assimp的数据结构保持不变,不论导入的是什么种类的文件格式,它都能够将我们从这些不同的文件格式中抽象出来,用同一种方式访问我们需要的数据。

当使用Assimp导入一个模型的时候,它通常会将整个模型加载进一个场景(Scene)对象,它会包含导入的模型/场景中的所有数据。Assimp会将场景载入为一系列的节点(Node),每个节点包含了场景对象中所储存数据的索引,每个节点都可以有任意数量的子节点。Assimp数据结构的(简化)模型如下:

【我的OpenGL学习进阶之旅】Assimp库支持哪些3D模型格式?

  • 和材质和网格(Mesh)一样,所有的场景/模型数据都包含在Scene对象中。Scene对象也包含了场景根节点的引用。
  • 场景的Root node(根节点)可能包含子节点(和其它的节点一样),它会有一系列指向场景对象中mMeshes数组中储存的网格数据的索引。Scene下的mMeshes数组储存了真正的Mesh对象,节点中的mMeshes数组保存的只是场景中网格数组的索引。
  • 一个Mesh对象本身包含了渲染所需要的所有相关数据,像是顶点位置、法向量、纹理坐标、面(Face)和物体的材质。
  • 一个网格包含了多个面。Face代表的是物体的渲染图元(Primitive)(三角形、方形、点)。一个面包含了组成图元的顶点的索引。由于顶点和索引是分开的,使用一个索引缓冲来渲染是非常简单的(见你好,三角形)。
  • 最后,一个网格也包含了一个Material对象,它包含了一些函数能让我们获取物体的材质属性,比如说颜色和纹理贴图(比如漫反射和镜面光贴图)。

所以,我们需要做的第一件事是将一个物体加载到Scene对象中,遍历节点,获取对应的Mesh对象(我们需要递归搜索每个节点的子节点),并处理每个Mesh对象来获取顶点数据、索引以及它的材质属性。最终的结果是一系列的网格数据,我们会将它们包含在一个Model对象中。

二、Assimp 官方介绍

那么Assimp除了支持.obj格式,还支持什么其他的3D模型格式呢?

我们通过官网,可以看到如下所示的介绍:
https://assimp-docs.readthedocs.io/en/v5.1.0/about/introduction.html


Asset-Importer-Lib(简称 assimp)是一个库,用于加载和处理来自各种 3D 数据格式的几何场景。通过支持节点层次结构、静态或蒙皮网格、材质、骨骼动画和潜在纹理数据,它主要针对典型的游戏场景进行定制。但也支持一些 3D 打印和 CAD 格式。

该库不是为速度而设计的它主要用于从各种来源导入资产一次并将其存储为特定于引擎的格式,以便每天轻松快速地加载。

assimp 还能够对导入的数据应用各种后处理步骤,例如转换为索引网格、计算法线或切线/双切线或从右手坐标系转换为左手坐标系。

Assimp-Lib 目前支持以下文件格式(请注意,某些加载器缺少其格式的某些功能,因为某些文件格式包含 assimp 不支持的数据,有些东西需要大量转换工作,尚未实现,有些(大多数…)格式缺乏适当的规范):

  • 3D Manufacturing Format (.3mf)

  • Collada (.dae, .xml)

  • Blender (.blend)

  • Biovision BVH (.bvh)

  • 3D Studio Max 3DS (.3ds)

  • 3D Studio Max ASE (.ase)

  • glTF (.glTF)

  • glTF2.0 (.glTF)

    • KHR_lights_punctual ( 5.0 )

    • KHR_materials_pbrSpecularGlossiness ( 5.0 )

    • KHR_materials_unlit ( 5.0 )

    • KHR_texture_transform ( 5.1 under test )

  • FBX-Format, as ASCII and binary (.fbx)

  • Stanford Polygon Library (.ply)

  • AutoCAD DXF (.dxf)

  • IFC-STEP (.ifc)

  • Neutral File Format (.nff)

  • Sense8 WorldToolkit (.nff)

  • Valve Model (.smd, .vta)

  • Quake I (.mdl)

  • Quake II (.md2)

  • Quake III (.md3)

  • Quake 3 BSP (.pk3)

  • RtCW (.mdc)

  • Doom 3 (.md5mesh, .md5anim, .md5camera)

  • DirectX X (.x)

  • Quick3D (.q3o, .q3s)

  • Raw Triangles (.raw)

  • AC3D (.ac, .ac3d)

  • Stereolithography (.stl)

  • Autodesk DXF (.dxf)

  • Irrlicht Mesh (.irrmesh, .xml)

  • Irrlicht Scene (.irr, .xml)

  • Object File Format ( .off )

  • Wavefront Object (.obj)

  • Terragen Terrain ( .ter )

  • 3D GameStudio Model ( .mdl )

  • 3D GameStudio Terrain ( .hmp )

  • Ogre ( .mesh.xml, .skeleton.xml, .material )

  • OpenGEX-Fomat (.ogex)

  • Milkshape 3D ( .ms3d )

  • LightWave Model ( .lwo )

  • LightWave Scene ( .lws )

  • Modo Model ( .lxo )

  • CharacterStudio Motion ( .csm )

  • Stanford Ply ( .ply )

  • TrueSpace (.cob, .scn)

  • XGL-3D-Format (.xgl)

三、参考链接

  • https://github.com/assimp/assimp

  • https://learnopengl-cn.github.io/03%20Model%20Loading/01%20Assimp/

  • https://assimp-docs.readthedocs.io/en/v5.1.0/about/introduction.html

  • http://assimp.sourceforge.net/lib_html/index.html文章来源地址https://www.toymoban.com/news/detail-448623.html

到了这里,关于【我的OpenGL学习进阶之旅】Assimp库支持哪些3D模型格式?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【我的Android进阶之旅】解决:The currently selected variant “debug“ uses split APKs, but none of the 1 split...

    在Github下载了一份代码,在本地运行看看效果,直接运行失败,如下所示: 错误描述如下所示: 翻译过来就是: 当前选择的变体“ debug ”使用拆分 APK ,但1个拆分APK中没有一个与当前具有 ABI “ armeabi-v7a,armeabi ”的设备兼容。 我的设备只支持 armeabi-v7a 或者 armeabi 代码中

    2024年02月13日
    浏览(43)
  • 猿创征文|Python-sklearn机器学习之旅:我的第一个机器学习实战项目

    目录 前言 一、从目的出发 1.导入数据 二、项目开启 1.导入数据

    2024年01月24日
    浏览(53)
  • C++ OpenGL 3D Game Tutorial 2: Making OpenGL 3D Engine学习笔记

    视频地址 https://www.youtube.com/watch?v=PH5kH8h82L8list=PLv8DnRaQOs5-MR-zbP1QUdq5FL0FWqVzgindex=3         接上一篇内容,main.cpp的内容增加了一些代码,显得严谨一些:        然后是Game类的添加了很多内容:         Game.h文件:         Game.cpp文件:        和上一篇相比,在

    2024年02月02日
    浏览(39)
  • Android OpenGL ES 学习(九) – 坐标系统和实现3D效果

    OpenGL 学习教程 Android OpenGL ES 学习(一) – 基本概念 Android OpenGL ES 学习(二) – 图形渲染管线和GLSL Android OpenGL ES 学习(三) – 绘制平面图形 Android OpenGL ES 学习(四) – 正交投影 Android OpenGL ES 学习(五) – 渐变色 Android OpenGL ES 学习(六) – 使用 VBO、VAO 和 EBO/IBO 优化程序 Android OpenG

    2024年01月25日
    浏览(44)
  • 我的AI之旅开始了

    知道重要,但是就是不动。 今天告诉自己,必须开始学习了。 用这篇博文作为1月份AI学习之旅的起跑点吧。 从此,无惧AI,无惧编程。 AI之路就在脚下。 AI,在我理解,就是让机器变得更加智能,能够以人思考和行为的方式去实行某种操作,更大更快更强。 编程和AI的关系

    2024年01月16日
    浏览(44)
  • 我的单片机入门之旅

    单片机作为现代电子技术的重要组成部分,广泛应用于各个领域。而作为一个初学者,我对单片机一无所知。但是,通过不断的学习和实践,我逐渐掌握了单片机的基本概念和使用方法。在我的单片机入门之旅中,经历了许多困难和挑战,但也取得了很大的进步和收获。 在开

    2024年03月22日
    浏览(41)
  • 我的苹果手机的越狱之旅

    最近因为业务需要,需要一台越狱手机;就把测试机6plus拿来做越狱使用,在此之前先大致说明一下越狱的原理、应用、流程以及可能存在的问题: 越狱是指通过一些技术手段,使iOS设备可以访问到iOS系统的全部控制权,从而可以实现更多的自定义和操作。以下是苹果手机越

    2024年02月11日
    浏览(41)
  • 我的Office Outlook插件开发之旅(一)

    目的 开发一款可以同步Outlook邮件通讯录信息的插件。 方案 VSTO 外接程序 COM 加载项 VSTO 外接程序对Outlook的支持,是从2010版本之后开始的。 VSTO 4.0 支持Outlook 2010以后的版本,所以编写一次代码,就可以在不同的版本上运行。 COM 加载项十分依赖于.NET Framework框架和Office的版本

    2024年02月08日
    浏览(37)
  • 三秒绘画!我的AI绘画之旅——Adobe体验

    首发于微信公众号:AI执剑人(微信号: AISwordholder ),欢迎大家订阅关注! 你敢相信下面这幅图只用了三秒就画出来了吗? 画画如此简单,这都是源于AIGC的快速发展,所谓AIGC,就是使用人工智能来生成内容,是现在人工智能中最为火热的领域之一!你只需要告诉人工智能

    2024年02月09日
    浏览(45)
  • 宋绪杰:我的大数据成长之旅 | 提升之路系列(三)

    导读 为了发挥清华大学多学科优势,搭建跨学科交叉融合平台,创新跨学科交叉培养模式,培养具有大数据思维和应用创新的“π”型人才,由清华大学研究生院、清华大学大数据研究中心及相关院系共同设计组织的“清华大学大数据能力提升项目”开始实施并深受校内师生

    2024年02月21日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包