【问题标题】:What is the function of the faceVertexUV array in the three.js Geometry class?three.js Geometry类中faceVertexUV数组的作用是什么?
【发布时间】:2016-10-26 09:15:38
【问题描述】:

我正在使用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() ] );

        }

    }

【问题讨论】:

    标签: javascript three.js uv-mapping


    【解决方案1】:

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

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

    即使不经常使用,THREE 也会为任何身体定义 UV 坐标,以便在需要时使用纹理。

    【讨论】:

      猜你喜欢
      • 2022-08-03
      • 1970-01-01
      • 2019-12-02
      • 2015-01-27
      • 2015-09-12
      • 2019-06-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-28
      相关资源
      最近更新 更多