Когда я освещаю свою человеческую модель в OpenGL, используя нормали лица, очень хорошо видно, где каждое лицо находится на модели. Освещение становится значительно более плавным при использовании нормалей вершин, но все же заметно. Существует ли какая-либо техника для сглаживания органических моделей без добавления дополнительных вершин (например, подразделений)?
Методы сглаживания краев граней в OpenGL
Ответы (3)
Если вы видите отдельные грани с нормалями для каждой вершины, возможно, вы забыли включить сглаживание:
glShadeModel(GL_SMOOTH);
Если это не помогает, убедитесь, что все вершины с одинаковым положением также имеют одинаковую нормаль. Однако это должно быть сделано блендером автоматически. Также возможно, что в вашей модели слишком мало полигонов. Если это так, вам нужно либо использовать больше полигонов, либо делать то, что сказал Baszero. Создать карту нормалей и используйте его вместе с шейдером GLSL.
Если у вас есть доступ к модели/сетке с более высоким разрешением или, возможно, к приличному инструменту для 3D-моделирования, который может создавать модель высокого разрешения с помощью подразделений или других причудливых методов...
GLSL попиксельное освещение + карты нормалей< /а>
ОБНОВИТЬ:
http://www.blender.org/development/release-logs/blender-246/render-baking/
Да, есть много разных техник. Первый заключается в том, чтобы сначала вычислить нормаль для каждой грани (которую вы, вероятно, используете для вершин грани) и использовать эти нормали для вычисления новых нормалей для каждой вершины.
Вот один, где вы вычисляете среднее значение пяти соседних треугольников.
Ваше здоровье !