2014-02-03 2 views
0

Что такое использование computeFaceNormals(), computeVertexNormals() and computeMorphNormals().Что такое использование computeFaceNormals, computeVertexNormals и computeMorphNormals

Я прокомментировал geometry.computeVertexNormals() в примере, и модель появлялась так, как будто было дано плоское затенение. когда я добавил geometry.computeVertexNormals(), модель появлялась так, как будто было дано плавное затенение. Используется ли это geometry.computeVertexNormals()?

ответ

1

Да, это так. Как следует из названия, он вычисляет нормали. Посмотрите, что такое версальные и лицевые нормали. Функция computeVertexNormals довольно проста по своему характеру, и поскольку вы не можете использовать какой-либо параметр для сглаживания (кроме «взвешенных», чтобы дать несколько лучшие визуальные результаты), функция сгладит весь объект. Поиск этой темы в три-js github, я реализовал базовый метод (не на 100% правильный), чтобы определить сглаживание под углом, так что, например, порог 45 ° будет только сглаживать нормали вершин из двух смежных граней, если их лицевые нормали не отличаются более чем на 45 градусов. Таким образом, вы можете добиться лучшего результата сглаживания для неорганических объектов.

Что касается метода three.js, computeVertexNormals предназначен только тогда, когда вы действительно хотите сгладить весь объект или когда ваш импортер неправильно импортирует нормали вершин, вы можете применить к своей модели более тонкое затенение вместо плоского затенения, которое в большинстве случаев выглядит довольно уродливым ^^

Смежные вопросы