1

我正在使用 THREE.js 和 BufferGeometry 来创建基于图像的一组点的视图。目前,我有以下内容:

示例问题 其他角度

可以看出,我构建的“对象”具有只能按预期从相反侧看到的面。

我已经用一组具有相应法线数组的点构建了我的 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(),这仍然会导致没有一个面是实心的/行为正确的。这样,就生成了图像中的结果。

什么可能导致固体表现出这样的行为?

4

0 回答 0