Autor Beitrag
Blackbird
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 54



BeitragVerfasst: Do 31.10.02 18:26 
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):


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
glrotatef(45,0,1,0);  //wird die Normale zusammen mit den Punkten rotiert ?

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 user profile iconPeter Lustig: Code- durch Delphi-Tags ersetzt
Andreas Pfau
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: 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!

_________________
Life is a bad adventure, but the graphic is really good!