Entwickler-Ecke
Multimedia / Grafik - Gouraud Shading und Normalen...
Blackbird - Do 31.10.02 18:26
Titel: Gouraud Shading und Normalen...
Hallo alle zusammen!
Wiedereinmal plagt mich ein Problem mit OpenGL und dem lieben Licht!
In einem Tutorial habe ich von "Normal Averaging" gelesen (Kanten werden abgerundet dargestellt in dem man den Normalendurchschnitt nimmt ) - leider war es dort nicht näher beschrieben.
Das Problem is jetzt, dass das bei mir nicht funktioniert.
Deswegen:
Muss ich die normalen jedesmal neu berechnen , oder rotiert OpenGL die Normalen gleich mit ? (müsste eigentlich)
Beispiel(allerdings jetzt nur eine Seite):
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| glrotatef(45,0,1,0); glbegin(GL_Quads);
glnormal3f(0,0,1); glvertex3f(0,0,0); glvertex3f(1,0,0); glvertex3f(1,1,0); glvertex3f(0,1,0);
glend; |
Ausserdem bin ich immer wieder auf das Gouraud Shading gestoßen...bin beim durchlesen aber immer etwas
durcheinander gekommen.
Ist das Gouraud shading das was ich zu erreichen versuche ?
Moderiert von
Peter Lustig: Code- durch Delphi-Tags ersetzt
Andreas Pfau - Mi 31.12.03 18:30
Hallo,
Natürlich - Die Normale ist fest mit dem Objekt verankert.
aber so wie du vorgehst, wird von Gouraud-Shading nix zu sehen sein... Ich erklär dir das mal:
Du hast ein Dreieck. Das hat 3 Vertices. Du gibst eine Normale an. die gilt nun für alle 3 Vertices. Beim berechnen des Lichtes wird nun die Normale genonnem: sie ist für jeden Pixel des Dreiecks gleich. Also strahlt das Licht auf allen Pixeln des Dreiecks in die gleiche Richtung, das Dreieck ist einfarbig.
Beim Gouraudshading gibst du jedem Vertex eine eigene Normale, also vorjedem glVertex() rufst du glNormal() auf, mit verschiedenen Normalen. Nun interpoliert OpenGL die Normalen auf jeden Pixel: Jeder Pixel hat eine eigene Normale, sozusagen. Das Licht strahlt auf jedem Pixel anders ab: in der Mitte grade weg, außen am Dreieck seitlich. Das Dreieck erscheint geölbt, da das Licht ja jetzt nicht mehr grade abstrahlt.
Ich weiß das ist doof zu erklären.. Ich hoffe ich kontne dir helfen. Google hilft aber immer!
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!