Partilhar via


Transformação da exibição

Uma transformação de exibição localiza o visualizador no espaço do mundo, transformando vértices em espaço de câmera. No espaço da câmera, a câmera, ou espectador, está na origem, olhando na direção z positiva. A matriz de exibição realoca os objetos no mundo em torno da posição de uma câmera - a origem do espaço da câmera - e da orientação. O Direct3D usa um sistema de coordenadas canhoto, portanto, z é positivo em uma cena.

Há muitas maneiras de criar uma matriz de exibição. Em todos os casos, a câmera tem alguma posição lógica e orientação no espaço do mundo que é usada como ponto de partida para criar uma matriz de exibição que será aplicada aos modelos em uma cena. A matriz de exibição converte e gira objetos para colocá-los no espaço da câmera, onde a câmera está na origem. Uma maneira de criar uma matriz de exibição é combinar uma matriz de translação com matrizes de rotação para cada eixo. Nesta abordagem, aplica-se a seguinte equação de matriz geral.

Equação da transformação de vista

Nesta fórmula, V é a matriz de exibição que está sendo criada, T é uma matriz de translação que reposiciona objetos no mundo e Rₓ a Rz são matrizes de rotação que giram objetos ao longo dos eixos x, y e z. As matrizes de translação e rotação são baseadas na posição lógica e orientação da câmera no espaço do mundo. Portanto, se a posição lógica da câmera no mundo for <10,20,100>, o objetivo da matriz de translação é mover objetos -10 unidades ao longo do eixo x, -20 unidades ao longo do eixo y e -100 unidades ao longo do eixo z. As matrizes de rotação na fórmula são baseadas na orientação da câmera, em termos de quanto os eixos do espaço da câmera são girados fora do alinhamento com o espaço do mundo. Por exemplo, se a câmera mencionada anteriormente estiver apontando diretamente para baixo, seu eixo z está 90 graus (pi/2 radianos) desalinhado com o eixo z do espaço do mundo, conforme mostrado na ilustração a seguir.

Ilustração do espaço de visão da câmera em comparação com o espaço do mundo

As matrizes de rotação aplicam rotações de magnitude igual, mas oposta, aos modelos na cena. A matriz de visualização desta câmera inclui uma rotação de -90 graus em torno do eixo x. A matriz de rotação é combinada com a matriz de translação para criar uma matriz de visualização que ajusta a posição e a orientação dos objetos na cena para que sua parte superior fique voltada para a câmera, dando a aparência de que a câmera está acima do modelo.

Configurando uma matriz de exibição

O Direct3D usa as matrizes de mundo e exibição para configurar várias estruturas de dados internas. Cada vez que você define um novo mundo ou uma matriz de exibição, o sistema recalcula as estruturas internas associadas. Definir essas matrizes com frequência é computacionalmente demorado. Você pode minimizar o número de cálculos necessários concatenando as matrizes de mundo e modo de exibição em uma matriz de exibição de mundo que você define como matriz de mundo, e, em seguida, definindo a matriz de visualização para a identidade. Mantenha cópias em cache de matrizes de mundo e visualização individuais que você pode modificar, concatenar e redefinir a matriz de mundo conforme necessário.

Transformações