Методы сглаживания краев лица в OpenGL - PullRequest
2 голосов
/ 05 июня 2009

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

Ответы [ 3 ]

6 голосов
/ 05 июня 2009

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

glShadeModel(GL_SMOOTH);

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

4 голосов
/ 05 июня 2009

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

GLSL освещение на пиксель + карты нормалей

UPDATE:

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

1 голос
/ 05 июня 2009

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

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

Ура!

...