Autor Beitrag
>spEEd>
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 62


Delphi 2005 Pers.
BeitragVerfasst: Mi 17.05.06 19:50 
Hi,

ich bin momentan damit beschäftigt selbst eine 3D-Engine zu programmieren. Mit der Theorie an sich, wie ich die neuen Koordinaten der Punkte, Linien und Ebenen bei der Veränderung der Kameraperspektive berechne, habe ich keinerlei Probleme. Ich weiß allerdings nicht, wie ich anhand der 3 dimensionalen Koordinaten eines Punktes, den dazugehörigen Punkt auf dem Bildschirm bestimmen kann.
Ich habe schon verschiedene Möglichkeiten ausprobiert, die mir in den Sinn kamen, allerdings wurden die Punkte bei allen Versuchen zu den Bildschirm-Seiten hin verzerrt. Dies sieht man vor allem an den Linien. Ich habe momentan keine Ahnung mehr, wie ich das sonst noch umrechnen könnte. Ich hoffe ihr könnt mir hierbei helfen.

Zusatzinformationen: Die Kamera ist der Koordinatenursprung. Die z-Achse ist die Tiefe (in Blickrichtung der Kamera), die x-Achse verläuft bei mir nach oben (von der Blickrichtung ausgehend) und die y-Achse verläuft nach rechts (ebenfalls von der Blickrichtung ausgehend). Nach jeder Änderung der Kameraposition werden alle anderen Punkte im Koordinatensystem dementsprechend umgerechnet und erhalten die neuen Positionsdaten.

>spEEd>
delfiphan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2684
Erhaltene Danke: 32



BeitragVerfasst: Do 18.05.06 12:08 
Das macht man mit einer perspektivischen Projektion. Das geht z.B. mit Projektionsmatrizen. Häufig arbeitet man dabei mit homogenen Koordinaten: Die 4x4 Projektionsmatrix fungiert dann als Kamera. Die Verschiebung und stärke der perspektive ist in der Matrix berücksichtigt, d.h. eigentlich alles was die Kamera auszeichnet (inkl. Verschiebung und Ausrichtung).
>spEEd> Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 62


Delphi 2005 Pers.
BeitragVerfasst: Do 18.05.06 18:22 
Vielen Dank! Ich werde das einfach mal ausprobieren und mich bei Problemen wieder melden. :)

>spEEd>