Quais são as matemáticas por trás dos sprites de outdoor em 3D? (foi: matriz de transformação 3D em matriz 2D)
Eu tenho um ponto 3D no espaço. A orientação / posição exata do ponto é expressa através de umMatriz de transformação 4x4.
Eu quero desenhar umoutdoor (3D Sprite) até este ponto.Eu sei a posição projetada (isto é, 3D-> 2D) do ponto; o outdoor está voltado para a câmera, então também é muito útil.O que eu não sei é a escala que o outdoor deveria ter!
Para tornar as coisas mais complexas, oMatriz 4x4 pode ter todos os tipos de transformações: rotação 3D, escala 3D, transposição 3D. Suponha que a câmera seja a mais simples possível: posição em (0,0,0), sem rotação.
Então, posso "extrair" a escala do sprite de outdoor dessa matriz 4x4?
-ESTAVA:Eu tenho uma matriz 4x4 de transformação afim 3D. Eu preciso convertê-lo (projeto) em uma matriz 3x3 de transformação afim 2D, que se parece com isso:
Rotações 3D são irrelevantes e, se presentes, podem ser descartadas; Estou interessado apenas em tradução e, o mais importante, em redimensionamento.
Alguém pode ajudar com as equações para cada um dosseis 4 valores? (Digamostxty também são conhecidos)
Informação adicional:
O Matrix3D é a transformação global de um ponto 3D, digamos (0,0,0). Seu objetivo é ser projetado em um plano 2D (a tela do computador).
Sei como projetar um ponto 3D para o espaço 2D, o que estou procurando é preservar informações adicionais de transformação além da posição, ou seja,escala: como você deve saber, oescala A propriedade também é alterada ao projetar o ponto em um plano 2D.
Eu também esqueci de mencionar que oprojeção em perspectiva propriedades também são conhecidas, ou seja:
field of view (single value)
focal length (single value)
projection center (viewpoint position - 2D value)