三个js平滑着色显得平坦

Mus*_*ons 2 javascript three.js stl-format

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

在此输入图像描述

结果对我来说看起来很平淡。如果我尝试设置flatShading: true结果是相同的。

我已经尝试了我能想到的一切,但已经没有想法了 - 欢迎任何建议,谢谢。

geometry.computeVertexNormals();
geometry.computeBoundingBox();
geometry.computeBoundingSphere();
geometry.normalizeNormals();
Run Code Online (Sandbox Code Playgroud)

Mug*_*n87 5

结果对我来说看起来很平淡。如果我尝试设置 flatShading: true 结果是相同的。

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

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

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