Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

18.04.2012, 11:24

Räumliche Tiefe/Verzerrung

Hi,

in meiner Applikation habe ich derzeit eine 4x4-Matrix, in welcher unter anderem Rotationen enthalten sind. Mit dieser globalen Matrix werden alle Koordinaten vor der Darstellung multipliziert. Das führt dann zwar zu einer geometrisch exakten Darstellung, aber ohne eine echte räumliche Tiefe, bei der weiter entfernte Objekte kleiner aussehen.

Ohne dass ich das für mein Programm jetzt bräuchte und rein aus persönlichem Interesse: wie würde man diese Tiefenverzerrung denn berechnen? D.h. wenn man es selber berechnen will/muss ohne irgend welche OpenGL-Funktionalitäten verwenden zu können?

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

2

18.04.2012, 11:42

Das Verhalten resultiert aus der perspektivischen Projektion deiner Geometrie: Projektionsmatrix
@D13_Dreinig

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

3

18.04.2012, 11:55

Überleg einfach mal kurz was für einen Effekt du eigentlich erreichen willst. Diese perspektivische "Verzerrung" ergibt sich ja einfach daraus, dass Objekte, die weiter hinten sind, kleiner erscheinen, als Objekte weiter vorne.
Wenn man sich das ganze für einen Betrachter der im Ursprung steht und entlang der z-Achse blickt überlegt, dann kommen ein paar nette, ähnliche Dreiecke raus und am Ende ist die Lösung: x und y Koordinate durch z teilen, was auch rein intuitiv leicht verständlich ist, führt es doch genau zu dem oben erwähnten, gewünschten Effekt...

Deine WorldViewProjection Matrix tut am Ende im Prinzip nichts anderes als genau das, nämlich sämtliche Punkte in ihre Koordinaten relativ zur Kamera umzurechnen (World * View) und dann durch ihre z-Koordinate zu teilen (Projection).

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »dot« (18.04.2012, 12:02)


Werbeanzeige