我遇到的问题是,我使用带有材质的网格来显示几何体的线框。效果很好。然后在一个面上我添加一个新的顶点p并将旧面(a,b,c)分成3个面,覆盖旧面的整个区域 - 然后是3个新面(a,b,p)(b,c) ,p)和(c,a,p) - 删除旧面(a,b,c)然后通过geometry.elementsNeedUpdate = true; geometry.verticesNeedUpdate = true;
如果我使用坚固的材料,那就像魅力一样 - 所有的面孔都以正确的颜色显示出来。但是,如果我使用我的线框材质,例如new THREE.MeshBasicMaterial({ vertexColors: THREE.FaceColors, wireframe:true});
,那么只有我添加的第一个面的边显示,而另外两个不显示。如果我改变首先添加哪个面,那么对于第一个添加的面,线框显示但不再针对其他两个面。所以它不是关于脸,而是关于脸的数量......
所以我想我错过了几何的更新设置,但即使我知道(下面)没有完成任务的所有更新
geometry.elementsNeedUpdate = true;
geometry.verticesNeedUpdate = true;
geometry.morphTargetsNeedUpdate = true;
geometry.uvsNeedUpdate = true;
geometry.normalsNeedUpdate = true;
geometry.colorsNeedUpdate = true;
geometry.tangentsNeedUpdate = true;
geometry.computeFaceNormals();
geometry.computeVertexNormals();
我是如何确保所有线框显示的?
我现在还尝试拍摄修改几何体的面和顶点,并使用它们创建具有相同材质的新几何体。为此它有效。所以面和顶点都如预期的那样好。 (带有修改过的几何图形的版本的屏幕截图 - 要添加的点标记为黄色。请参见一个点似乎不在任何边缘的版本的屏幕截图,其中包含使用了新几何图形的版本修改几何体的顶点和面的副本 - 要添加的点标记为黄色,正如您所看到的那样,所有边缘都显示良好)
干杯 Ť