Por que os mapas normais são predominantemente azuis em vez de uma cor aleatória?
Eu acho que vetores normais de um objeto 3D podem apontar em todas as direções, como:
(1.0, 0.1, 0.5), (0.1, -0.5, 0.3), (-0.51, 0.46, -1.0) ...
Por que os mapas normais são predominantemente azuis em vez de uma cor aleatória?
Eu acho que vetores normais de um objeto 3D podem apontar em todas as direções, como:
(1.0, 0.1, 0.5), (0.1, -0.5, 0.3), (-0.51, 0.46, -1.0) ...
Respostas:
Existem dois tipos de mapas normais comumente usados no desenvolvimento de jogos. O modo como você pensa que eles devem funcionar é o modo como um tipo funciona (mapas normais do espaço do modelo), mas a maioria dos jogos usa outro tipo (mapas normais do espaço tangente), e é por isso que você associa texturas principalmente azuis a mapas normais.
Com modelo de espaço mapas normais , cada canal codifica o valor preciso do normal usando o mesmo sistema de coordenadas como os vértices do modelo é usado com. Isso significa que partes diferentes do mapa normal terão tons diferentes, mas os pixels próximos um do outro geralmente terão cores semelhantes. Um exemplo de um mapa normal do espaço de modelo aparece acima ( fonte ).
Os mapas normais do espaço tangente são geralmente azul claro. Esse tipo de mapa define normais em um espaço de coordenadas exclusivo para a posição de cada pixel na superfície da malha. Ele usa o vértice (interpolado) normal como eixo Z e dois outros vetores ortogonais, chamados tangente e bitangente, como os eixos X e Y. Essencialmente, você pode pensar nas normais no mapa como um "deslocamento" da normal para esse pixel calculado interpolando as normais dos vértices. Os vetores tangente e bitangente também são interpolados a partir dos dados do vértice e determinam qual direção na malha corresponde a "para cima" e "esquerda" no mapa normal. A imagem fornecida na pergunta fornece um excelente exemplo de como é um mapa normal de espaço tangente típico, portanto, não fornecerei outro exemplo aqui.
Os componentes de um normal normal (sem trocadilhos) variam de [-1, 1]
. Mas os componentes de uma cor em uma imagem variam de [0, 1]
(ou [0, 255]
normalmente são normalizados [0, 1]
). Portanto, os normais são redimensionados e deslocados de modo que o normal (0, 0, 1)
se torne a cor (0.5, 0.5, 1)
. Essa é a cor azul claro que você vê nos mapas normais e indica que não há desvio do vértice interpolado normal ao usar normais de espaço tangente.
A razão pela qual os normais do espaço tangente são preferidos aos normais do espaço do modelo é devido ao fato de serem mais fáceis de criar e poderem ser usados para várias malhas. Além disso, se usado com uma malha animada, os normais do espaço tangente sempre são usados, porque os normais estão constantemente mudando.
bitangent
e binormal
correto.
O mapa normal aponta principalmente para fora de uma superfície. Supondo que o mapeamento habitual do componente Z dos vetores normais XYZ seja a direção "profundidade" e que, ao mapear o componente B do espaço de cores RGB, você acabará com a maioria dos vetores normais sendo principalmente azuis.
Se a textura fosse, digamos, vermelha, isso significaria que o mapa normal é uma superfície que está apontando para a direita. Você pode ver esse recurso na imagem de amostra, pois a borda mais à direita dos inchaços tem uma tonalidade avermelhada.
Uma superfície completa de uma cor avermelhada não faria sentido. Isso indicaria uma superfície totalmente voltada para a direita. Isso seria modelado apenas com geometria, não parte de um mapa normal.