2016-06-23 11 views
0

Я использую three.js для создания кривых фигур с использованием параметрических функций. В файле javascript three.js функция THREE.ParametricGeometry неоднократно подталкивает 2D-векторы в переменную faceVertexUvs. В чем смысл этого и что делает массив faceVertexUvs?Какова функция массива faceVertexUV в классе геометрии three.js?

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() ]); 

     } 

    } 

ответ

0

Параметрическая геометрия описывает тела по точкам, расположенным под двумя углами, такими как широта и долгота на сфере. Он также устанавливает UV-координаты, 2d-векторы, которые вы видите здесь, чтобы обеспечить сферическое отображение текстур на этих телах. Поэтому для любой 3d-точки, помещенной в коллекцию faces, 2d-точка, удерживающая текстуру, сопоставляющая UV-координаты, помещается в коллекцию this.faceVertexUvs[0].

С этими наборами UV-координат текстуры будут отображаться, как если бы тело было деформированной сферой, что приемлемо для большинства случаев использования.

Даже если не всегда используется, ТРИ определяет UV-координаты для любого тела, чтобы при необходимости использовать текстуры.