Я работаю с ТРИ. js и BufferGeometry, чтобы создать представление набора точек на основе изображения. В настоящее время у меня есть следующее:
![other angle](https://i.stack.imgur.com/Sanih.png)
Как видно, у построенного мной "объекта" есть грани, которые можно рассматривать только с противоположной стороны, как предназначены.
Я построил свою 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 ведет себя как таковой?