Три js гладких штриховок кажутся плоскими - PullRequest
1 голос
/ 07 мая 2020

Я загружаю .stl файлы, применяя MeshStandardMaterial, не затрагивая свойство flatShading, поскольку по умолчанию это false.

enter image description here

Результат мне кажется очень плоским. Если я попробую установить flatShading: true, результат будет тот же.

Я перепробовал все, что мог придумать, но у меня закончились идеи - любое предложение приветствуется, спасибо.

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

1 Ответ

3 голосов
/ 07 мая 2020

Результат мне кажется очень плоским. Если я попробую установить flatShading: true, результат будет таким же.

STLLoader всегда возвращает неиндексированную геометрию буфера (суп из несвязанных треугольников). Это означает, что грани геометрии не имеют общих вершин, и поэтому использование BufferGeometry.computeVertexNormals() не может создавать нормали, необходимые для плавного затенения.

Также пересчет ограничивающих объемов и использование BufferGeometry.normalizeNormals() не имеют отношения к этой проблеме.

Вы можете попытаться решить эту проблему, убедившись, что в активе есть нормали, обеспечивающие плавное затенение. Или вы даете BufferGeometryUtils.mergeVertices () попытку, которая создает индексированную геометрию путем слияния вершин.

...