Ich habe mir das Licht-Tutorial angesehen.
Allerdings habe ich ein Problem mit der Position.
Zitat:
Stationäre Lichtquellen
Lichtquellen, die an einer bestimmten Stelle in der Szene stehen, müssen mit der Kamerabewegung mitgeschoben werden. Entsprechend muss das Licht angegeben werden, bevor die Modelviewmatrix durch Objekte verschoben wird, aber nachdem die Kamera initialisiert wurde.
glLoadIdentity; ..glRotatef, glTransaltef.. für die Kamera glLightfv(GL_LIGHT0, GL_POSITION, @position[0]); glPushMatrix; ..glRotatef, glTransaltef.. für die Objekte DrawObjekts; glPopMatrix;
Das ist der Ausschnitt des Positionierens...
Das geht doch genau so, wie das Positionieren einer Box?!
Ich rotiere mein "Level" ganz normal. und IN diesem Level steckt auch mein Licht.
Also müsste dies doch dort bleiben wos ist oder?
Also an der Stelle zeichne ich noch nen Dreieck, wo das Licht sein soll.
Aber irgendwie wandert es mit.
Registriert: Di Dez 02, 2003 12:47 Beiträge: 300 Wohnort: Marburg
Wo ist denn im unteren bild das licht?
Naja oben sieht die Kugel falschrum beleuchtet aus, wenn ichs richtig erkenne.
Sind die Normalen eventuell falsch berechnet, zeigen sie in die falsche richtung oder werden sie falsch aufgerufen???
_________________ Nothing, oh sweet nothing,
today we are doing nothing at all...
http://www.geo-progs.de
Registriert: Di Dez 02, 2003 12:47 Beiträge: 300 Wohnort: Marburg
Huch, die reihenfolge ist schon richtig so (oder ich steh gerade voll aufm schlauch).
Hast du die sache mit den normalen mal durchgesehen???
Ich hatte vor ein par tagen einen fehler mit der normalenrichtung und wollts erst auch nicht glauben.
Vielleicht sind ja auch die lichtcoordinaten vertauscht, oder der vierte parameter der Position ist nicht 1???
Viel mehr fellt mir nicht ein, aber ich denke es ist ein einfacher fehler.
Eventuell könntest du noch mehr Quelltext posten, wenn der nicht zu groß ist??
Die bilder sind ein bischen schlecht zu erkenne, ich seh zum beispiel nichtz genau, ob der boden rechts im zweiten bild hoch oder runter geht (dass würde ja auch eigentlich aus correcter beleuchtung hervorgehen
_________________ Nothing, oh sweet nothing,
today we are doing nothing at all...
http://www.geo-progs.de
glEnable(GL_NORMALIZE);
Wenn ich das davor setze, ist alles schwarz.
Nun aber mal was anderes, wie siehe ich obs richtig oder falsch beleuchtet ist? :-/
Das mit den Normalen, wie sehe ich das denn?
Registriert: Di Dez 02, 2003 12:47 Beiträge: 300 Wohnort: Marburg
Naja du weißt wo dein licht sein sollt.
Wenn jetzt alles, was hell sein sollte, dunkel ist
und alles, was dunkel sein sollte, hell ist, usw
dann sind die Normalen genau falschrum.
Ich weiß ja nicht wie du sie berechnest, ich mach das, wenn p1,p2,p3 die vektoren der Punkte eines Dreieckes sind, mit:
(p1-p2)x(p1-p3)
wobei mann dass natürlich nicht einfach so hinschreiben kann, da delphi ja von sich aus nicht mit vektoren rechnen kann.
also:
nx:=+(p1y-p2y)*(p1z-p3z)-(p1z-p2z)*(p1y-p3y);
ny:=-(p1x-p2x)*(p1z-p3z)+(p1z-p2z)*(p1x-p3x);
nz:=+(p1x-p2x)*(p1y-p3y)-(p1y-p2y)*(p1x-p3x);
Ähm naja dass ist dir wohl auch klar.
Wenns nun alles falschrum ist rechne ich hallt:
(p1-p3)x(p1-p2)
OpenGl berechnet die Farbe des Lichts, das auf ein Objekt trifft mithilfe der Richtung aus der das Licht kommt und der Ausrichtung der Oberfläche eines Vertex.
Da steht doch OpenGL berechnet das?! ^^
Habe keine Normalen berechnet Da stand doch nur, dass man die Normalen auch mitgeben KANN...
Also muss ich das auch noch machen :-/
Muss ich da jetzt für jedes Dreieck dies berechnen?
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Ja, Normalen MUSS man berechnen wenn man korrekte Beleuchtung will, das was du da zitierst bezieht sich auf das Licht und nicht die Normalen. OpenGL braucht diese, da man über Normalen diverse Beleuchtungseffekte realisieren kann. (z.B. weiche/harte Kanten)
Ok, danke euch!
Dann werde ich erstmal versuchen meine Normalen zu berechnen...
Aber die Frage
"Für jedes Dreieck?" Bleibt noch offen.
Dann muss ich ja meine kompletten Models berechnen oder?
Wie sieht das mit der Geschwindigkeit aus?
Sonst lass ich die Figuren weg :-/
Die Normalen muss ich ja dann jeden Frame berechnen?!
Denn die Figuren bewegen sich ja ...
Ja da muss ich sie dann auch immer berechnen?!
Also fürs Level muss ich die nur einmal berechnen und dann immer auslesen, oder net?
Aber für die beweglichen figuren? jeden Frame oder was? :-/
Ich dachte erst ich hätts kapiert :-/
Ich such mal im Netz nach noch nem Lichttutorial.
Denn bis auf die Normalen ist das gut verständlich
Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.