Projektions-Matrix
Projektions-Matrix
HI zusammen,
Als Schulprojekt hab ich schon ein kleines "3D" Spiel geschrieben.
(in etwa so: http://armorgames.com/play/7558/starlight-xmas)
Jetzt will ich ein bisschen mehr mit 3D machen.
Dafür bräuchte ich aber eine Projektions-Matrix.
Heute und gestern hab ich nichts anderes gemacht wie danach zu googeln,
hab aber nichts gefunden.
Kann mir bitte jemand erklären wie sich eine Projektions-Matrix zu-
sammen setzt?
Matrix-Multiplikation kann ich.
mfg
Empire
Als Schulprojekt hab ich schon ein kleines "3D" Spiel geschrieben.
(in etwa so: http://armorgames.com/play/7558/starlight-xmas)
Jetzt will ich ein bisschen mehr mit 3D machen.
Dafür bräuchte ich aber eine Projektions-Matrix.
Heute und gestern hab ich nichts anderes gemacht wie danach zu googeln,
hab aber nichts gefunden.
Kann mir bitte jemand erklären wie sich eine Projektions-Matrix zu-
sammen setzt?
Matrix-Multiplikation kann ich.
mfg
Empire
Re: Projektions-Matrix
Willst du dir die Projektionsmatrix selber herleiten und erstellen oder einfach nur eine vorgefertigte Funktion für ein bestimmtes Framework wissen? Wenn du es dir selber herleiten möchtest dann zeichne dir das ganze doch einmal in 2D von oben auf und überlege dir welche Zusammenhänge durch vorhandene ähnliche Dreiecke sich ausnützen lassen bzw. was das Ergebnis sein sollte wenn du die Matrix und einen Vektor einer virtuellen Position in Bildschirmkoordinaten umrechnen möchtest.
"Make it idiot-proof and someone will invent an even better idiot." (programmers wisdom)
OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at
OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at
- Xin
- nur zu Besuch hier
- Beiträge: 8862
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: Projektions-Matrix
Was genau brauchst Du denn?Empire hat geschrieben:Jetzt will ich ein bisschen mehr mit 3D machen.
Dafür bräuchte ich aber eine Projektions-Matrix.
Heute und gestern hab ich nichts anderes gemacht wie danach zu googeln,
hab aber nichts gefunden.
Grundsätzlich stellt sich die Frage, wofür eine Projektionsmatrix da ist. Es wird damit ausgerechnet, wenn ein Punkt bei (a, b, c) liegt, wohin er projiziert wird. Bei der IdentitätEmpire hat geschrieben:Kann mir bitte jemand erklären wie sich eine Projektions-Matrix zu-
sammen setzt?
Matrix-Multiplikation kann ich.
Code: Alles auswählen
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
Code: Alles auswählen
1 X-Koordinate
0 Y
0 Z
1 Weight
Code: Alles auswählen
1 1 0 0 0 1
0 0 1 0 0 0
0 * 0 0 1 0 = 0
1 0 0 0 1 1
Wenn Du nun das Bild in X-Richtung strecken möchtest, muss die X Koordinate gestreckt werden.
Code: Alles auswählen
1 2 0 0 0 2
0 0 1 0 0 0
0 * 0 0 1 0 = 0
1 0 0 0 1 1
So kannst Du auch einfach die Achsen vertauschen:
Code: Alles auswählen
1 0 1 0 0 0
0 1 0 0 0 1
0 * 0 0 1 0 = 0
1 0 0 0 1 1
Durch eine Rotationsmatrix kannst Du nun die Darstellung im Raum verdrehen. Skalierung findet über
Code: Alles auswählen
X 0 0 0
0 Y 0 0
0 0 Z 0
0 0 0 1
Code: Alles auswählen
1 0 0 X
0 1 0 Y
0 0 1 Z
0 0 0 1
Code: Alles auswählen
R R R 0
R R R 0
R R R 0
0 0 0 1
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Re: Projektions-Matrix
Ich meinte wie ich die 3D Koordinaten auf meinen 2D Bildschirm bekomme.
Dachte dazu bräuchte ich die Projektions-Matrix.
mfg
Empire
Dachte dazu bräuchte ich die Projektions-Matrix.
mfg
Empire
Re: Projektions-Matrix
Richtig. Die Frage ist jedoch immer noch, willst du wissen wie du dir herleitest wie das funktioniert, oder interessiert dich nur das Endergebnis, also nur was du wo in die Matrix eintragen musst. Ich hab das vor Ewigkeiten schon einmal selbst hergeleitet und ein bisschen (wirklich nur ein bisschenEmpire hat geschrieben:Dachte dazu bräuchte ich die Projektions-Matrix.

"Make it idiot-proof and someone will invent an even better idiot." (programmers wisdom)
OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at
OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at
- Xin
- nur zu Besuch hier
- Beiträge: 8862
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: Projektions-Matrix
Erstmal musst Du klarstellen, welche Projektion Du überhaupt haben möchtest - entsprechend muss man die Projektionsmatrix aufbauen.Empire hat geschrieben:Ich meinte wie ich die 3D Koordinaten auf meinen 2D Bildschirm bekomme.
Dachte dazu bräuchte ich die Projektions-Matrix.
Ansonsten ist das nur die Multiplikation des Modellpunktes mit der Projektionsmatrix.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Re: Projektions-Matrix
Also ich glaube ich brauche eine perspektivische Projektion.
Ich will das Objekt nicht Strecken, verschieben oder die Größe ver-
ändern sondern nur für den Bild "bereit" machen.
Mich interesiert nicht nur das Ergebnis sondern auch wie ich da
hin komme.
Ich glaube das ist es(es kommt den Googel Treffern am nähsten),
kann mir das bitte jemand erklären
mfg
Empire
EDIT:
OK man sieht es nicht sonderlich gut. es stammt von hier http://wiki.tomprogs.at/math:matrix
Es ist das Lefthand ding. Achja wo ist der unterschied zum Righthand?
Ich will das Objekt nicht Strecken, verschieben oder die Größe ver-
ändern sondern nur für den Bild "bereit" machen.
Mich interesiert nicht nur das Ergebnis sondern auch wie ich da
hin komme.
Code: Alles auswählen
Lefthand
width2near 0 0 0 0 height2near 0 0 0 0 near−farnear+far near−far2nearfar 0 0 −1 0
xt=xwidth2near
yt=yheight2near
zt=−zfarfar−near+far−nearfarnear
w=z
kann mir das bitte jemand erklären
mfg
Empire
EDIT:
OK man sieht es nicht sonderlich gut. es stammt von hier http://wiki.tomprogs.at/math:matrix
Es ist das Lefthand ding. Achja wo ist der unterschied zum Righthand?
- Xin
- nur zu Besuch hier
- Beiträge: 8862
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: Projektions-Matrix
Definiere "bereit" machen?Empire hat geschrieben:Also ich glaube ich brauche eine perspektivische Projektion.
Ich will das Objekt nicht Strecken, verschieben oder die Größe ver-
ändern sondern nur für den Bild "bereit" machen.
Womit arbeitest Du überhaupt. Wenn es OpenGL ist, was spricht gegen gluPerspective?
Bei Matrizen ist es wichtig, dass A*B != B*A ist.Empire hat geschrieben:OK man sieht es nicht sonderlich gut. es stammt von hier http://wiki.tomprogs.at/math:matrix
Es ist das Lefthand ding. Achja wo ist der unterschied zum Righthand?
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
- Dirty Oerti
- Beiträge: 2229
- Registriert: Di Jul 08, 2008 5:05 pm
- Wohnort: Thurndorf / Würzburg
Re: Projektions-Matrix
Außer bei speziellen DrehmatrizenBei Matrizen ist es wichtig, dass A*B != B*A ist.

Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne!
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.
Ich helfe gerne!

----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.
Re: Projektions-Matrix
Oder noch viel einfacher bei der Nullmatrix oder EinheitsmatrixDirty Oerti hat geschrieben:Außer bei speziellen DrehmatrizenBei Matrizen ist es wichtig, dass A*B != B*A ist.

Bevor ich jetzt lange hier herumschreibe habe ich mir jetzt die Mühe gemacht das gleich einmal ins Wiki zu stellen: http://proggen.org/doku.php?id=theory:m ... projectionEmpire hat geschrieben:Mich interesiert nicht nur das Ergebnis sondern auch wie ich da
hin komme.
Halte die linke Hand vor dich und bilde mit Daumen, Zeigefinger und Mittelfinger ein Koordinatenystem. Dabei zeigt der Daumen in positive z-Richtung, der Zeigefinger in positive y-Richtung und der Mittelfinger in positive x-Richtung. Jetzt wiederholst du das ganze mit der rechten Hand und wirst sehen, das dabei die Richtung der z-Achse umgedreht ist.Empire hat geschrieben:Es ist das Lefthand ding. Achja wo ist der unterschied zum Righthand?
"Make it idiot-proof and someone will invent an even better idiot." (programmers wisdom)
OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at
OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at