Рисование пользовательских фигур с помощью ТРИ Буферной Геометрии - форма просвечивается в зависимости от угла - PullRequest
1 голос
/ 25 января 2020

Я работаю с ТРИ. js и BufferGeometry, чтобы создать представление набора точек на основе изображения. В настоящее время у меня есть следующее:

Example problem other angle

Как видно, у построенного мной "объекта" есть грани, которые можно рассматривать только с противоположной стороны, как предназначены.

Я построил свою BufferGeometry с набором точек с соответствующим массивом нормалей, реализованным так (при условии, что вершины и нормы верны):

   vertices = Float32Array.from(verts)
   normals = Float32Array.from(norms)

   // Make new geometry
   geometry = new THREE.BufferGeometry();

   geometry.setAttribute('position', new THREE.BufferAttribute(vertices, 3))
   geometry.setAttribute('normal', new THREE.BufferAttribute(normals, 3))
   material  = new THREE.MeshPhongMaterial({color: 0xffffff})
   mesh = new THREE.Mesh(geometry, material)

   geometry.computeVertexNormals()

   scene.add(mesh)

Как вы можете видеть пытаясь добавить массив нормалей, я попытался добавить нормали, в которых все они (0,1,0). Без geometry.computeVertexNormals() это все равно приводит к тому, что ни одна из граней не является сплошной / ведет себя правильно. При таком, результат в образе генерируется.

Что может быть причиной того, что solid ведет себя как таковой?

...