Ich habe versucht, eine Formel für die Projektionsmatrix zu erstellen, bei der Ihre vertikale Achse orthographisch projiziert wird, Ihre horizontale Achse jedoch eine Perspektive hat.
Der View Frustum würde also so aussehen:
Ich habe untersucht, wie die Formeln der orthografischen Projektion und der perspektivischen Projektion erreicht wurden und wie sie erreicht wurden. Und versuchte, diese zu modifizieren, um die von mir gewünschte Projektion zu erreichen. Es schien mir nicht möglich zu sein, eine Achse auf Z zu skalieren und die andere nicht (oder sie auf einen anderen Faktor skalieren zu lassen).
Ist es möglich, die gewünschte Perspektive zu erreichen? Wenn ja, wie würde die Projektionsmatrix aussehen?
3d
rendering
projection-matrix
Pepijn Willekens
quelle
quelle
Antworten:
Diese Projektionsmatrix sollte den Trick machen:
r = halbe Breite der Nearplane
t = halbe Höhe der Nearplane
f = Entfernung zur Farplane
n = Abstand zur Nearplane
Versuchen Sie zum Beispiel Folgendes:
r = 0,1 (Breite beträgt 0,2)
t = 0,5 (Höhe wird 1,0 sein)
f = 1000 (ferne Ebene im Abstand 1000)
n = 1 (in der Nähe der Ebene in Entfernung 1)
quelle
Leider glaube ich nicht, dass dies durch einfaches Ändern der Projektionsmatrix möglich ist. Nach der Projektionsmatrix werden die endgültigen Bildschirmkoordinaten durch Teilen von (x, y, z) durch w berechnet. Für eine perspektivische Matrix wird w auf z gesetzt. Für eine orthografische Matrix wird w auf 1 gesetzt. Sie können keine unterschiedlichen w-Werte für horizontal oder vertikal haben. Die andere Antwort auf diese Frage ist nur eine orthografische Standardmatrix.
Wenn Sie Zugriff auf den Shader selbst haben und bereit sind, einen weiteren Schritt hinzuzufügen, können Sie einfach eine orthografische Projektion verwenden, aber die Korrektur der horizontalen Perspektive manuell durchführen.
quelle