首页 > 解决方案 > 如何访问 Face3 Vector3 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;
            }}

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

标签: three.js

解决方案


属性a和是b索引。您可以通过以下方式访问顶点值:cTHREE.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/


推荐阅读