Compartilhar via


Face e vetores normais de vértice

Cada face em uma malha tem um vetor normal unitário perpendicular. A direção do vetor é determinada pela ordem em que os vértices são definidos e pelo fato de o sistema de coordenadas ser destro ou canhoto.

Vetor normal de unidade perpendicular para uma face frontal

Cada face em uma malha tem um vetor normal unitário perpendicular. A direção do vetor é determinada pela ordem em que os vértices são definidos e pelo fato de o sistema de coordenadas ser destro ou canhoto. O rosto normalmente aponta para longe da parte frontal do rosto. No Direct3D, somente a frente de um rosto é visível. Uma face frontal é aquela em que os vértices são definidos no sentido horário.

A ilustração a seguir mostra um vetor normal para uma face frontal:

um vetor normal para uma face frontal

Selecionando faces traseiras

Qualquer rosto que não seja um rosto frontal é um rosto traseiro. O Direct3D nem sempre renderiza faces posteriores; Diz-se que as faces traseiras foram abatidas. O abate da face posterior significa eliminar as faces posteriores da renderização. Você pode alterar o modo de seleção para renderizar faces traseiras, se desejar. Consulte Estado de seleção para obter mais informações.

Normais da unidade de vértice

O Direct3D usa as normais de unidade de vértice para efeitos de sombreamento, iluminação e texturização de Gouraud.

A ilustração a seguir mostra normais de vértice:

normais de vértice

Ao aplicar o sombreamento de Gouraud a um polígono, o Direct3D usa as normais de vértice para calcular o ângulo entre a fonte de luz e a superfície. Ele calcula os valores de cor e intensidade para os vértices e os interpola para cada ponto em todas as superfícies do primitivo. O Direct3D calcula o valor da intensidade da luz usando o ângulo. Quanto maior o ângulo, menos luz brilha na superfície.

Superfícies planas

Se você estiver criando um objeto plano, defina as normais de vértice para apontar perpendicularmente à superfície.

A ilustração a seguir mostra uma superfície plana composta por dois triângulos com normais de vértice:

superfície plana composta por dois triângulos com normais de vértice

Sombreamento suave em um objeto não plano

Em vez de objeto plano, é mais provável que seu objeto seja composto de tiras de triângulo e os triângulos não sejam coplanares. Uma maneira simples de obter sombreamento suave em todos os triângulos da faixa é primeiro calcular o vetor normal da superfície para cada face poligonal à qual o vértice está associado. A normal do vértice pode ser definida para fazer um ângulo igual com cada superfície normal. No entanto, esse método pode não ser eficiente o suficiente para primitivos complexos.

Este método é ilustrado pelo diagrama a seguir, que mostra duas superfícies, S1 e S2 vistas de lado. Os vetores normais para S1 e S2 são mostrados em azul. O vetor normal do vértice é mostrado em vermelho. O ângulo que o vetor normal do vértice faz com a normal da superfície de S1 é o mesmo que o ângulo entre a normal do vértice e a normal da superfície de S2. Quando essas duas superfícies são iluminadas e sombreadas com sombreamento Gouraud, o resultado é uma borda suavemente sombreada e suavemente arredondada entre elas.

A ilustração a seguir mostra duas superfícies (S1 e S2) e seus vetores normais e vetor normal de vértice:

duas superfícies (s1 e s2) e seus vetores normais e vetor normal de vértice

Se o vértice normal se inclinar em direção a uma das faces com as quais está associado, isso fará com que a intensidade da luz aumente ou diminua para pontos nessa superfície, dependendo do ângulo que ele faz com a fonte de luz. O diagrama a seguir mostra um exemplo. Essas superfícies são vistas de lado. A normal do vértice se inclina em direção a S1, fazendo com que ela tenha um ângulo menor com a fonte de luz do que se a normal do vértice tivesse ângulos iguais com as normais da superfície.

A ilustração a seguir mostra duas superfícies (S1 e S2) com um vetor de vértice normal que se inclina em direção a uma face:

Duas superfícies (S1 e S2) com um vetor normal de vértice que se inclina em direção a uma face

Arestas vivas

Você pode usar o sombreamento de Gouraud para exibir alguns objetos em uma cena 3D com bordas nítidas. Para fazer isso, duplique os vetores normais de vértice em qualquer interseção de faces onde uma aresta afiada é necessária.

A ilustração a seguir mostra vetores normais de vértice duplicados em arestas nítidas:

vetores normais de vértice duplicados em bordas afiadas

Se você usar os métodos DrawPrimitive para renderizar sua cena, defina o objeto com bordas nítidas como uma lista de triângulos, em vez de uma faixa de triângulos. Quando você define um objeto como uma faixa de triângulo, o Direct3D o trata como um único polígono composto por várias faces triangulares. O sombreamento de Gouraud é aplicado em cada face do polígono e entre as faces adjacentes.

O resultado é um objeto que é suavemente sombreado de face a face. Como uma lista de triângulos é um polígono composto por uma série de faces triangulares disjuntadas, o Direct3D aplica o sombreamento de Gouraud em cada face do polígono. No entanto, não é aplicado presencialmente. Se dois ou mais triângulos de uma lista de triângulos forem adjacentes, eles parecem ter uma borda afiada entre eles.

Outra alternativa é mudar para sombreamento plano ao renderizar objetos com bordas nítidas. Este é computacionalmente o método mais eficiente, mas pode resultar em objetos na cena que não são renderizados de forma tão realista quanto os objetos sombreados por Gouraud.

Sistemas de coordenadas e geometria