[Open-GL] GluLookAt

  • Hallo,

    riesen Problem! Wir schreiben am Mo eine Klausur in Grafischer-Datenverarbeitung und haben ein kleines Problem. Wir können uns die Funktionsweise von GluLookAt nicht so ganz erklären, genauer die des UP-Vektors. Hier werden immer irgendwelche Objekte gedreht, nur so richtig klar ist mir das nicht!

    Ich hätte hier mal ein paar SourceCodes:


    #include <stdlib.h>
    #include <stdio.h>
    #include <GL/glut.h>


    void display(void);
    void init (void);
    void reshape(int w, int h);

    int main (int argc, char **argv){
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGBA);
    glutCreateWindow("muh");
    init();
    glutDisplayFunc(display);
    glutReshapeFunc(reshape);
    glutMainLoop();
    return 0;
    }


    void display(void){
    glClear(GL_COLOR_BUFFER_BIT);
    glColor3f(1.0,0.0,0.0);
    glLoadIdentity();
    gluLookAt(0.0,0.0,5.0, 0.0,0.0,0.0, 0.0,1.0,0.0);

    //hier zeigt das Objekt nach rechts!

    glPushMatrix();
    glScalef(2.0, 1.0, 1.0);
    glutWireCube(1.0);
    glPopMatrix();
    glPushMatrix();
    glTranslatef(1.0, 0.0, 0.0);
    glRotatef(90.0, 0.0, 1.0, 0.0);
    glutWireCone(0.5, 1.0, 30.0, 30.0);
    glPopMatrix();
    glFlush();
    }

    void init(void){
    glShadeModel(GL_FLAT);
    glClearColor(1.0,1.0,1.0,1.0);
    }

    void reshape(int w, int h)
    {
    glViewport(0,0, (GLsizei)w, (GLsizei)h);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(-2.0, 3.0, -2.0, 2.0, 0.0, 20.0);
    glMatrixMode(GL_MODELVIEW);

    }


    -> bei diesem Programm zeigt es allerdings nach oben (in der Ausganssituation): Warum nicht auch nach rechts?


    #include <stdlib.h>
    #include <GL/glut.h>


    void display(void);
    void init(void);
    void reshape(int w, int h);
    void keyboard(unsigned char key, int x, int y);

    int main (int argc, char **argv){
    glutInitWindowSize(400,400);
    glutInitWindowPosition(100,100);
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE);
    glutCreateWindow(argv[0]);
    init();
    glutReshapeFunc(reshape);
    glutDisplayFunc(display);
    glutKeyboardFunc(keyboard);
    glutMainLoop();
    return 0;
    }


    void display(void){
    glClear(GL_COLOR_BUFFER_BIT);
    glBegin(GL_POLYGON);
    glVertex3d(0.0,0.8,0.0);
    glVertex3d(0.4,0.6,0.0);
    glVertex3d(0.4,-0.8,0.0);
    glVertex3d(-0.4,-0.8,0.0);
    glVertex3d(-0.4,0.6,0.0);
    glEnd();
    glutSwapBuffers();

    }

    void init(void){
    glClearColor(1.0,1.0,1.0,1.0);
    glColor3f(1.0,0.0,0.0);
    }

    void reshape(int w, int h)
    {
    glViewport(0,0, (GLsizei)400, (GLsizei)400);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluOrtho2D(-1.0, 1.0, -1.0, 1.0);
    glMatrixMode(GL_MODELVIEW);
    gluLookAt(0.0,0.0,1.0, 0.0,0.0,0.0, 0.0,1.0,0.0);
    }

    void keyboard(unsigned char key, int x, int y)
    {
    switch(key)
    {
    case '1':
    glRotatef(-45.0,0.0,0.0,1.0);
    glPushMatrix();
    glutPostRedisplay();
    break;
    case '2':
    glScalef(1.0,-0.5,1.0);
    glutPostRedisplay();
    break;
    case '3':
    glLoadIdentity();
    glRotatef(45.0,0.0,0.0,1.0);
    glutPostRedisplay();
    break;
    case '4':
    exit(0);
    default:
    break;
    }
    }

    Unser Prof. konnte uns das nicht wirklich näher bringen und hoffe nun, daß das hier jemand machen kann. Sowas kommt nämlich immer dran und dann wäre es schlecht, wenn ichs net kann :P

    Über Hilfe würde ich mich freuen...

    MfG

  • Der Up-Vektor gibt die Richtung an, die in der Bildebene oben ist. Wenn der Vektor nach rechts zeigt, dann ists so, wie wenn du deinen Kopf nach rechts neigen würdest.

    In einen FBO rendern ist wie eine Schachtel Pralinen - man weiß nie, was man kriegt.

  • In 3D-Modellierungsprogrammen wird der Up-Vector oft als dicker fetter Pfeil dargestellt, wie hier zB in blender:

    [Blockierte Grafik: http://monitzer.com/junk/camera.png]

    [font=verdana,sans-serif]"An über-programmer is likely to be someone who stares quietly into space and then says 'Hmm. I think I've seen something like this before.'" -- John D. Cock[/font]

    opentu.net - freier, unzensierter Informationsaustausch via IRC-Channel!
    Hilfe und Support in Studienangelegenheiten, gemütliches Beisammensein, von und mit Leuten aus dem Informatik-Forum!

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!