three.js Geometry class中faceVertexUV数组的作用是什么?

What is the function of the faceVertexUV array in the three.js Geometry class?

我正在使用 three.js 使用参数函数生成曲线形状。在 three.js javascript 文件中,THREE.ParametricGeometry 函数重复将 2D 向量推入 faceVertexUvs 变量。这有什么意义,faceVertexUvs 数组有什么作用?

var a, b, c, d;
var uva, uvb, uvc, uvd;
var uvs = this.faceVertexUvs[ 0 ];

    for ( i = 0; i < stacks; i ++ ) {

        for ( j = 0; j < slices; j ++ ) {

            a = i * sliceCount + j;
            b = i * sliceCount + j + 1;
            c = ( i + 1 ) * sliceCount + j + 1;
            d = ( i + 1 ) * sliceCount + j;

            uva = new THREE.Vector2( j / slices, i / stacks );
            uvb = new THREE.Vector2( ( j + 1 ) / slices, i / stacks );
            uvc = new THREE.Vector2( ( j + 1 ) / slices, ( i + 1 ) / stacks );
            uvd = new THREE.Vector2( j / slices, ( i + 1 ) / stacks );

            faces.push( new THREE.Face3( a, b, d ) );
            uvs.push( [ uva, uvb, uvd ] );

            faces.push( new THREE.Face3( b, c, d ) );
            uvs.push( [ uvb.clone(), uvc, uvd.clone() ] );

        }

    }

ParametricGeometry 通过以两个角度放置的点来描述物体,例如球体上的纬度和经度。它还设置 UV 坐标,即您在此处看到的 2d 矢量,以允许在这些物体上进行球形纹理映射。因此,对于推送到 faces collection 的任何 3d 点,保存纹理贴图 UV 坐标的 2d 点将推送到 this.faceVertexUvs[0] collection。

使用这些 UV 坐标集,纹理将被映射,就好像 body 是一个变形的球体,这对于大多数用例来说是可以接受的。

即使不总是使用,三个定义任何 body 的 UV 坐标以允许在需要时使用纹理。