1. Weiterleitung zu NetzLiving.de
  2. Forum
    1. Unerledigte Themen
  3. zum neuen Forum
  • Anmelden
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

[Open-GL] GluLookAt

  • Heinzel
  • 29. Juni 2007 um 18:44
  • Unerledigt
Hallo zusammen,

das Informatik-Forum geht in den Archivmodus, genaue Informationen kann man der entsprechenden Ankündigung entnehmen. Als Dankeschön für die Treue bekommt man von uns einen Gutscheincode (informatikforum30) womit man bei netzliving.de 30% auf das erste Jahr sparen kann. (Genaue Infos sind ebenfalls in der Ankündigung)

Vielen Dank für die Treue und das Verständnis!
  • Heinzel
    Punkte
    10
    Beiträge
    1
    • 29. Juni 2007 um 18:44
    • #1

    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

  • Wolfibolfi
    Punkte
    14.936
    Beiträge
    2.942
    • 29. Juni 2007 um 19:14
    • #2

    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.

  • hal
    Punkte
    11.122
    Beiträge
    2.208
    • 30. Juni 2007 um 11:31
    • #3

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

  • Maximilian Rupp 27. Dezember 2024 um 12:05

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

  1. Datenschutzerklärung
  2. Impressum