三个 js 平滑着色出现平坦

Three js smooth shading appearing flat

我正在加载 .stl 个文件,应用 MeshStandardMaterial 而不触及 flatShading 属性,因为默认情况下它是 false

我觉得结果很平淡。如果我尝试设置 flatShading: true 结果是一样的。

我已经尝试了所有我能想到的方法,但是 运行 没有想法 - 欢迎任何建议,谢谢。

geometry.computeVertexNormals();
geometry.computeBoundingBox();
geometry.computeBoundingSphere();
geometry.normalizeNormals();

The result looks very flat to me. If I try setting flatShading: true the result is the same.

STLLoader 始终 returns 非索引缓冲区几何(未连接的三角形汤)。这意味着几何体的面不共享顶点,因此使用 BufferGeometry.computeVertexNormals() 无法生成平滑着色所需的法线。

重新计算边界体积和 BufferGeometry.normalizeNormals() 的使用也与此问题无关。

您可以尝试通过确保资产带有允许平滑着色的法线来解决此问题。或者您 BufferGeometryUtils.mergeVertices() 尝试通过合并顶点生成索引几何体。