Kameraposition und Licht(er)



  • Grüße,
    ich hab folgendes Problem. Ich habe einen Ikosaeder eine Lichtquelle und eine Kamera(Blickfeld). Die Kamera "schaut" auf den Ikosaeder die Lichtquelle(Diffus) "scheint" von recht nach links auf den Körper.
    So wenn ich aber die Kamera(gluLookAt) bewege änderst sich ja die Position meines Ikosaeders(oder jedes andere Objekt) und es sollte so aussehen als ob ich mich im Raum bewege. Nun da aber ja das Licht fix im Raum liegt schaut es so aus als ob sich der Ikosaeder bewegt(Schattenwurf auf dem W20). Mach ich da was falsch? oder gibt es ne möglichkeit das Licht mit einzubeziehen?

    Und noch was. Welche möglichkeiten hab ich noch auser gluLookAt()? glTranslatef
    klar denke mit dieser Funktion ist auch gluLookAt aufgebaut oder? Gibts noch eine Möglichkeit die vielleicht sogar "besser" ist als mit glTranslatef?

    Danke Euch...

    Gortosch.OpenGL = Noob; :p



  • ich hab zwar keine ahnung von glide, aber funktioniert das nicht auch so, dass wenn man die kamera bewegt ALLE objecte "bewegt" werden ? also auch die lichter.
    axo es seih den du hast ein directional-light, dann kann es sein das du dann irgendwann die dunkle seite deines objects hast, bzw die schatten dann mehr siehst, ist ja auch logisch
    du kannst ja die richtung des lichtes mit der kamera drehen

    aber das sind gedanken eines dx9 nubs :p



  • DEvent schrieb:

    ich hab zwar keine ahnung von glide

    GLIDE???? 😮



  • ...hat echt keiner von den OpenGL Göttern eine Idee? 😃



  • Hä, also ich kapier nicht worauf Du hinauswillst.
    Wenn Du die Kamera bewegst (gluLookAt), dann sieht es schon so aus, als ob Du Dich im Raum bewegst. Dazu gehört ja auch, dass sich die Lichtquelle relativ zu Deiner Kameraposition bewegt, genau wie alle anderen Objekte..



  • DEvent schrieb:

    ich hab zwar keine ahnung von glide

    nunja, ich denke das ist heutzutage nicht ganz so schlimm 😃



  • @durito nein du hast mich da falsch verstanden fix heist das die Lichtquelle sich eben nicht bewegt!!! Und daher schaut es so aus als ob sich NUR der Ikosaeder bewegt! 😉



  • Hm, also wenn Du nur gluLookAt veränderst, dann bewegt sich tatsächlich nur die Kamera. Was wiederum bedeutet, dass sich relativ zur Kamera alle Objekte (inkl. Licht) bewegen, das kann gar nicht anders sein 🙂



  • Hier ist mein kleiner Quällcode 😉

    int DrawGLScene(GLvoid)									
    {
        int b;
    	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);		
    	glLoadIdentity();
    	gluLookAt(0.0f+Winkely, 0.0f, 10.0f+Winkelx, 0.0f+Winkely, 0.0f, 0.0f+Winkelx, 0, 1, 0);
    
    	glRotatef(Winkelz,0.0f,0.0f,1.0f);
    
    	for(b = 0; b < 5; b++)
    	{
    		glBindTexture(GL_TEXTURE_2D, texture[b]);
    		glBegin(GL_TRIANGLES);
    		glNormal3f( Normalen[b].x, Normalen[b].y, Normalen[b].z);  
    		glTexCoord2f(0.5f, 1.0f); glVertex3f(Wuerfel[0][0].x, Wuerfel[0][0].y, Wuerfel[0][0].z);
    		glTexCoord2f(0.0f, 0.0f); glVertex3f(Wuerfel[1][b].x, Wuerfel[1][b].y, Wuerfel[1][b].z);
    		glTexCoord2f(1.0f, 0.0f); glVertex3f(Wuerfel[1][(b+1)%5].x, Wuerfel[1][(b+1)%5].y, Wuerfel[1][(b+1)%5].z);
    		glEnd();
    	}
    

    Und so schaut es wirklich so aus als ob sich nur der Ikosaeder bewegt. Also die hellen und die dunklen Flächen ändern sich, wie wenn sich der Ikosaeder bewegt und die Lichtquelle fest währe.

    de Gortosch 😕



  • Sgt. Nukem schrieb:

    DEvent schrieb:

    ich hab zwar keine ahnung von glide

    GLIDE???? 😮

    ? eben OGL 😑



  • Warum machste das glRotate?
    Du willst doch nur die camera bewegen (mit gluLookAt)...



  • @durito: Schonmal geguckt wie gluLookAt intern arbeitet? Ne? Dann mal lieber machen 😉

    cya
    liquid



  • ...also leute ihr meint das glLookAt() alles bewegt und ich einen fehler bzw. einen Knick in der Optik habe... hmmm... oder... naja welche Methoden benutzt ihr um euch im Raum zu bewegen? Ich meine es gibt doch bestimmt noch andere Möglichkeiten...



  • @LiquidAcid: Hm, warum? Natürlich auch mit Matrizenmultiplikationen, aber was hat das mit dem glRotate in gortosch's Quellcode zu tun?

    @gortosch: Benutz für sowas gluLookAt, das ist am einfachsten. Könntest das was gluLookAt macht natürlich auch von Hand machen, aber warum auch..
    Aber eben, warum hast Du da noch ein glRotate drin?



  • früher konnte man den Ikosaeder um die x y und z achse drehen... is nur für die Drehung des Ikosaeders... mit glLookAt() hat es nix zu tun...


Anmelden zum Antworten