Three.js OBJExporter - 导出多种材料?
Three.js OBJExporter - export multiple materials?
我的场景中有一个网格,我正在尝试使用 Three.js 附带的 the OBJExporter 脚本导出到 OBJ。我的网格应用了多个 material,这意味着每个面都有不同的 materialIndex
。
这是一个使用 THREE.MultiMaterial
对其应用多个 material 的网格。根据"Vertex Texture Coordinate Indices"下的.obj specification,我不太明白,它说:
Optionally, texture coordinate indices can be used to specify texture coordinates when defining a face.
格式
f v1/vt1 v2/vt2 v3/vt3
在 the script 导出的 .obj 数据中,该部分看起来就像一个增量计数器:
f 1/1/1 2/2/2 3/3/3
f 4/4/4 5/5/5 6/6/6
f 7/7/7 8/8/8 9/9/9
f 10/10/10 11/11/11 12/12/12
此外,当我将导出的字符串保存到 .obj 文件,然后使用 OBJLoader 重新导入它,然后对其应用 MultiMaterial 时,它只显示一个 material.
我正试图解开整个谜团,但有很多未知数。我不关心 material 定义本身,我只关心哪个面有 material 索引。 .obj
格式是否可以单独为每个面的多纹理对象保存 material 索引?
是的,.obj
格式可以支持同一对象上的多个 material。最简单的方法是为一组面孔添加 usemtl
调用。类似于:
usemtl 1
f 41/153/11 40/154/13 36/155/20 38/156/5
f 38/157/5 36/158/20 44/159/14 37/160/8
f 24/161/9 29/162/1 27/163/21 23/164/23
f 29/165/1 24/166/9 22/167/10 28/168/4
usemtl 3
f 55/185/2 54/186/5 51/187/8 56/188/3
f 51/189/8 53/190/7 50/191/4 56/192/3
f 54/193/5 49/194/6 53/195/7 51/196/8
f 55/197/2 52/198/1 49/199/6 54/200/5
f 49/201/6 52/202/1 50/203/4 53/204/7
在这种情况下,1
和 3
是我编造的任意标识符。它们可以是任何字符串名称。
要真正为 material 提供一些视觉定义,您需要将 .mtl
文件与 .obj
文件一起包含,就像 this example 一样。但是要让面孔拥有自己的 material 索引,您不需要包含该文件。
我的场景中有一个网格,我正在尝试使用 Three.js 附带的 the OBJExporter 脚本导出到 OBJ。我的网格应用了多个 material,这意味着每个面都有不同的 materialIndex
。
这是一个使用 THREE.MultiMaterial
对其应用多个 material 的网格。根据"Vertex Texture Coordinate Indices"下的.obj specification,我不太明白,它说:
Optionally, texture coordinate indices can be used to specify texture coordinates when defining a face.
格式
f v1/vt1 v2/vt2 v3/vt3
在 the script 导出的 .obj 数据中,该部分看起来就像一个增量计数器:
f 1/1/1 2/2/2 3/3/3
f 4/4/4 5/5/5 6/6/6
f 7/7/7 8/8/8 9/9/9
f 10/10/10 11/11/11 12/12/12
此外,当我将导出的字符串保存到 .obj 文件,然后使用 OBJLoader 重新导入它,然后对其应用 MultiMaterial 时,它只显示一个 material.
我正试图解开整个谜团,但有很多未知数。我不关心 material 定义本身,我只关心哪个面有 material 索引。 .obj
格式是否可以单独为每个面的多纹理对象保存 material 索引?
是的,.obj
格式可以支持同一对象上的多个 material。最简单的方法是为一组面孔添加 usemtl
调用。类似于:
usemtl 1
f 41/153/11 40/154/13 36/155/20 38/156/5
f 38/157/5 36/158/20 44/159/14 37/160/8
f 24/161/9 29/162/1 27/163/21 23/164/23
f 29/165/1 24/166/9 22/167/10 28/168/4
usemtl 3
f 55/185/2 54/186/5 51/187/8 56/188/3
f 51/189/8 53/190/7 50/191/4 56/192/3
f 54/193/5 49/194/6 53/195/7 51/196/8
f 55/197/2 52/198/1 49/199/6 54/200/5
f 49/201/6 52/202/1 50/203/4 53/204/7
在这种情况下,1
和 3
是我编造的任意标识符。它们可以是任何字符串名称。
要真正为 material 提供一些视觉定义,您需要将 .mtl
文件与 .obj
文件一起包含,就像 this example 一样。但是要让面孔拥有自己的 material 索引,您不需要包含该文件。