2009-06-05 6 views
2

Wenn ich mein menschliches Modell in OpenGL unter Verwendung von Flächennormalen anzünde, wird sehr deutlich, wo sich jede Fläche auf dem Modell befindet. Die Beleuchtung wird durch die Verwendung von Vertex-Normalen deutlich glatter, ist aber immer noch spürbar. Gibt es eine Technik, um organische Modelle zu glätten, ohne zusätzliche Ecken hinzuzufügen (zB Unterteilungen)?Techniken zum Glätten von Flächenkanten in OpenGL

Antwort

6

Wenn Sie einzelne Seiten mit je Vertex Normalen sehen Sie glatte Verkleidung vergessen hätte zu aktivieren:

glShadeModel(GL_SMOOTH); 

Wenn das nicht hilft, sicherzustellen, dass alle Eckpunkte mit der gleichen Position haben auch die gleiche normal. Dies sollte jedoch automatisch vom Mixer erledigt werden. Es ist auch möglich, dass Ihr Modell nur zu wenige Polygone hat. Wenn das der Fall ist, müssen Sie entweder mehr Polygone verwenden oder tun was Basszero sagte. Create a normal map und verwenden Sie das zusammen mit einem GLSL-Shader.

4

Wenn Sie den Zugriff auf eine höhere Auflösung Modell haben/Mesh oder vielleicht ein anständiges 3d modeling tool, die ein hochauflösendes Modell über Unterteilungen oder andere ausgefallene Methoden erstellen können ...

GLSLper-pixel-lighting + normal maps

UPDATE :

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

+0

Ich benutze Blender. Ich halte mein Modell aus Leistungsgründen low-Poly. Phong Shading scheint vielversprechend, wird aber von OpenGL nicht unterstützt und der Vorteil würde den Performance-Hit nicht rechtfertigen. – Kai

+0

Wenn dies keine OpenGL ES 1.1-Frage ist (z. B. iPhone), unterstützt Ihre Hardware wahrscheinlich Shader und Sie können einen Shader schreiben, der phong shading + normales Mapping implementiert. –

+0

Richtig, Sie erstellen ein HighRes-Modell in Blender und verwenden es, um eine normale Karte zu erstellen. Erstellen Sie eine niedrigere Res-Version und verwenden Sie die normalen Map + Shader, um die fehlenden Eckpunktdetails im endgültigen gerenderten Produkt zu erstellen – basszero

1

Ja, es gibt viele verschiedene Techniken. Eine besteht darin, zunächst für jedes Gesicht (das Sie wahrscheinlich für die Scheitelpunkte im Gesicht verwenden) eine Normale zu berechnen und diese Normalen zu verwenden, um für jeden Scheitelpunkt neue Normalen zu berechnen.

Hier ist , wo Sie den Durchschnitt von fünf benachbarten Dreiecken berechnen.

Prost!