首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在纹理映射过程之后合并两个.obj文件?

如何在纹理映射过程之后合并两个.obj文件?
EN

Stack Overflow用户
提问于 2016-06-13 08:40:18
回答 2查看 3.1K关注 0票数 4

在三维网格上应用纹理,生成三个文件(包括一个.obj、.mtl和一个图集文件)。我已经将纹理映射到两个对象上,现在我想将这些对象合并在一起,但是我不知道如何合并它们的文件。有什么方法(不是非免费工具)吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-14 06:32:40

对于单个对象wavefront obj文件的朴素文件合并相对容易:

  1. 将第一个文件读入内存 记住每个表的条目数
  2. 将第二个文件附加到内存中(除了faces)
  3. 将第二个文件的面附加到内存中 这是唯一需要改变的东西。所有索引都来自1,因此需要将以前文件中的每个表的大小添加到其中。例如,如果第一个obj得到以v开头的10行,这意味着在追加后,第二个obj将开始从11引用它的点。因此,取每个顶点索引,并将大小添加到索引中。 这同样适用于你得到的任何信息,比如法线,质感和弦或其他任何信息。
  4. 将整个过程保存为单一obj文件

对不起,我没有使用材料扩展,所以我不知道格式,如果需要在mtl文件中进行任何更改(但我不这么认为)。

如果您也想更新网格(删除不可见的交叉部分),那么您需要使用一些几何方法(不是简单的问题)。

为了确定这里的小例子..。

File1:

代码语言:javascript
运行
复制
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:

代码语言:javascript
运行
复制
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 

合并:

代码语言:javascript
运行
复制
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

File18顶点,因此File2f中的每个顶点索引都由8增加。我手动完成了整个示例(包括like 1,2),所以希望我没有犯一些愚蠢的错误,但是预览是可以的,所以看起来不是这样的。

如果您想要消除重复的条目(为了空间和速度),那么您需要为每个表重新编制索引表并使用它,而不是仅仅添加.

票数 7
EN

Stack Overflow用户

发布于 2016-08-02 11:12:57

非常感谢斯皮克特,你的解决方案是适用的。对于Mtl文件,我们可以将逐行Mtl文件集成到一个唯一的Mtl文件中,并在其面部记录之前打印出每一种材料的名称。对于解析Obj文件,李博比可能是一个有用的库。合适的教程还解释了您的解决方案的逐步过程。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37785215

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档