1

我有下一个问题:我的项目由 .obj 文件、.mtl 文件和纹理(.jpg)组成。

我需要将纹理分成多个文件。但是,当我这样做时,UV 坐标(在映射和反向映射之后)在多个文件上将是相同的,因此会导致使用 meshlab 观看 obj 时出错。

我该如何解决我的问题?

4

1 回答 1

1

Meshlab 确实支持具有多个纹理文件的文件,只需为每个纹理使用单独的材质即可。目前尚不清楚您是否使用 meshlab 或其他程序生成 obj 文件,所以我不确定这是否是与 meshlab 相关的问题。

这是一个最小的多纹理 .obj 文件的示例(8 个顶点,4 个三角形,2 个纹理)

mtllib ./TextureDouble.obj.mtl

# 8 vertices, 8 vertices normals
vn 0.000000 0.000000 1.570796
v 0.000000 0.000000 0.000000
vn 0.000000 0.000000 1.570796
v 1.000000 0.000000 0.000000
vn 0.000000 0.000000 1.570796
v 1.000000 1.000000 0.000000
vn 0.000000 0.000000 1.570796
v 0.000000 1.000000 0.000000
vn 0.000000 0.000000 1.570796
v 2.000000 0.000000 0.000000
vn 0.000000 0.000000 1.570796
v 3.000000 0.000000 0.000000
vn 0.000000 0.000000 1.570796
v 3.000000 1.000000 0.000000
vn 0.000000 0.000000 1.570796
v 2.000000 1.000000 0.000000

# 4 coords texture
vt 0.000000 0.000000
vt 1.000000 0.000000
vt 1.000000 1.000000
vt 0.000000 1.000000

# 2 faces using material_0
usemtl material_0
f 1/1/1 2/2/2 3/3/3
f 1/1/1 3/3/3 4/4/4

# 4 coords texture
vt 0.000000 0.000000
vt 1.000000 0.000000
vt 1.000000 1.000000
vt 0.000000 1.000000

# 2 faces using material_1
usemtl material_1
f 5/5/5 6/6/6 7/7/7
f 5/5/5 7/7/7 8/8/8

这是 TextureDouble.obj.mtl 文件。要测试这些文件,您必须提供 2 个名为 TextureDouble_A.png 和 TextureDouble_B.png 的图像文件。

newmtl material_0
Ka 0.200000 0.200000 0.200000
Kd 1.000000 1.000000 1.000000
Ks 1.000000 1.000000 1.000000
Tr 1.000000
illum 2
Ns 0.000000
map_Kd TextureDouble_A.png

newmtl material_1
Ka 0.200000 0.200000 0.200000
Kd 1.000000 1.000000 1.000000
Ks 1.000000 1.000000 1.000000
Tr 1.000000
illum 2
Ns 0.000000
map_Kd TextureDouble_B.png
于 2019-10-25T11:08:28.973 回答