6

我正在寻找一种用于线框模型的简单文件格式。我知道 VRML、u3D 等,但这些对于我的需求来说似乎很重要。我的标准是:

  • 必须有明确的规范。无论是开放的还是非常完善的/记录在案的。
  • 我只需要(想要)简单的模型——顶点和边。我不想处理面孔或物体。如果格式支持更多,那很好,只要我可以忽略它们。
  • 最终用户工具不是必需的,但会很棒。如果不是,它必须是人类可读的(并且对于简单模型是可编辑的)。
  • 能够注释或至少标记节点会很好(但不是必需的)。
  • 我使用什么语言并不重要,但可能的选项是 Java/C++ 和 OpenGL

还是我只是更好地将顶点/边缘列表写入文本文件并完成它?

4

5 回答 5

7

Wavefront OBJ 是一种非常简单的文本文件格式,用于存储 3d 模型,并且所有 3d 建模应用程序(例如,maya、3dsmax、lightwave)都支持它,因此您可以非常轻松地导出和导入模型。

您可以在此处阅读更多信息和规格:

http://www.fileformat.info/format/wavefrontobj/

我建议不要制作自己的文件格式。Wavefront OBJ 非常简单且指定明确。

这是一个 2x2 平面的示例。v代表顶点坐标,f代表面的描述(哪些顶点是相连的):

v -0.500000 -0.000000 0.500000
v 0.000000 -0.000000 0.500000
v 0.500000 -0.000000 0.500000
v -0.500000 0.000000 0.000000
v 0.000000 0.000000 0.000000
v 0.500000 0.000000 0.000000
v -0.500000 0.000000 -0.500000
v 0.000000 0.000000 -0.500000
v 0.500000 0.000000 -0.500000
v -0.500000 -0.000000 0.500000
v 0.000000 -0.000000 0.500000
v 0.500000 -0.000000 0.500000
v -0.500000 0.000000 0.000000
v 0.000000 0.000000 0.000000
v 0.500000 0.000000 0.000000
v -0.500000 0.000000 -0.500000
v 0.000000 0.000000 -0.500000
v 0.500000 0.000000 -0.500000
f 1/1 2/2 5/5 4/4
f 2/2 3/3 6/6 5/5
f 4/4 5/5 8/8 7/7
f 5/5 6/6 9/9 8/8
f 10/10 11/11 14/14 13/13
f 11/11 12/12 15/15 14/14
f 13/13 14/14 17/17 16/16
f 14/14 15/15 18/18 17/17
于 2008-10-11T04:18:40.613 回答
3

我不知道有任何以线框视图为目标的格式。(仅限边缘/顶点)您几乎总是必须至少处理面部。幸运的是,除非您有非常特殊的需求,否则只需使用面部列表中的任何 API 即可完成边缘列表线框渲染。

至于格式,OBJ既好又简单,虽然有点过时了。它也可能是最容易找到文档的格式。Microsoft 的 X 文件非常适合快速而肮脏的渲染,但我一直偏爱 Quake 格式。但是,它们往往非常面向游戏,因此包含很多您可能不想要的信息。

如果这些都不能满足您的需求,请查看COLLADA。它本身可能对您不起作用,但您可以将快速导出器编写为您自己的格式,仅包含边缘/顶点信息,此时您基本上支持地球上的每个建模包:)

于 2008-10-11T04:59:26.507 回答
1

在文本文件中执行这些列表可能更容易。这是我首先想到的!

于 2008-10-11T02:16:48.567 回答
1

POV-Ray 的RAW 三角形格式是我认为最简单的格式。在我看来,你真的不能再简单了。我在几分钟内就实现了这个负载——这是一种非常简单的格式

于 2008-10-11T05:04:37.590 回答
0

OBJ 是最普遍和最简单的,但如果您需要的不仅仅是顶点位置、法线和单个纹理坐标,它就会崩溃。它根本不可扩展。它也是基于文本的,因此在使用大网格时会遇到问题。

GTO 已成为一种新的交换格式。它简单、快速且可扩展,并且有经过生产验证的开源代码可以读写它们:

Gto 文件格式

这已在多个 VFX 和游戏工作室的生产中使用,但是将加载器编写为 OBJ 文件的工作量大致相同(其中一个示例是 OBJ 到 GTO 转换器)。

检查一下,帮助阻止 Collada 膨胀病毒的传播。

于 2008-11-18T19:01:56.740 回答