Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » OpenGL » Zeichenreihenfolge nach Perspektive

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 <
010
29.07.2005, 08:37 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


also am besten zeigst du uns mal wie du die Perspektive Initialisierst, das sollte ja irgendwo geschehen. Und dann gibt es immer nur eine (!) "Kamera" d.h du drehst die Welt udn die Objekte um deinen Sichtwinkel herum, und nciht den Sichtwinkel um die Objekte.

Du kannst z.b sowas machen:


C++:
glLoadIdentity(); // ZeichenMatrix zurücksetzen
glTranslatef(0.0f,0.0f,my_move_z); // verschieben

glPushMatrix(); // Matrixeinstellung speichern (also z.b die verschiebung)

glRotatef(my_rotate_x,0.0f,1.0f,0.0f); // drehen
glRotatef(my_rotate_y,1.0f,0.0f,0.0f); // drehen
glRotatef(my_rotate_z,0.0f,1.0f,1.0f); // drehen
DrawObjekt1();

glPopMatrix(); // Matrixeinstellung laden (also die verschiebung, die drehung vor Objekt1 entfällt)

glRotatef(my_rotate_x2,0.0f,1.0f,0.0f); // drehen
glRotatef(my_rotate_y2,1.0f,0.0f,0.0f); // drehen
glRotatef(my_rotate_z2,0.0f,1.0f,1.0f); // drehen
DrawObjekt2();


--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
29.07.2005, 11:03 Uhr
Drager




Zitat von Lensflare:

hmmm, ist wirklich komisch. Ich hab irgendwie ein problem damit mir vorzustellen wieso es einen unterschied macht, ob ich zuerst den würfel drehe und dann bewege oder umgekehrt.



naja das objekt dreht sich immer um den nullpunkt, das heisst wenn du es verschiebst, rotiert es immer noch um den nullpunkt, aber eben nun mit einem radius (da du ja verschoben hast) d.h. der nullpunkt bzw. rotationsmittelpunkt bewegt sich beim verschieben nicht mit...



Zitat von Lensflare:

ausserdem finde ich es komisch, dass ich bei den funktionen für das drehen und bewegen nicht hinschreibe, was ich bewegen will. Wie kann ich denn 2 verschiedene objekte unabhängig voneinander drehen?



diese funktionen sind global, das heisst alles was danach kommt wir mit diesen matrizen gedreht / verschoben /skaliert etc.
wenn du nun objekte unterschiedlich bewegen willst, musst du die matrizen reseten
(mit glLoadIdentity() - bedeutet das die einheitsmatrix geladen wird) und dann wieder neu verschieben / rotieren etc.

oder eben wie flosoft gemacht hat, mit glpushmatrix() und glpopmatrix()
damit kannst du eben die matrizen die aktuelle waren als du pushmatrix aufgerufen hast wieder zurück holen (vorsicht ist ein stack!)

darum ist es günstig objekte die sich gleich bewegen , gleich nacheinander abzuarbeiten, damit du nicht dauernt die matrix reseten musst...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
29.07.2005, 15:31 Uhr
Lensflare



ich hab jetzt die perspektive wie folgt initialisiert und es geht! hab die zeilen aus einem musterbeispiel herauskopiert.

C++:
    glViewport(0, 0, aufloesung_x, aufloesung_y);    
    glMatrixMode(GL_PROJECTION);                      
    glLoadIdentity();
    
    gluPerspective(45.0f,(GLfloat)aufloesung_x/(GLfloat)aufloesung_y,0.1f,100.0f);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    
    glEnable(GL_TEXTURE_2D);                            
    glShadeModel(GL_SMOOTH);                          
    glClearColor(0.0f, 0.0f, 0.0f, 0.5f);                  
    glClearDepth(1.0);                                        
    glEnable(GL_DEPTH_TEST);                                
    glDepthFunc(GL_LEQUAL);                                  
    glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);



jetzt muss ich mich nur noch mit der ganzen drehung und bewegung auseinandersetzten...

also danke für die hilfe, ich poste bestimmt wieder bald hier rein.
--
Wenn das Gehirn so einfach wäre, dass wir es verstehen könnten, wären wir so einfach, dass wir es nicht verstehen könnten.
(Emerson Pugh Trost)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 <     [ OpenGL ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: