由于我使用修订版 54 而不是修订版 48,因此我的脚本中出现了以下异常:
Uncaught TypeError: Cannot read property 'map' of undefined three.js:18155
bufferGuessUVType three.js:18155
initMeshBuffers three.js:17963
addObject three.js:21674
initWebGLObjects three.js:21608
render three.js:21145
...
THREE.JSONLoader.createModel three.js:9892
xhr.onreadystatechange
我正在将几何与THREE.GeometryUtils.merge
. 之后我使用合并的几何体来构造一个网格。对于这个网格,我MeshFaceMaterial
用来应用面的材质。由于 r54 这最终导致异常。如果我使用其他一些材料,它会起作用..但是我不能使用原始面的材料。
更新:所有面都指向一种材质geometry.faces[i].materialIndex
,但几何不再包含材质阵列。
更新:我只想合并几何并保留它们的材料 :) 我认为这将是解决方案,但materialIndex
合并时不会更新面部。我发布这个例子以某种方式解释我需要什么。
mesh1 = new THREE.Mesh(new THREE.PlaneGeometry(2,2), new THREE.MeshBasicMaterial({ color: 0xFF0000}));
mesh2 = new THREE.Mesh(new THREE.PlaneGeometry(2,2), new THREE.MeshBasicMaterial({ color: 0x0000FF}));
mesh2.position.y = 3;
THREE.GeometryUtils.merge(mergedGeo, mesh1);
THREE.GeometryUtils.merge(mergedGeo, mesh2);
scene.add(new THREE.Mesh(mergedGeo, new THREE.MeshFaceMaterial([mesh1.material, mesh2.material])));
我可以实现一个自己的逻辑来将合并的面链接到正确的材料,但这有点令人沮丧,因为它在早期版本中工作。