Вопрос

Когда я освещаю свою модель человека в OpenGL, используя нормали лица, становится очень ясно, где находится каждое лицо на модели.Освещение становится значительно более плавным при использовании нормалей вершин, но все равно заметно.Существует ли какой-либо метод сглаживания органических моделей без добавления дополнительных вершин (например.подразделения)?

Это было полезно?

Решение

Если вы видите отдельные грани с нормалями для каждой вершины, возможно, вы забыли включить сглаживание граней:

glShadeModel(GL_SMOOTH);

Если это не помогает, убедитесь, что все вершины с одинаковой позицией также имеют одинаковую нормаль.Однако блендер должен делать это автоматически.Также возможно, что в вашей модели слишком мало полигонов.В этом случае вам придется либо использовать больше полигонов, либо делать то, что сказал Basszero. Создать нормальную карту и используйте это вместе с шейдером GLSL.

Другие советы

Если у вас есть доступ к модели/сетке с более высоким разрешением или, возможно, к приличному инструмент 3D-моделирования который может создать модель высокого разрешения с помощью подразделений или других причудливых методов...

ГЛСЛ попиксельное освещение + нормальные карты

ОБНОВЛЯТЬ:

http://www.blender.org/development/release-logs/blender-246/render-baking/

Да, есть много разных техник.Один из них — сначала вычислить нормаль для каждой грани (которую вы, вероятно, используете для вершин грани) и использовать эти нормали для расчета новых нормалей для каждой вершины.

Вот один где вы вычисляете среднее значение пяти соседних треугольников.

Ваше здоровье !

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top