在三维网格上应用纹理,生成三个文件(包括一个.obj、.mtl和一个图集文件)。我已经将纹理映射到两个对象上,现在我想将这些对象合并在一起,但是我不知道如何合并它们的文件。有什么方法(不是非免费工具)吗?
发布于 2016-06-14 06:32:40
对于单个对象wavefront obj文件的朴素文件合并相对容易:
1
,因此需要将以前文件中的每个表的大小添加到其中。例如,如果第一个obj得到以v
开头的10行,这意味着在追加后,第二个obj将开始从11
引用它的点。因此,取每个顶点索引,并将大小添加到索引中。
这同样适用于你得到的任何信息,比如法线,质感和弦或其他任何信息。对不起,我没有使用材料扩展,所以我不知道格式,如果需要在mtl文件中进行任何更改(但我不这么认为)。
如果您也想更新网格(删除不可见的交叉部分),那么您需要使用一些几何方法(不是简单的问题)。
为了确定这里的小例子..。
File1:
v -1.0 -1.0 -1.0
v +1.0 -1.0 -1.0
v +1.0 +1.0 -1.0
v -1.0 +1.0 -1.0
v -1.0 -1.0 +1.0
v +1.0 -1.0 +1.0
v +1.0 +1.0 +1.0
v -1.0 +1.0 +1.0
f 1 2 3 4
f 5 6 7 8
f 1 2 6 5
f 2 3 7 6
f 3 4 8 7
f 4 1 5 8
File2:
v -1.0 -1.0 +1.0
v +1.0 -1.0 +1.0
v +1.0 +1.0 +1.0
v -1.0 +1.0 +1.0
v -2.0 -2.0 +2.0
v +2.0 -2.0 +2.0
v +2.0 +2.0 +2.0
v -2.0 +2.0 +2.0
f 1 2 3 4
f 5 6 7 8
f 1 2 6 5
f 2 3 7 6
f 3 4 8 7
f 4 1 5 8
合并:
v -1.0 -1.0 -1.0
v +1.0 -1.0 -1.0
v +1.0 +1.0 -1.0
v -1.0 +1.0 -1.0
v -1.0 -1.0 +1.0
v +1.0 -1.0 +1.0
v +1.0 +1.0 +1.0
v -1.0 +1.0 +1.0
v -1.0 -1.0 +1.0
v +1.0 -1.0 +1.0
v +1.0 +1.0 +1.0
v -1.0 +1.0 +1.0
v -2.0 -2.0 +2.0
v +2.0 -2.0 +2.0
v +2.0 +2.0 +2.0
v -2.0 +2.0 +2.0
f 1 2 3 4
f 5 6 7 8
f 1 2 6 5
f 2 3 7 6
f 3 4 8 7
f 4 1 5 8
f 9 10 11 12
f 13 14 15 16
f 9 10 14 13
f 10 11 15 14
f 11 12 16 15
f 12 9 13 16
File1有8
顶点,因此File2的f
中的每个顶点索引都由8
增加。我手动完成了整个示例(包括like 1,2),所以希望我没有犯一些愚蠢的错误,但是预览是可以的,所以看起来不是这样的。
如果您想要消除重复的条目(为了空间和速度),那么您需要为每个表重新编制索引表并使用它,而不是仅仅添加.
发布于 2016-08-02 11:12:57
非常感谢斯皮克特,你的解决方案是适用的。对于Mtl文件,我们可以将逐行Mtl文件集成到一个唯一的Mtl文件中,并在其面部记录之前打印出每一种材料的名称。对于解析Obj文件,李博比可能是一个有用的库。合适的教程还解释了您的解决方案的逐步过程。
https://stackoverflow.com/questions/37785215
复制相似问题