He estado tratando de hacer una fórmula para la matriz de proyección donde su eje vertical se proyecta ortográficamente pero su eje horizontal tendrá perspectiva.
Entonces la vista frustum se vería así:
Estudié cómo las fórmulas de proyección ortográfica y de perspectiva y cómo se lograron. Y traté de modificarlos para intentar alcanzar la proyección que quería. Me pareció que no era posible tener una escala de eje a Z y la otra no (o hacer que escalen en un factor diferente).
¿Es posible alcanzar la perspectiva que quiero? Si es así, ¿cómo sería la matriz de proyección?
3d
rendering
projection-matrix
Pepijn Willekens
fuente
fuente
Respuestas:
Esta matriz de proyección debería hacer el truco:
r = la mitad del ancho del plano cercano
t = la mitad de la altura del plano cercano
f = distancia al plano lejano
n = distancia al plano cercano
Entonces, por ejemplo, intente elegir:
r = 0.1 (el ancho será 0.2)
t = 0.5 (la altura será 1.0)
f = 1000 (plano lejano a la distancia 1000)
n = 1 (plano cercano a la distancia 1)
fuente
Desafortunadamente, no creo que esto sea posible simplemente alterando la matriz de proyección. Después de la matriz de proyección, las coordenadas finales de la pantalla se calculan dividiendo (x, y, z) por w. Para una matriz de perspectiva, w se establece en z. Para una matriz ortográfica, w está establecido en 1. No puede tener valores de w diferentes para horizontal versus vertical. La otra respuesta a esta pregunta es solo una matriz ortográfica estándar.
Si tiene acceso al sombreador en sí y está dispuesto a agregar otro paso, puede usar una proyección ortográfica pero realizar la corrección de la perspectiva horizontal manualmente.
fuente