C++ 用于将三维模型导入OpenGL/C++;项目
如果您想:C++ 用于将三维模型导入OpenGL/C++;项目,c++,opengl,graphics,3d,file-format,C++,Opengl,Graphics,3d,File Format,如果您想: 在3D编辑器中为对象建模,例如Blender、Maya等 将模型导出为数据/文件格式 使用OpenGL和C/C++将模型导入到项目中 然后: 您建议导出到哪种文件格式,即简单性、可移植性和兼容性(即通用/流行) 您建议使用哪些图形库将模型导入到OpenGL C/C++项目中(即最好是开源) 此外,是否存在也捕获动画的数据/文件格式,即“动画模型”格式,以便动画可以在3D编辑器中建模,并在代码中以某种方式调用(例如,可访问动画序列中的帧或用于保存/加载随时间变化相关细节的其他范例
- 在3D编辑器中为对象建模,例如Blender、Maya等
- 将模型导出为数据/文件格式
- 使用OpenGL和C/C++将模型导入到项目中
- 您建议导出到哪种文件格式,即简单性、可移植性和兼容性(即通用/流行)
- 您建议使用哪些图形库将模型导入到OpenGL C/C++项目中(即最好是开源)
- 此外,是否存在也捕获动画的数据/文件格式,即“动画模型”格式,以便动画可以在3D编辑器中建模,并在代码中以某种方式调用(例如,可访问动画序列中的帧或用于保存/加载随时间变化相关细节的其他范例)
- COLLADA是由Khronos(特别是索尼)制作的开放标准。开放标准格式的美妙之处在于它是一个标准!您可以确信,标准一致性产品的任何输出也会被另一个标准一致性产品正确读取。但遗憾的是,一些3d建模产品在衡量COLLADA的标准一致性方面并没有那么特别。但仍然可以放心:Blender、Maya、3ds Max和所有其他3d建模领域的大牌公司都对该格式有很好的支持
- COLLADA使用XML。如果你打算创建自己的读者或作者,这会让你变得更简单
- 附加:我认为COLLADA是唯一一种与特定公司无关的格式。你知道,这对我们来说是件好事
- 附加2:众所周知,COLLADA的解析速度很慢。没错。但想想看:所有其他非二进制格式(如fbx)也有同样的问题。对于您的需要,COLLADA应该足够了
- 附加3:COLLADA支持动画李>
- Assimp支持您可以想象的任何流行格式。它有一个针对所有格式的统一接口,因此切换到另一种格式不那么麻烦
- Assimp是可扩展的。因此,您可以导入专有格式,但仍然不修改代码
- 附加4:ASIMP是开源的!让我们支持开源软件吧李>
希望有帮助。我建议使用您自己的自定义格式,基本上只是程序中使用的顶点缓冲区和索引缓冲区的二进制转储。(使用d3d术语,我知道opengl有相同的概念,但不记得它们是否有不同的名称)
然后,我将使用assimp编写一个单独的程序,该程序采用几乎任何格式,并以自定义格式写出文件。然后,您可以使用collada或whatver来存储实际模型,但不具备在运行时加载该格式的复杂性和缓慢性。+1,这是一个很好的问题。至于“也捕捉动画的数据/文件格式”,它几乎就是为此而设计的。如果你在Windows上,祝你好运;-)好的,我去看看。(通过命令行在Mac OSX上构建)谢谢!:DCollada解析速度慢,特别是对于复杂模型;)@米切利夫绝对正确。但就他的目的而言,COLLADA比他所要求的要多,所以在这种情况下,他也可以使用3Ds和lib3ds。快速简单。科拉达有点老派;)我认为你错了:“非二进制格式(如fbx)”fbx是二进制的!:)@MichaelIV请参见:+1了解FBX建议。我在工作中使用过它,其他游戏工作室也使用过。SDK很好,支持很多东西。你为FBX做了一个很好的案例。我一定会探索FBX SDK和Assimp。另外,谢谢你指出另一个stackoverflow帖子。非常有用。:)如果这样做有实际意义的话,也许这是未来需要探索的问题。以前也曾走过这条路,也就是说,我曾经认为建立自己的图书馆是“一切”的最佳解决方案,但主要是不值得“重新发明wh”