Eu tenho tentado fazer uma fórmula para a matriz de projeção em que seu eixo vertical é projetado ortograficamente, mas seu eixo horizontal terá perspectiva.
Portanto, o view frustum ficaria assim:
Estudei como as fórmulas de projeção ortográfica e projeção em perspectiva e como elas foram alcançadas. E tentei modificá-los para tentar alcançar a projeção que eu queria. Pareceu-me que não era possível escalar um eixo para Z e o outro não (ou escalá-los em um fator diferente).
É possível alcançar a perspectiva que eu quero? Se sim, como seria a matriz de projeção?
3d
rendering
projection-matrix
Pepijn Willekens
fonte
fonte
Respostas:
Essa matriz de projeção deve fazer o truque:
r = metade da largura do plano próximo
t = metade da altura do plano próximo
f = distância ao plano distante
n = distância até o plano próximo
Por exemplo, tente escolher:
r = 0,1 (a largura será 0,2)
t = 0,5 (a altura será 1,0)
f = 1000 (plano distante à distância 1000)
n = 1 (nearplane na distância 1)
fonte
Infelizmente, acho que isso não é possível apenas alterando a matriz de projeção. Após a matriz de projeção, as coordenadas finais da tela são calculadas dividindo (x, y, z) por w. Para uma matriz de perspectiva, w é definido como z. Para uma matriz ortográfica, w é definido como 1. Você não pode ter valores de w diferentes para horizontal e vertical. A outra resposta a esta pergunta é apenas uma matriz ortográfica padrão.
Se você tiver acesso ao próprio sombreador e quiser adicionar outra etapa, basta usar uma projeção ortográfica, mas faça a correção da perspectiva horizontal manualmente.
fonte