如何将Meshes与Textures合并?

时间:2014-08-31 13:58:59

标签: javascript three.js

我有几个网格;每个网格都有不同的纹理。现在我想将它们全部合并:

mergedGeo.merge( mesh.geometry, mesh.matrix);

这很好用。

但是当我想将合并的网格添加到场景时,它们关于每个网格上的纹理的信息都会丢失:

mergedGeo.computeFaceNormals();
group = new THREE.Mesh( mergedGeo, new THREE.MeshBasicMaterial({ color: parseInt("ffffff", 16) }));
group.matrixAutoUpdate = false;
group.updateMatrix();
scene.add( group );

我使用的是第68版。

1 个答案:

答案 0 :(得分:1)

每张脸必须有适当的材料指数。

合并你的几何图形,每次递增materialIndexOffset,从0开始:

mergedGeo.merge( mesh.geometry, mesh.matrix, materialIndexOffset );
...

然后构建材质数组:

var materials = [];
materials.push( material1 );
materials.push( material2 );
....

然后创建你的网格:

mesh = new THREE.Mesh( mergedGeo, new THREE.MeshFaceMaterial( materials ) );

three.js r.68