Malhas poligonais e sólidos
Triângulos, normais, orientação e noções de sólidos para construir cenas 3D.
A maioria dos objetos 3D que vês num jogo é uma malha poligonal: uma coleção de triângulos colados pelas arestas que aproxima uma superfície. Modelar é escolher esses triângulos, e sombreá-los bem exige saber para onde aponta cada face. Esta página mostra a estrutura da malha e a conta mais importante sobre ela, a normal de um triângulo.
A estrutura da malha
Uma malha guarda três listas: vértices (posições 3D), arestas (pares de vértices) e faces (normalmente triângulos, trios de vértices). O triângulo é a face preferida porque três pontos definem sempre um plano, enquanto um quadrilátero pode ficar torcido. Mais triângulos significa superfície mais suave e mais memória; menos triângulos significa arestas visíveis e renderização mais rápida. Esse compromisso aparece em todos os projetos.
Cada face tem dois lados: a face frontal, que deve ser visível, e a face traseira, que normalmente se descarta. O que distingue uma da outra é a ordem dos vértices (winding): vistos de fora do objeto, os vértices da face frontal aparecem por ordem contrária aos ponteiros do relógio. O hardware usa esta convenção para o backface culling, que salta as faces traseiras sem as rasterizar e poupa metade do trabalho em objetos fechados.
A normal do triângulo
A normal é o vetor perpendicular à face, e é ela que diz à iluminação quanta luz a face recebe. Para o triângulo de vértices , e , constrói duas arestas e faz o produto vetorial:
seguido da normalização . Pela regra da mão direita, esta normal aponta para o lado de onde os vértices , , se veem por ordem contrária aos ponteiros do relógio, ou seja, para fora se a ordem estiver certa.
Toma , e . As arestas são e , e o produto vetorial dá:
O módulo é , por isso a normal unitária é : aponta para , perpendicular ao plano onde vive o triângulo. Se trocares com , a normal sai e a face passa a olhar para o outro lado. É assim que se deteta uma malha com a orientação trocada: as normais apontam para dentro do objeto em vez de para fora.
Dos triângulos aos sólidos
Triângulos soltos não chegam para operações como furar ou unir objetos: é preciso saber o que é dentro e fora. Um sólido válido é fechado (sem buracos na fronteira), com cada aresta partilhada por exatamente duas faces e orientação consistente. Representações como fronteira por faces, geometria sólida construtiva (união, interseção e diferença de primitivas) ou voxels impõem essa validade de formas diferentes. Para o projeto da cadeira basta reter a ideia: uma malha para renderizar pode ter falhas que uma malha para imprimir em 3D não pode ter.