die perfekte Ebene???
-
http://de.wikipedia.org/wiki/Axonometrie
Einfach Projektionsmatrix selber setzen: Basis für Isometrie:
-
Hallo, danke für die vielen Beitrage!
ja die Ebene vom Lego Designer ist Isommetrisch das hab ich vor ner Woche mit einem CAD Programm rausgemossen.
-
Einer der Parameter von gluPerspective ist dafür verantwortlich.
-
MatthiasA schrieb:
ja die Ebene vom Lego Designer ist Isommetrisch
Ganz sicher nicht.
MatthiasA schrieb:
das hab ich vor ner Woche mit einem CAD Programm rausgemossen.
Wow. Ich kann mit bloßem Auge erkennen, dass da eine perspektive Verzerrung vorliegt. Die äußeren Begrenzungslinien sind nicht parallel. Wenn also nicht schon das dargestellte Gitter selbst verzerrt ist, ist das keine isometrische Projektion.
-
MatthiasA schrieb:
ja die Ebene vom Lego Designer ist Isommetrisch das hab ich vor ner Woche mit einem CAD Programm rausgemossen.
Nein, ist sie nicht. Eine isometrische Projektion ist eine Parallelprojektion unter einem bestimmten vorgegebenen Winkel. Das ist hier aber keine Parallelprojektion: Kannst Du ganz einfach daran erkennen, dass die Kästchen hinten kleiner als vorne sind. Bei einer Parallelprojektion wäre das nicht der Fall.
-
hat nicht so recht geklappt mit der isometrie Perspektive
bei mir siehts so aus
gluPerspective(45.0f,(float)width/(float)height,0.1f,3000.0f);//3000
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);wie projeziere ich die Ebene richtig?
auch die Rotation meines Trackballs passt nicht mit
der Ebene vom LegoDesigner zusammen
-
gluPerspective erzeugt eine Matrix für eine perspektivische Projektion. Du gibst da ja ein View Frustum in Form eines Pyramidenstumpfs an, das dann auf einen Einheitswürfel abgebildet wird - ist klar, dass dann weiter entfernte Objekte kleiner dargestellt werden und du eine perspektivische "Verzerrung" bekommst.
Die isometrische Perspektive hingegen ist eine Parallelprojektion.
-
okay aber wie kann ich den Winkel so einstellen dass es so aussieht wie
bei dem Designer oder wie ändere ich das mit dem Pyramidenstumpf?also ist das von Lego verwendete eine isometrische Parallelprojektion?
und ich habe eine perspektivische Projektion verwendet?Gruß Matthias
-
jaja ignoriere doch einfach meine antwort
-
Vertexwahn schrieb:
jaja ignoriere doch einfach meine antwort
Was mir diese angegebene Basis bringen sollte, ist mir auch nicht klar.
@MatthiasA: Kennst du google?
http://www.google.de/search?as_q=matrix+isometrische+projektion&hl=de&num=10&btnG=Google-Suche&as_epq=&as_oq=&as_eq=&lr=&cr=&as_ft=i&as_filetype=&as_qdr=all&as_occt=any&as_dt=i&as_sitesearch=&as_rights=&safe=images
-
der Fehler bei mir liegt in der Perspektive denke ich
ich bette nun die 3x3 in eine 4x4 Matrix ein
-
MatthiasA schrieb:
also ist das von Lego verwendete eine isometrische Parallelprojektion?
Nein, ist es nicht. Wer Dir das hier sagt, hat entweder das Bild nicht genau angeguckt oder hat keine Ahnung.
-
bin nun soweit gekommen aber es ist noch nicht die gleiche Ebene wie die im Lego designer
diese ist nun isometrische Perspektive
mit Parralel Projektion
gelöst durch die Projektionsmatrix-1 -1 1 0
1 -1 1 0
0 2 1 0
0 0 0 80
Gruß Matthiashttp://www.asselborn-matthias.de/para.JPG
http://www.asselborn-matthias.de/para3.JPGdie vom Legodesigner ist nicht isometrisch und auch keine Prallelprojektion weil vorne die Kästchen doch größer als die Hinteren sind!
wie erstelle ich also solch eine Ebene?
-
MatthiasA schrieb:
wie erstelle ich also solch eine Ebene?
Das hat dir Gregor eigentlich schon gesagt, im zweiten Beitrag in diesem Thread.
-
habe nun
gluPerspective(24.0f,(GLfloat)width/(GLfloat)height,0.1f,3000.0f);
verwendet.
Gregor hatte rechtNun sieht sie eigentlich gut aus.
habt Ihr noch Verbesserungsvorschläge?
Verschiedene Linenestärken und Anti Alasing werde ich noch hinzufügen.habe nun noch nicht gluLookAt verwendet
sondern die Ebene mit den Funktionen[code]
virtual System::Void Render(System::Void)
{
MySetCurrentGLRC();
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear screen and depth bufferglLoadIdentity(); // Reset the current modelview matrix
glTranslatef(0.0f,0.0f,-800.0f);
//gluLookAt(1,0,0,45,0,-1000,0,1,0);t2->arcball_rotate();
glRotatef(38,1.0f,0.0f,0.0f);
glRotatef(45,0.0f,1.0f,0.0f);
grid_x(200);
code]dargestellt
ich finde das 2 mal Rotate aber nicht sonderlich schön
kann man das auch mit gluLookAt machen?http://www.asselborn-matthias.de/ebene.JPG
Gruß Matthias
-
hab nun gluLookAt verwendet
Mittelpunkt Ebene (0,0,0)
Koordinaten Augpunkt
(636 , 636, 900) oder
sinus 45 grad * 900 = 636
also gluLookAt(636,636,900,0,0,0,0,1,0);oder
(900 , 1272 ,1800)
sinus 45 grad * 1800 = 1272
also gluLookAt(900,1272,1800,0,0,0,0,1,0);davor kein translatef und nicht s mehr
nur das glulookat und gluperspective
aber ich komme nur zu dem Ergebnishttp://www.asselborn-matthias.de/ebene2.JPG
Gruß matthias
-
es hat geklappt
kleiner Denkfehler
sollte gluLookAt(900,636,900...) heissenhttp://www.asselborn-matthias.de/ebene6.JPG
aber warum steht die Ebene nun nicht 45 Grad nach vorne so wie wenn ich es mit dem rotatef mache ?
Gruß Matthias
-
hab ich nun auch hinbekommen
für die Nachwelt die Lego Designer Ebene steht ingluLookat(900,900,900,0,0,0,0,1,0);
recht simpel eigentlich
http://www.asselborn-matthias.de/ent.JPG
-
Der Name Asselborn is echt zu geil

Sry für Offtopic^^
-
mein Nachname eben!