我正在尝试根据Face3中任何Vector3中的任何顶点是否高于y的某个值来更改面部颜色。
我无法弄清楚如何访问Face3内的顶点数组。
我分别尝试了这些,看看我是否能得到y值,但总是说不能读取未定义的属性。
var face1 = new THREE.Face3(b, a, c );
console.log(face1.a[1]);
console.log(face1.a.y);
console.log(face1[0].y)
下面的答案适用于console.log,但是一旦确定了我想要的那些,我似乎无法改变顶点颜色。
var faces = geometry.faces;
var vertices = geometry.vertices;
for ( var i = 0; i < faces.length; i ++ ) {
var face = faces[ i ];
var vertexA = vertices[ face.a ];
var vertexB = vertices[ face.b ];
var vertexC = vertices[ face.c ];
if (vertexA.y > 3.1 ){
vertexA.color = colorPink;
console.log(vertexA);
} else if (vertexB.y > 3.1){
vertexB.color = colorPink;
} else if (vertexC.y > 3.1){
vertexC.color = colorPink;
}}
我没有得到任何控制台错误,但顶点颜色没有变化。我不想改变整个面部颜色,只想改变匹配的顶点。
答案 0 :(得分:1)
a
的属性b
,c
和THREE.Face3
是索引。您可以通过以下方式访问顶点值:
var faces = geometry.faces;
var vertices = geometry.vertices;
for ( var i = 0; i < faces.length; i ++ ) {
var face = faces[ i ];
var vertex = vertices[ face.a ];
console.log( vertex.y );
}