Como converter uma cena 3D para uma projeção ortográfica planta?
Passo 1
O enunciado pede que a gente pegue uma cena em coordenadas 3D (x,y,z) e produza uma “vista de cima” (projeção ortográfica planta), isto é, um desenho 2D em que vemos o plano XY e descartamos a profundidade z. O conteúdo que vamos usar é o pipeline de transformações de gráficos: transformação de visualização (view), projeção ortográfica e, por fim, mapeamento para coordenadas de tela.
Passo 2
Definir a câmera para vista planta. Como queremos olhar de cima para baixo, escolhemos: \bullet posição do observador em P_e=(0,0,+\infty) (ou seja, “infinito” no eixo z); \bullet direção de visualização \mathbf{d}=(0,0,-1); \bullet vetor “up” (que aponta para cima na tela) igual a \mathbf{u}=(0,1,0).
A matriz de visualização (view matrix) resulta de um “LookAt” com esses parâmetros. No caso de projeção ortográfica planta sobre o plano z=0, essa matriz é, na prática, a identidade 4\times 4, pois já alinhamos os eixos de mundo com os eixos da câmera.
Passo 3
Aplicar a projeção ortográfica que joga cada ponto (x,y,z,1) sobre o plano z=0 mantendo x e y. A fórmula em coordenadas homogêneas é
Descartar a coordenada z (que agora vale zero) e ficar só com o par (x,y). Esses valores estão em “Normalized Device Coordinates” (NDC). Se quisermos desenhar na tela, fazemos o mapeamento viewport:
onde [x_{\min},x_{\max}]\times [y_{\min},y_{\max}] é o retângulo de interesse na cena e W\times H é o tamanho da janela.
Passo 5
Para cada vértice original (x,y,z): 1. (View) – aqui é identidade. 2. (Proj.) – multiplica por M_{\text{ortho}} para obter (x,y,0,1). 3. (Viewport) – mapeia (x,y) para as coordenadas de pixel \bigl(x_{\text{tela}},y_{\text{tela}}\bigr).
Resposta
A projeção ortográfica planta é obtida pela matriz