*jiriki*: C++&OpenGL: Weltraum simulieren (Normalen&Lichtquelle)

Hi Leute,

Mach nen Jahr Erasmus in San Sebastian, und soll jetzt ab Abschluss der Visualización-Vorlesung nen kleines C++-/OpenGL-Projekt schreiben, in das ich diverse obj-Modelle laden und durchs Weltall fliegen lassen kann. Das Laden und Rumfliegen klappt soweit. Jetzt soll ich als weiteres Feature das Weltall simulieren, das heisst, ne Kugel laden, die zieemlich groß skalieren, die Normalen umkehren und ne Weltalltextur draufkleben. Die Kugel ist soweit reingeladen und kann mit glColor eingefärbt werden. Nun mein erstes Problem, was ich bisher nicht lösen konnte:

Wenn ich mein Light0- ein rein diffuses Licht, als unendlich entfernte Lichtquelle mit

float light0_position[] = { 1.0, 0.0, 0.0, 0.0 };
glLightfv( GL_LIGHT0, GL_POSITION, light0_position );

positioniere, bleibt die nicht statisch, sondern wenn ich mit nem Modell um die Kugel herumfliege und mir das ganze aus der Sicht des Modells anschau, wandert die Beleuchtung der Kugel mit, das heisst, die Kugel wird immer von der rechten Seite angestrahlt. Ich nutze GLUT, initialisiere meine Lichtquelle in ner init()-Funktion, die ich vor der MainLoop() ausführe, bevor also irgendwelche Transformationen mit Kugel oder Modell durchgeführt werden. Ich versteh nicht, warum die Lichtquelle mitwandert.

Gut. Wenn das Problem geklärt sein sollte, würde ich gerne weitergehen, und die Kugel ziemlich groß skalieren, und dann die Normalen der Kugel umkehren, dass sie ins Innere der Kugel zeigen. Das hab ich gemacht, hab die Vektoren mit

glNormal( (-1)*n.x, (-1)*n.y, (-1)*z )

umgekehrt, den Lichtquellen-, den Modell- sowie den Kugelursprung auf 0,0,0 gelegt, und mir das Ganze aus Sicht des Modells angeschaut, doch da hab ich leider nur schwarz gesehen. Wenn ich dann mit dem Modell aus der Kugel rausflieg, kann ich die Kugel matt erkennen. Versteh ich nicht. Hab ich die Normalen nicht korrekt invertiert?

Bin dankbar für jeden Tipp. Grüßle

  1. Hello out there!

    das heisst, die Kugel wird immer von der rechten Seite angestrahlt.

    Warum wird der Himmel angestrahlt? Der Himmel sollte doch eher selbst leuchten (an den Stellen der Textur, die nicht schwarz sind).

    See ya up the road,
    Gunnar

    --
    „Wer Gründe anhört, kommt in Gefahr nachzugeben.“ (Goethe)