如何访问Face3 Vector3 Three.js

时间:2018-05-17 18:13:47

标签: three.js

我正在尝试根据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;
            }}

我没有得到任何控制台错误,但顶点颜色没有变化。我不想改变整个面部颜色,只想改变匹配的顶点。

1 个答案:

答案 0 :(得分:1)

a的属性bcTHREE.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 );

}

演示https://jsfiddle.net/f2Lommf5/6276/