1

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

在此处输入图像描述

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

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

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

1 回答 1

3

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

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

此外,重新计算包围体和使用BufferGeometry.normalizeNormals()与此问题无关。

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

于 2020-05-07T09:08:47.283 回答