简单的线框格式是什么?

6
我正在寻找一种简单的文件格式用于线框模型。我知道VRML、u3D等格式,但这些格式对我的需求来说过于复杂。我的标准如下:
  • 必须有明确的规范,要么是开放式的,要么是非常成熟/有文档支持的。
  • 我只需要(想要)简单的模型——顶点和边缘。我不想处理面部或对象。如果该格式支持更多内容,那就没关系,只要我能忽略它们即可。
  • 终端用户工具并不是必需的,但会很好。如果没有,它必须是人类可读的(对于简单模型也可以进行编辑)。
  • 能够注释或至少标记节点会很好(但不是必需的)。
  • 使用哪种语言都无所谓,但可能的选项是Java/C++和OpenGL。

还是直接将顶点/边缘列表写入文本文件比较好?

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

如果这是针对2x2平面的话,我真的看不出它为什么是“简单”的!定义了18个顶点和8个面,而本应只有4个顶点和1个面... - freespace
@freespace:显然这是2x2个面,而不是2x2个顶点。此外,他创建了其中的两个(可能是无意中创建的)。 - Mike F
谢谢提供的示例 - 对于一个2x2平面来说,看起来非常复杂。您提供的链接有一个更简单的2x2平面示例。 - Draemon

3
我不知道有任何专门针对线框图的格式(仅边缘/顶点),你几乎总是需要处理至少面。幸运的是,除非您确实需要仅边缘列表的特定需求,否则可以使用几乎任何 API 从面列表进行线框图渲染。OBJ 是一种良好且简单的格式,虽然有点过时,但也很可能是最容易找到文档的格式。微软的 X 文件非常适合快速而脏的渲染,但我一直喜欢地震格式。它们往往非常面向游戏,并包含您可能不想要的大量信息。如果这些都不符合您的需求,也许可以考虑COLLADA。它本身可能对您没用,但您可以将其快速导出为仅包含边缘/顶点信息的自己的格式,此时您基本上已经支持了全球每个建模软件 :)

我只需要边缘而不是面的原因是因为我处理的是非常简单的模型,我认为这样会更容易。 - Draemon

1

也许在文本文件中编写这些列表会更容易。这是我首先想到的事情!


1

POV-Ray的原始三角形格式是我认为最简单的。 在我看来,你真的无法再简单了。 我只用了几分钟就实现了对它的加载 - 它是一个非常非常简单的格式


0
OBJ是最常见和最简单的格式,但如果需要更多的顶点位置、法线和纹理坐标,它就会出问题。它没有可扩展性,而且由于是文本格式,处理大型网格时会有困难。
GTO作为一种新的交换格式正在崭露头角。它简单、快速、可扩展,并且有一个经过生产验证的开源代码可以读写它们: Gto文件格式 这已经在几家视觉特效和游戏工作室的制作中使用,并且编写一个加载器与OBJ文件相当。其中一个示例是OBJ到GTO的转换器。
去看看吧,帮助阻止Collada膨胀病毒的传播。

听起来很有趣 - 但是所有三个文档页面都是404。我稍后再试。 - Draemon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接