Esta é a norma - 3: tipos normais de mapas

Parte 1: o que são mapas normais e como eles funcionam?

Parte 2: como os mapas normais são preparados

Como muitas outras coisas em nosso setor, os mapas normais evoluíram ao longo dos anos e hoje existem vários tipos que podem parecer diferentes. No artigo, listarei aqueles que me lembro, mas talvez existam outros.

Mapa dos normais do espaço tangente (mapa normal do espaço tangente): o tipo mais comum hoje em dia, mapas normais; foi sobre isso que falamos nos artigos anteriores. Ele modifica a direção das normais do modelo com base na direção das normais de seus vértices (ou seja, precisamos controlar as normais dos vértices do modelo de baixa densidade).

imagem

Mapa normal do espaço tangente Mikk (mapa normal do espaço tangente Mikk). Nem todos os editores de 3D calculam a média de normais de vértices da mesma forma. Isso leva ao fato de que a aparência dos mapas normais é diferente em diferentes mecanismos, portanto, precisamos criar o mapa normal usando o mesmo método que o programa de renderização usa (isso é chamado de "usar um fluxo de trabalho sincronizado ( fluxo de trabalho sincronizado )")

Mikk propôs uma maneira de calcular valores normais de vértices, que deveriam ser universais para que todos os programas os calculassem da mesma maneira. Do ponto de vista do fluxo de trabalho, isso significa que você pode usar o modelo de baixo poli com todas as suas normais médias (com um grupo de suavização ou suavização de todas as faces), criar o mapa normal no espaço tangente do Mikk e ele parecerá exatamente assim como um modelo de alto poli, sem a necessidade de eliminar erros de suavização ou separar arestas duras em UV. No futuro, escreverei um tutorial sobre como fazer isso.

Lembre-se de que este ainda é um mapa de normais do espaço tangente, mas as normais do modelo são calculadas de maneira universal e os modelos podem ser usados ​​em diferentes programas.

imagem

Mapa normal do espaço tangente de dois canais: acontece que, usando as informações armazenadas em dois dos três canais do mapa normal, o computador pode calcular o terceiro, reduzindo a pegada de memória ao custo de aumentar o número de cálculos. Como a memória geralmente está em falta, essa otimização é frequentemente usada e alguns mecanismos a executam automaticamente (por exemplo, Unreal Engine, quando configuramos o parâmetro "normal map" para comprimir a textura normal). Depois de liberar um canal do mapa normal, podemos reduzir o tamanho da textura ou usar esse canal para metalidade / rugosidade / opacidade ...

Normalmente, o canal azul do mapa normal é eliminado, de modo que essas texturas parecem amarelas. Como essa otimização às vezes é realizada automaticamente por alguns mecanismos, você pode notar essas texturas no seu projeto.

imagem

Mapa das normais espaciais mundiais (mapa normal espacial mundial): esta carta é normal, em vez de modificar a direção das normais verticais, as ignora completamente e muda a maneira como o modelo de baixo reflexo da luz no espaço mundial (espaço mundial) (quando cozido, considera que os vértices são normais) paralelo aos eixos do mundo).

Podemos dizer que o mapa normal do espaço tangente diz ao modelo "você deve refletir a luz para a direita" e o mapa normal do espaço mundial - "você deve refletir a luz para o leste".

imagem

Esses mapas normais são mais coloridos e têm gradientes mais perceptíveis; eles foram usados ​​porque, nesse caso, você não precisa pensar nas normais dos vértices de baixa densidade, mas eles têm uma desvantagem - você não pode mover o modelo porque ele parecerá estranho (definimos o rosto para que ele sempre reflita a luz para o leste. Se o rodarmos, então a borda continuará refletindo a luz para o leste.).

imagem

Hoje, as normais do espaço mundial raramente são usadas em jogos, mas ainda podem ser usadas para criar belas texturas, por exemplo, o canal azul mostra como o modelo deve refletir a luz que cai sobre o modelo, para que você possa usá-lo para adicionar iluminação colorida à textura.

Também vale lembrar que as coordenadas do mundo em diferentes aplicativos são implementadas de maneira diferente: no Unreal, 3D Studio Max, Blender, o eixo Z é direcionado para cima e no Maya, Modo e Cinema4D, o eixo Y é direcionado, o que significa que, ao transferir normais mundiais entre aplicativos espaços podem se deteriorar.

Mapa Normal do Espaço do Objeto(Mapa normal do espaço do objeto): esta é uma versão aprimorada do tipo anterior de mapa e é muito semelhante a ela. A idéia é que, quando você move um modelo no mundo, seu mapa normal do espaço do mundo deve ser reorientado em relação ao objeto.

Isso pode ser descrito como "esse rosto deve refletir a luz à direita do modelo". Se você girar o modelo no mundo, o mapa normal deve mudar de acordo com essas alterações. No entanto, isso não funciona com malhas deformáveis, porque nesses mapas apenas o movimento do objeto é levado em consideração. É por esse motivo que os mapas normais do espaço tangente são os mais comuns atualmente.

Mapas normais inclinados(Mapas normais curvados): em essência, eles combinam informações de AO e mapas normais, inclinando as direções dos normais, de modo que a luz tenda a refletir nas partes do modelo atingidas pela luz.

Essas cartas são usadas para aprimorar a Oclussão Ambiental e evitar o efeito chamado “vazamento de luz”, no qual o modelo pode refletir luz em partes que não pode alcançar. Pessoalmente, nunca os usei, mas teria explorado suas capacidades se tivesse encontrado um "vazamento de luz" perceptível. Mais informações podem ser encontradas aqui , aqui e aqui .

Mapas normais de 16 bits(Mapas normais de 16 bits): às vezes, quando há um gradiente muito suave no mapa normal, podemos notar o aparecimento de listras. Essas faixas são devidas à falta de cores para representar um gradiente suave, geralmente causado pela compressão da textura.

Porém, no caso de uma superfície grande e lisa, esses problemas podem surgir mesmo com uma textura não compactada. Em tal situação, mapas normais de 16 bits podem ser usados, geralmente no formato de arquivo .tga, que têm mais cores e são maiores que os mapas normais de 8 bits normais.

Você pode aprender mais sobre mapas normais de 16 bits no próprio tutorial - Earthquake .

imagem

imagem

Também deve ser levado em consideração que existem outras técnicas para reduzir as conseqüências desse problema, por exemplo, eliminando completamente os mapas normais (apenas a geometria é usada para representar essa superfície lisa), transformando lowpoly para que pareça mais highpoly, para que os gradientes sejam menos perceptíveis, ou o uso de pontilhamento.

Então, que tipo devemos usar?

Em 90% dos casos, a melhor solução são os mapas normais do espaço tangente Mikk. Diferentemente das opções que usam mapas normais do espaço do mundo ou de um objeto, o modelo poderá se deformar e a direção dos normais permanecerá correta.

Você deve assar o mapa normal no mesmo espaço tangente que no programa de renderização. O espaço tangente mais comum é o Mikk, portanto, use-o sempre que possível.

Se a pixelização aparecer no seu mapa normal, considere usar 16 mapas normais ou uma das soluções mencionadas acima.

De fato, esses são todos os tipos de mapas normais que eu lembro. Se você souber de outros tipos, informe-me e os adicionarei a este tutorial!

Obrigado pela leitura, espero que o artigo tenha sido útil para você. Obrigado a Shnya pelos comentários e ajuda.

Source: https://habr.com/ru/post/undefined/


All Articles