Esta é a segunda parte de uma série de tutoriais sobre mapas normais. A primeira parte está
aqui , mas para entender a segunda parte não é necessário lê-la.
O princípio geral de fazer um mapa normal é relativamente simples: temos um modelo lowpoly com coordenadas UV e um modelo highpoly; transferimos as informações normais de highpoly para lowpoly. Graças a isso, lowpoly refletirá a luz da mesma maneira que highpoly.
Durante esse processo, o programa de cozimento basicamente emite raios do polímero baixo, seguindo as normais dos vértices e procurando por polímeros altos. Esse é o aspecto mais importante da criação de mapas normais e a maioria dos problemas que surgem ao trabalhar com mapas normais estão relacionados a ele.
Se você não controlar as normais dos vértices do modelo lowpoly, perderá o controle do mapa normal.
Baixa correlação de mapas normais
Para controlar a suavização do modelo lowpoly, precisamos dividir normais dos vértices (para criar arestas rígidas) ou vértices médios dos vértices (para criar arestas suaves).
Como se viu, nem todos os programas 3D usam os mesmos cálculos para obter médias normais de vértices. Isso significa que em diferentes editores 3D o modelo lowpoly terá uma aparência diferente e seus normais de vértice apontarão um pouco em direções diferentes. Normalmente, isso não apresenta um grande problema, porque esses desvios são muito pequenos, mas afetam a aparência do modelo; e essas diferenças são amplificadas ao usar mapas normais, porque os mapas normais alteram as normais dos modelos lowpoly, que são diferentes em programas diferentes.
A indústria de gráficos 3D está trabalhando para resolver esse problema; Recentemente, um padrão chamado espaço Mikk apareceu. Este é um método para calcular valores normais do vértice que todos os aplicativos 3D podem usar para fazer com que os valores normais do vértice tenham a mesma aparência em todos os programas 3D. No entanto, deve-se notar que até agora nem todos os aplicativos 3D o utilizam.
Outra maneira de reduzir esse efeito é não confiar muito nos mapas normais ao assar. Tente fazer com que o modelo lowpoly se pareça mais com um modelo highpoly e use arestas mais rígidas em superfícies planas. Nesse caso, o mapa normal não precisa fazer todo o trabalho e pequenos desvios se tornarão menos visíveis.
Detalhes chanfrados do mapa normal
Quando um computador calcula a média da direção do normal nas normais dos vértices do modelo lowpoly, grandes alterações nos ângulos da superfície podem "espremer" as normais do modelo lowpoly e elas não serão mais perpendiculares à superfície lowpoly.
Como o programa normal de cozimento, ao procurar peças com alta densidade, usa as direções normais com baixa densidade, se essas direções estiverem chanfradas, elas parecerão chanfradas no mapa normal:
Esse é um problema muito comum para o qual várias soluções foram encontradas. Não existe uma solução ideal, tudo depende da geometria.
1. Em alguns programas de cozimento 3D, há a opção de refazer o cozimento dessas peças com uma mudança temporária nas normais de baixa polidez para que elas assem sem chanfro. Por exemplo, essa opção está na Maleta de ferramentas Marmoset. Um usuário do Reddit com o apelido Tanagashi gentilmente me explicou que alguns programas como o xNormal podem separar o lowpoly para adicionar novos vértices e tornar os normais perpendiculares à superfície do lowpoly, assar o mapa normal no espaço do objeto e convertê-lo em espaço tangente com base nos normais originais do lowpoly. Usando o novo mapa normal, o programa pode criar máscaras para controlar onde usar o mapa normal original e onde foi criado a partir do modelo lowpoly em mosaico.

2. A adição de vértices tornará a transição entre os normais dos vértices menos oblíqua, porque um ângulo de 90º será dividido em vários graus menores, tornando a segunda transição menos oblíqua. Obviamente, isso aumenta o número de polígonos e, à medida que você adiciona geometria, recomendo usar esses complementos para criar uma silhueta de modelo mais interessante.
3. Separação das normais médias dos vértices (tornando a aresta rígida / usando grupos de suavização separados): dessa maneira, cada vértice terá várias normais, cada uma das quais perpendicular à superfície de baixa polaridade. Não se esqueça de que, quando um programa 3D tem um vértice dividido normal, ele realmente cria uma duplicata do vértice, aumentando assim o número de vértices e reduzindo ligeiramente o desempenho. Além disso, como veremos mais adiante, costelas rígidas criam o problema das “costelas pretas”.
4. Você pode alterar as normais do modelo para dobrar as normais de baixa poli de forma que elas sejam perpendiculares às normais de alta poli. Lembre-se de que nem todos os programas permitem o uso de normais alterados (no Zbrush, existem apenas normais médios, arquivos OBJ e FBX obsoletos não contêm informações especiais sobre os normais). De fato, existem duas maneiras de mudar as normais:
- Normais ponderadas: este é um método automático, semelhante às normais normais dos vértices. A idéia é que, ao calcular a média normal dos vértices, nem todas as faces devem ter a mesma força: faces grandes "atraem" as normais dos vértices para si mesmas com mais força do que faces pequenas. Devido a isso, rostos grandes, que geralmente são mais importantes, terão uma melhor projeção de detalhes. Isso funciona especialmente bem com painéis highpoly.
- Normais personalizadas: usando as ferramentas do editor 3D, podemos dobrar as normais com baixa densidade. Essa é uma idéia relativamente nova, para a qual não existem ferramentas padronizadas. Lembre-se de que normais normais de dobra podem criar sombreamentos indesejados muito estranhos em outras partes do modelo; portanto, essa técnica geralmente é combinada com chanfros. Algumas pessoas chamam essa técnica de "modelagem midpoly".
Distância da gaiola / cozimento
Por padrão, os raios emitidos a partir de uma superfície de baixa densidade viajam uma distância limitada, de modo que a baixa densidade não receba informações normais de partes distantes da alta densidade. Essa distância é geralmente chamada de "distância frontal / traseira", porque os raios podem ser emitidos na direção interna, externa ou nas duas direções. Na figura abaixo, essa distância é mostrada em vermelho:

Alguns aplicativos 3D (como o 3ds Max) também permitem o uso de uma gaiola. Gaiola é uma "cópia" de um modelo de baixa densidade que pode ser modificado para que, idealmente, contenha uma alta densidade. Além disso, em alguns casos (nem sempre), isso nos permite alterar a direção dos raios sem alterar as normais iniciais dos vértices de baixa polaridade. Isso pode ajudar a obter os melhores casos de limite de cozimento e evitar chanfros; no entanto, devemos lembrar que assamos não usando a direção dos vértices das normais, mas no final, usaremos o mapa normal para alterar as verdadeiras normais normais de baixa política, para que o resultado possa parecer estranho.
Costuras costelas
Como vimos, se houver um modelo com arestas duras (algumas arestas têm mais de um grupo de suavização ou algumas arestas são marcadas como "duras"), o programa de cozimento divide o vértice normal entre duas faces. Existem lados bons e ruins nessa operação.
O bom disso é que as normais não são calculadas como média, portanto há menos distorção das normais: as normais dos vértices são completamente perpendiculares à superfície de baixa densidade. Também pode tornar o lowpoly mais bonito se tiver arestas em ângulos agudos mais adequados para arestas duras.
A má notícia é que agora existe uma lacuna entre os normais, e isso pode significar que podemos perder informações se o lowpoly tiver um gap no normal, onde não é possível obter detalhes de highpoly. Além disso, algumas partes da projeção lowpoly podem se cruzar e competir pelo mesmo espaço UV. Ambos os efeitos criam uma costura ao longo da nervura, cuja visibilidade depende do motor.
No entanto, isso pode ser facilmente evitado com um truque simples: se duas faces são separadas por uma borda rígida, é necessário colocar cada face em uma ilha UV separada, deixando espaço entre elas. Para reduzir o impacto do problema das normais divididas, os programas de cozimento tentam um pouco de informação extra fora dos vértices das normais, mas para isso eles precisam de espaço adicional na textura. Se as faces separadas por uma borda rígida estiverem conectadas em UV, não haverá lugar para salvar essas informações adicionais na textura.
Conclusão
Depois de preparar o modelo lowpoly e torná-lo o mais próximo possível do modelo highpoly, começo a trabalhar na suavização antes dos raios UV. Defino a suavização para lowpoly (se o objeto é orgânico, então começo com um modelo totalmente suavizado, se tiver uma superfície sólida, defino o ângulo de suavização entre 30-60º e ajusto a suavização até que o resultado pareça bom).
Depois de preparar a suavização do modelo, começo a trabalhar com UV, dividindo todas as arestas duras em ilhas UV separadas (para evitar costuras nas arestas).
Se houver erros nos chanfros, adiciono arestas adicionais (geralmente faço chanfros para manter a redondeza da silhueta). Isso funciona para a maioria dos meus modelos, mas posso corrigir erros com os chanfros se eu usar o Marmoset Toolbag para assar ou usar meus próprios / pesos normais.
Se houver erros de projeção, altero a distância / gaiola, modifico o lopoly / highpoly para que sejam mais adequados para o cozimento ou excluo mapas normais em partes muito rígidas separadas, por exemplo, nas extremidades dos cones.
O próximo artigo será uma instrução para corrigir problemas ao criar mapas normais e discutir os problemas e soluções mais comuns.