用于将三维模型导入OpenGL/C++项目的推荐文件格式和图形库



如果您想:

  • 在3D编辑器中为对象建模,例如Blender、Maya等
  • 将模型导出为数据/文件格式
  • 使用OpenGL和C/C++将模型导入项目

然后:

  • 您建议导出到什么文件格式,即简单性、可移植性和兼容性(即通用/流行)
  • 您建议使用哪些图形库将模型导入OpenGL C/C++项目(即最好是开源)
  • 此外,是否有数据/文件格式也可以捕捉动画,即"动画模型"格式,以便动画可以在3D编辑器中建模,并在代码中以某种方式调用(例如,动画序列中帧的可访问性或保存/加载与随时间变化相关的详细信息的其他模式)

总的来说,我追求简单是首要任务,即帮助我开始结合我在艺术和计算机科学方面的背景。我是麻省大学计算机科学专业的学生,同时也是一名"伪"艺术双专业学生,在我的大学选修平面设计,并在波士顿艺术学院的夏/冬课程中上课。所以,换句话说,我不是一个完全的新手,但与此同时,我真的不想让选项被疯狂的高级配置所淹没,这让我很难开始一个基本的演示项目;即作为理解如何弥合这两个世界之间的差距的第一步,例如创建以用户可以交互的3D角色为特征的程序。

COLLADA(我在结尾用"啊"表示)和Assimp(例如)。

那么,为什么是COLLADA?简单:

  • COLLADA是由Khronos(特别是索尼)制作的开放标准。开放标准格式的美妙之处在于,它是一个标准!您可以确信,一个符合标准的产品的任何输出也会被另一个符合规范的产品正确读取。遗憾的是,一些三维建模产品在衡量COLLADA标准符合性方面并没有那么特别。但请放心:Blender、Maya、3ds Max和三维建模中的所有其他大牌都对该格式有很好的支持
  • COLLADA使用XML。如果你计划创建自己的读者或作家,这会让你变得更简单
  • 附加:我认为,COLLADA是唯一一种与特定公司无关的格式。你知道,这对我们来说是一件非常好的事情
  • 附加2:众所周知,COLLADA的解析速度很慢。这是真的。但想想看:所有其他非二进制格式(如fbx)也有同样的问题。对于您的需求,COLLADA应该足够了
  • 附加3:COLLADA支持动画

对于导入程序库,我强烈推荐Assimp。为什么?

  • Assimp支持你能想象到的任何流行格式。它对所有格式都有一个统一的接口,因此切换到另一种格式就不那么麻烦了
  • Assimp是可扩展的。因此,您可以导入您的专有格式,但仍然不会修改您的代码
  • 附加4:Assimp是开源!让我们支持开源软件

首先,您可以在这里阅读关于加载lbs的建议模型。Lib-Assimp非常好,支持多种格式。对于首选格式。Collada-I不推荐,因为这是基于XML(文本)的格式,解析速度很慢。Obj格式也很普遍,但也存在与Collada相同的问题。如果你想编写自己的解析器,它仍然很好,因为它的结构非常简单。但相反,我建议使用二进制的3D。不过它不支持动画。目前最流行的同时支持静态网格和动画的格式是FBX。您可以从Autodesk免费下载FBX SDK并将其连接到您的引擎。我之所以选择FBX,是因为SDK和格式都非常强大。例如,在FBX中,您不仅可以嵌入几何体和动画,还可以嵌入灯光、相机等场景对象。Autodesk文档也非常好。希望能有所帮助。

我建议使用您自己的自定义格式,基本上只是程序中使用的顶点缓冲区和索引缓冲区的二进制转储。(使用d3d术语,我知道opengl有相同的概念,但不记得它们是否有不同的名称)。

然后,我会使用assimp编写一个单独的程序,该程序几乎可以采用任何格式,并以自定义格式写出文件。然后,您可以使用collada或whatver来存储实际模型,但不需要在运行时加载该格式的复杂性和缓慢性。

最新更新