波前 OBJ 文件可以具有每个对象(或每个组)的顶点吗?
Posted
技术标签:
【中文标题】波前 OBJ 文件可以具有每个对象(或每个组)的顶点吗?【英文标题】:Can wavefront OBJ files have per-object (or per-group) vertices? 【发布时间】:2020-06-08 14:26:08 【问题描述】:我有一个物体被分成许多小部分。我可以维护一个全局顶点列表并找出属于每个小部分的顶点,但如果我可以相对索引,在我的用例中会更容易。
IE,我指定part 0有8个顶点,part 0的face 0使用那个part的顶点0、3、4。
有没有办法在 Wavefront OBJ 文件中执行此操作?组和对象的工作原理有点不清楚。
例如,以下是否合法?
o myObj1
v 3159.000000 203.000000 1959.000000 1.000000
v 3161.000000 203.000000 1959.000000 1.000000
v 3161.000000 203.000000 1961.000000 1.000000
v 3159.000000 203.000000 1961.000000 1.000000
v 3159.000000 205.000000 1959.000000 1.000000
v 3161.000000 205.000000 1959.000000 1.000000
v 3161.000000 205.000000 1961.000000 1.000000
v 3159.000000 205.000000 1961.000000 1.000000
f 1 4 5
f 4 5 8
f 2 3 6
f 3 6 7
f 1 2 3
f 1 3 4
f 5 6 7
f 5 7 8
f 1 2 5
f 2 5 6
f 4 3 8
f 3 8 7
o myObj2
v 3159.000000 203.000000 1961.000000 1.000000
v 3161.000000 203.000000 1961.000000 1.000000
v 3161.000000 203.000000 1963.000000 1.000000
v 3159.000000 203.000000 1963.000000 1.000000
v 3159.000000 205.000000 1961.000000 1.000000
v 3161.000000 205.000000 1961.000000 1.000000
v 3161.000000 205.000000 1963.000000 1.000000
v 3159.000000 205.000000 1963.000000 1.000000
f 1 4 5
f 4 5 8
f 2 3 6
f 3 6 7
f 1 2 3
f 1 3 4
f 5 6 7
f 5 7 8
f 1 2 5
f 2 5 6
f 4 3 8
f 3 8 7
等等。 (当然假设坐标就是坐标)
编辑:***状态:
OBJ 文件,由于它们的列表结构,能够通过它们的绝对位置来引用顶点、法线等(1 代表第一个定义的顶点,N 代表第 N 个定义的顶点),或通过它们的相对位置(-1 表示最新定义的顶点)。但是,并不是所有的软件都支持后一种方式,相反,有些软件天生就只写后一种形式(由于方便追加元素而无需重新计算顶点偏移等),导致偶尔出现不兼容。
所以这...应该有效吗?然而,目前还不清楚格式会是什么样子。在任何情况下,它都无法在 3D Viewer 中正常工作。
【问题讨论】:
【参考方案1】:聚会有点晚了:)
您可以使用***引用中所述的相对顶点位置;它访问latest(不是last)定义的顶点。如果你用这个替换两个人脸列表:
f -8 -5 -4
f -5 -4 -1
f -7 -6 -3
f -6 -3 -2
f -8 -7 -6
f -8 -6 -5
f -4 -3 -2
f -4 -2 -1
f -8 -7 -4
f -7 -4 -3
f -5 -6 -1
f -6 -1 -2
它在 3D 查看器中显示两个立方体。因此,即使 OBJ 没有将它们与对象或组关联,它们也可以“本地”访问。
您还可以选择将每个对象的顶点反向写入,因此第一个顶点(最后写入)可以称为 -1,第二个称为 -2,依此类推。
【讨论】:
【参考方案2】:顶点编号在单个 OBJ 文件中是连续的,无论使用何种分组。这意味着正顶点编号是绝对的而不是相对的,负顶点编号是相对于最后定义的顶点(但仍包括所有定义的顶点)。
即。顶点定义没有分组。
点(“p”标签)可以(可能?)进行分组,但要呈现为实际点,而不是面部的一部分。
tl;dr 最接近你所尝试的是负索引,但它是否正确加载取决于加载它的程序
【讨论】:
以上是关于波前 OBJ 文件可以具有每个对象(或每个组)的顶点吗?的主要内容,如果未能解决你的问题,请参考以下文章