7.1. UV Unwrapping.

July 7, 2017

 

Vamos agora iniciar o processo de criação das matrizes de texturização do personagem. Vamos criar dois mapas UV de 1024x1024, um para a cabeça, torso e mãos, e outro para as calças, botas, braçadeiras, arreio e caneleiras, e um mapa 512x512 para o escudo e espada.

Ignoremos por enquanto as possíveis simetrias de que eventualmente se queira tirar partido. Com esta divisão conseguimos, por um lado, aproximadamente o mesmo nível de pormenor em cada um dos mapas, uma vez que quer o primeiro quer o segundo conjunto têm aproximadamente 5000 tris e o terceiro aproximadamente 1000 tris, e, por outro lado, ao primeiro mapa estará associado apenas um material, a pele do personagem, sendo os restantes materiais associados ao segundo mapa, tendo ainda as armas uma texturização independente do personagem.

Poderíamos optar por apenas um único mapa de 2048x2048, portanto com o dobro da definição, mas seria bastante mais morosa a sua manipulação quer não apenas na disposição dos mapas das diversas submalhas quer na posterior construção dos mapas de sombreamento. Do ponto de vista da utilização no motor de jogo a opção por diversos mapas não trás qualquer complexidade adicional.

Na descrição que segue é utilizada a malha ligada tal como obtida no fim da secção anterior. A manipulação de uma malha não ligada é semelhante, bastando ignorar alguns dos passos da descrição que segue.

Abra um novo ficheiro blender. Importe todas as malhas de baixa resolução, File > Append, ….

Caso alguma das malhas tenha ainda um modificador Mirror associado aplique o modificador.

Seleccione a malha de baixa resolução da cabeça, tronco, etc. e entre em modo edição, [Tab]. Seleccione, [Alt]+[RMB] cada um dos contornos fronteira entre as diversas partes da malha agora ligadas (mãos, braçadeira, cabeça, colar, etc.) e marque-os como costuras, [Ctrl]+[E] > Mark Seam.

Os contornos marcados como costuras ficarão coloridos a vermelho.









Passe a modo de selecção de faces (na barra da janela 3D ou com [Ctrl]+[Tab]), coloque o cursor do rato sobre uma das regiões e pressione [L]. Pode ver que toda a malha entre costuras é seleccionada.

Se a região não for seleccionada é sinal que a costura está mal definida, não constituindo um contorno fechado que separe duas regiões.


Posicione o rato e pressione [L] sucessivamente sobre as regiões da cabeça, dos braços e do tronco, seleccionando em simultâneo as três regiões, e separe-as da restante malha, [P] > Seleccion.

Saia de modo edição, [Tab], seleccione a malha agora separada, [RMB], e passe-a para um outro layer, [M] > …. Altere o seu nome para UnwrapMesh_Skin.






Seleccione a malha do escudo e da espada, junte-as numa mesma malha, [Ctrl]+[J], passe-as para uma outra layer, [M] > …, e altere o seu nome para UnwrapMesh_Weapons.










Seleccione agora a malha das calças e etc., [RMB], a malha do arreio, [Shift]+[RMB], e a malha das caneleiras, [Shift]+[RMB], e junte-a numa mesma malha, [Ctrl]+[J]. Altere o seu nome para UnwrapMesh_Props.














Ficam assim criadas as 3 malhas a partir das quais serão criados os 3 diferentes mapas de texturização.

Separe a janela 3D em duas e transforme uma delas numa janela UV/Image Editor. Vamos agora criar nesta janela uma projecção 2D de cada uma das 3 malhas criadas acima.





7.1.1. Skin.


Comecemos por fazer alguns considerandos gerais sobre os procedimentos a adoptar.

Seleccione, [RMB], a malha UnwrapMesh_Skin e ente em modo edição, [Tab].

Na barra da janela UV/Image Editor seleccione Image > New Image.






Na janela 3D, seleccione um dos vértices da cabeça, [RMB], e em seguida toda a malha da cabeça, [L].

Pressione [U] e seleccione Unwrap.





Pode ver que na janela UV/Image Editor surgiu a planificação da malha conforme resultante das costuras existentes (que neste momento não são nenhumas).

Note que maior parte da área é ocupada pela malha do pescoço, estando a face comprimida no centro do mapa UV. Faça zoom da janela, [MW], para uma mais fácil interpretação.




Com o rato sobre a janela UV/Image Editor active a tabela de propriedades, [N]. No painel Image, active UV Grid.







No painel Display da tabela de propriedades da janela 3D, [N], active Texture Solid.












Saia de modo edição para uma mais fácil visualização, [Tab]. São claramente visíveis as duas questões fundamentais a ter em atenção:

1. A dimensão dos quadrados da imagem padrão deve ser uniforme.

Note que a dimensão dos quadrados da imagem padrão é muito diferente nas diversas zonas da cabeça. Isto significa que a densidade de pixéis das imagens que texturizarão a cabeça sobre a superfície do personagem será muito diferente de ponto para ponto. Esta questão é fundamental e não pode ser resolvida por qualquer pós-processamento.

7. Os quadrados da imagem padrão devem manter a forma.

Note que os quadrados da imagem padrão estão muito deformados na maioria da superfície do personagem. Isto significa que as imagens que texturizarão a cabeça serão muito deformadas. Esta questão deve ser minimizada, embora a sua gravidade dependa do tipo de padrão das texturas utilizadas, do modo como os mapas serão criados, e possa ser atenuada em pós-processamento.

O grau de deformação do mapa UV relativamente ao modelo 3D pode ser percepcionado na janela UV/Image Editor através de um mapa de cores do vermelho, correspondente a uma grande deformação, ao azul escuro, correspondente a nenhuma deformação.

No painel Display da tabela de operadores da janela UV/Image Editor active Stretch e seleccione Area.


O mapa está praticamente todo colorido em tons de vermelho, o que significa que existe uma grande deformação. Desejavelmente, o mapa deverá estar todo colorido a azul escuro.








Para que a projecção 2D seja conseguida será necessário criar costuras adicionais na malha que facilitem e tornem congruente a sua representação no plano.

3. As costuras devem estar colocadas não só de modo a facilitar o desdobramento mas também de modo a serem o menos visíveis possível.

Caso existam, devem ser usadas costuras naturais, isto é costuras nas zonas do modelo em que existam vincos pronunciados.

A solução para a inserção de costuras na malha da cabeça de modo a minimizar a distorção e uniformizar a densidade não é única, mas o número de variantes mais comuns é relativamente pequeno. Apresenta-se em seguida uma solução possível.

Invariavelmente, a planificação da malha da cabeça é facilitada através da introdução de uma costura na parte posterior da cabeça, entre o topo da testa e a base do pescoço. Naturalmente que num jogo na 3ª pessoa esta é uma zona muito visível mas é uma costura praticamente inevitável.

Seleccione os vértices como se mostras na figura, um a um, [Shift]+[RMB], ou, utilizando a selecção circular, [C].

Marque os vértices seleccionados como uma costura, [Ctrl]+[E] > Mark Seam.




Poderá ver, [U] > Unwrap, que, só por si, estas costura melhora muito significativamente o processo de planificação da malha.





Prolongue agora a costura, seleccionando os vértices, [C], até ao centro e por cima das sobrancelhas e marque-os, [Ctrl]+[E] > Mark Seam.
















Poderá ver, [U] > Unwrap, uma nova melhoria significativa.








Finalmente, seleccione, [C], os vértices sobre o queixo e na zona central até à base do pescoço, e marque-os, [Ctrl]+[E] > Mark Seam.

















Poderá ver, [U] > Unwrap, uma nova melhoria significativa.






A maior distorção e variância de densidade desta solução verifica-se nas orelhas e na zona do nariz.















Passemos ao tronco. A costura mais óbvia, por ficar mais escondida, é a feita ao longo de todo o braço, por baixo, e prolongada pelo sovaco e região lateral do tronco, até à cintura.

Seleccione o contorno, [Alt]+[RMB], e marque-o, [Ctrl]+[E] > Mark Seam.









Só por si, esta costura conduz de imediato a uma solução bastante boa, verificando-se a maior variação de densidade no peito e zona superior das costas.










Dependendo do modo como a construção dos mapas de cor tornam mais ou menos relevante a existência de costuras em zonas muito expostas, pode fazer sentido a inserção de uma costura na zona superior do braço.

Seleccione o contorno na parte de cima do braço, [Alt]+[RMB], e marque-o, [Ctrl]+[E] > Mark Seam.






A densidade de pixéis torna-se bastante mais homogénea.












Passemos às mãos. Seleccione o contorno que passa no plano médio dos dedos, [Alt]+[RMB], e marque-o, [Ctrl]+[E] > Mark Seam.













A planificação resultante é bastante boa.







É comum uma solução em que a costura é interrompida na parte exterior do polegar.











A opção por esta solução prende-se mais com a posterior arrumação das diversas submalhas do desdobramento (ilhas) do que com uma alteração significativa da densidade e distorção.



É também comum a inserção de costuras na extremidade dos dedos, de modo a diminuir a distorção na zona das unhas.








A solução conduz efectivamente à melhoria da densidade e distorção na zona, mas é um pormenor pouco visível no contexto de um personagem de um jogo, e pode introduzir dificuldades adicionais na construção dos mapas de cor.

Fica assim terminado o processo de inserção de costuras. Seleccione toda a malha, [A], e faça o seu desdobramento, [U] > Unwrap.
























Note que a maior parte da área da matriz está a ser desperdiçada. Feito o desdobramento, é agora necessário manipular as ilhas seguindo alguns princípios gerais:

4. Transladar, rodar e escalar cada uma das ilhas de modo a maximizar a área ocupada.

5. Deixar uma margem no mapa, não encostando as ilhas à sua fronteira, assim com uma margem de alguns pixéis entre cada uma das ilhas.

6. Procurar arrumar as ilhas na menor área possível, escalando depois a área ocupada até à dimensão do mapa.

7. Escalar as ilhas correspondentes à zona da malha onde se pretende mais pormenor.

8. Ter em atenção a existência de simetrias das quais se possa tirar partido.

Note que a ordem pela qual os princípios acima são eventualmente aplicados não é necessariamente a ordem pela qual estão enunciados.

O processo de arrumação das ilhas pode ser mais o menos demorado dependendo do número de soluções existentes. No caso presente, dado o pequeno número de ilhas, o processo é mais ou menos trivial. Se tivéssemos optado por apenas um mapa para toda a malha do personagem este seria um processo simultaneamente muito mais demorado e de uma relevância muito superior.

Note que, tal como no texto acima, o texto que segue é didáctico, procurando mostrar várias opções possíveis, que poderão ser relevantes para o seu personagem em particular e não necessariamente para o personagem que aqui se apresenta, não havendo aqui o objectivo de expor de imediato a opção óptima.

Seleccione cada uma das ilhas, [RMB] > [L], e desloque-as livremente, [G], ou segundo um dos eixo, [G] > [X] ou [G] > [Y], e rode-as, [R] (recorde que se pretender rodar uma malha em valores angulares discretos deve pressionar [Ctrl] enquanto movimenta o rato), procurando dispô-las sobre uma zona quadrangular de menor área possível.























Em seguida, seleccione todas a ilhas, [A], e faça um escalamento, [S], maximizando a área ocupada do mapa.























Este é o procedimento a seguir caso não sejam feitas alterações ao número de ilhas base.

Considere agora a existência de simetrias. No caso presente o exemplo óbvio é o das mãos. As mãos constituem uma malha sem fronteira comum que não têm no modelo 3D qualquer pormenor que as diferencie, não existe por isso nenhuma razão para que sejam representadas por diferentes mapeamentos, a menos que se quisessem texturizar diferentemente.

No modelo 3D, seleccione a malha da mão direita, [L], e elimine-a, [X]. Em termos de aumento de cobertura de área o ganho não é aqui muito significativo, de qualquer modo poupa-se no posterior trabalho de texturização.

Seleccione todas as ilhas, [A], e faça um ligeiro escalamento, [S]. Seleccione a as duas mãos, [CTRL]+[L], e escale-as.























Durante o processo de obtenção do mapa UV pode ainda colocar-se a hipótese de criar novas costuras que facilitem a disposição das ilhas, com o objectivo de aumentar a densidade e sem por em causa a distorção que poderá até melhorar.

A opção pode implicar um acréscimo de trabalho na construção dos mapas de cor, que não compense o acréscimo de densidade obtido. Pode por isso ignorar os pontos 35 a 37.

Seleccione o contorno, [RMB], na base do músculo do ombro, que constitui um vinco natural, prolongue a selecção por baixo do sovaco, e marque-o, [Ctrl]+[E] > Mark Seam.







Faça o desdobramento, [U] > Unwrap, e arrume as ilhas convenientemente.























O acréscimo de densidade não é significativo. No presente exemplo esta não é uma técnica cujas vantagens compensam o acréscimo de trabalho será necessário ter posteriormente.

Note que a maior parte da área é ocupada pela malha do torso propriamente dito, pelo que uma significativa melhoria só pode ser alcançada por manipulação destas malhas.

Na verdade, o modelo de híper resolução do torso é simétrico, pelo que, desse ponto de vista, não há razão para que, no desdobramento, não se tire vantagem desse facto. A opção no entanto é arriscada, por implicar o aproveitamento de simetria numa malha que tem uma larga fronteira comum (a zona central do peito, abdómen e costas) e ainda por cima numa zona muito exposta.

Para além do problema do processamento mais cuidado dos mapas de cor, este tipo de opção pode conduzir a soluções muito dificilmente controláveis a quando da criação do mapa de normais.

Seleccione, [Ctrl]+[RMB], e elimine, [X], a metade direita do torso e braço, faça o desdobramento, [U] > Unwrap, e arrume as ilhas convenientemente. (Nota: No exemplo optou-se também por criar uma costura central na parte frontal do rosto.)























Agora sim, conseguimos um aumento muito significativo da densidade.

Como se disse, tal implica um acréscimo de trabalho na obtenção dos mapas de normais e de cor, porque daqui resulta o aparecimento de um vinco central muito pronunciado,





cuja eliminação poderá ser razoavelmente trabalhosa.







7.1.2. Props.


Seleccione, [RMB], a malha UnwrapMesh_Props e ente em modo edição, [Tab].

Na barra da janela UV/Image Editor seleccione Image > New Image.






Vamos começar por eliminar a malhas com simetria sem fronteiras ligadas com as suas imagens.

Entre em modo representação wireframe, [Z]. Seleccione. [Ctrl]+[LMB], e elimine, [X], a braçadeira da direita.

Seleccione, [Ctrl]+[LMB], e elimine, [X], a caneleira da direita e respectivas correias e a bota da direita.

Embora ligadas, as metades direita e esquerda das calças têm um vinco natural na zona da braguilhas e na costuras posterior. Não se torna portanto problemático a representação das duas partes com apenas um mapa.

Seleccione. [Ctrl]+[LMB], e elimine, [X], a metade direita das calças.

Seleccione, [Alt]+[RMB] e elimine, [Ctrl]+[E] > Clear Seam, a costuras marcadas no colar braçadeiras e cinto, que em acção anterior serviram para separar estas malhas das malhas adjacentes.

Seleccione o contorno que passa sobre a costura das calças entre as pernas, [Alt]+[RMB], e marque-o, [Ctrl]+[E] > Mark Seam.



Seleccione o contorno que passa sobre a costura das calças na zona lateral exterior, [Alt]+[RMB], e marque-o, [Ctrl]+[E] > Mark Seam.








Seleccione os contornos que passam sobre a costura lateral da bota e em torno da sola, [Alt]+[RMB], e marque-os, [Ctrl]+[E] > Mark Seam.











De modo a facilitar a planificação, seleccione as arestas das “esquinas” das malhas da caneleira das correias e das fivelas, [Alt]+[RMB], e marque-os, [Ctrl]+[E] > Mark Seam.





Seleccione um contorno longitudinal na parte inferior da braçadeira, [Alt]+[RMB], e marque-o, [Ctrl]+[E] > Mark Seam.








Seleccione o contorno central fronteiro do colar, que coincide com um costura natural, [Alt]+[RMB], e marque-o, [Ctrl]+[E] > Mark Seam.




Seleccione o contorno central das bolsas da espada, do lado do corpo, por ficar mais escondido, [Alt]+[RMB], e marque-o, [Ctrl]+[E] > Mark Seam.






Seleccione, [Alt]+[RMB], um contorno longitudinal e um contorno transversal das fivelas e marque-os, [Ctrl]+[E] > Mark Seam.







Inseridas todas as costuras necessárias, seleccione toda a malha, [A], e faça o desdobramento, [U] > Unwrap.























Eventualmente, poderá ser necessário garantir, numa primeira fase, que cada uma das ilhas mantém as dimensões relativas da malha 3D. Para isso, a partir da barra da janela UV/Image Editor, active Uvs > Average Islands Scales.

Pode também acontecer que apareçam ilhas sobrepostas. Para corrigir a situação, a partir da barra da janela UV/Image Editor, active Pack Islands.

Proceda à arrumação das ilhas de modo a maximizar a área ocupada do mapa. Comece por seleccionar as ilhas de menores dimensões, [Ctrl]+[RMB] > [Ctrl]+[L], e arraste-as, [G], para fora da imagem. Em seguida seleccione, [RMB] > [L], e arrume, [G] e/ou [R], as ilhas de maior dimensão. Arrume depois as ilhas de menor dimensão.

Para algumas das ilhas pode ser conveniente a reflexão da sua disposição, relativamente a um dos eixos coordenados. Recorra para isso à barra da janela UV/Image Editor, Mirror > * Axis.























A maior deformação verifica-se na ponta das botas e na braçadeira. Também algumas malhas, como sejam as correias do arreio e as pernas das calças, por diferentes razões, têm um desdobramento cuja correcção pode fazer sentido ser feita, dependendo do tipo de texturizações a que venham a ser sujeitas. Vamos manter a sua forma por enquanto e voltar ao tema quando fizermos os mapas de normais e de cor.

7.1.3. Weapons.


Seleccione, [RMB], a malha UnwrapMesh_Weapons e ente em modo edição, [Tab].

Na barra da janela UV/Image Editor seleccione Image > New Image. (recorde que este mapa é de dimensão 512x512)





Seleccione, [Alt]+[RMB], o contorno circular do bordo interior do escudo e marque-o, [Ctrl]+[E] > Mark Seam.









Seleccione, [Alt]+[RMB], o contorno que divide o corpo da lâmina da espada ao meio e marque-o, [Ctrl]+[E] > Mark Seam.










Seleccione, [Alt]+[RMB], um dos contornos longitudinais do punho da espada e marque-o, [Ctrl]+[E] > Mark Seam.






Seleccione toda a malha, [A], e faça o desdobramento, [U] > Unwrap.























Dado que esta malha é de natureza essencialmente geométrica, experimente as opções de método de desdobramento Conformal/Angle Based, Unwrap > F6 > Conformal/Angle Based. Genericamente, Angle Based dá melhores resultados para objectos de natureza geométrica e Conformal dá melhores resultados para formas orgânicas.

Proceda à arrumação das ilhas de modo a maximizar a área ocupada do mapa.























Note que, de modo a maximizar a área das restantes ilhas, a dimensão da ilha correspondente à face interior do escudo foi reduzida, dado que a sua visibilidade é muito menor do que a da face exterior.

Fica assim terminado o processo de desdobramento de todas as malhas do personagem.

Durante o processo de criação dos mapas de normais e dos mapas de oclusão de ambiente poderão levantar-se questões que impliquem a revisão e correcção dos desdobramentos agora obtidos.

Note ainda que algumas opções tomadas, ou a tomar, não são independentes do tipo de texturizações que virão a ser feitas, quer no que se refere ao seu tipo, quer no que se refere ao modo como serão aplicadas.

O processo de correcção dos desdobramentos automáticos é um processo que pode ser bastante demorado, e que só faz sentido adoptar quando, a posteriori, se verifica essa necessidade.










7.2. Normal Maps.

 

Vamos agora construir os mapas de normais.

Importe todas as malhas de híper/alta resolução para um dos layers, File > Link, …, para o ficheiro em que construiu os mapas UV.

Seleccione as malhas de híper/alta resolução da cabeça, torso e mãos (não esqueça os globos oculares), [Shift]+[RMB], inverta a selecção, [Ctrl]+[I], e passe todas as outras malhas para um outro layer, [M] > ….

Seleccione agora as malhas do escudo e da espada, [Shift]+[RMB], e passe-os para um outro layer, [M] > ….

Embora tal não seja estritamente necessário, é boa prática separar as malhas correspondentes a cada um das ilhas dos mapas obtidos na secção anterior, porque tal torna bastante mais fácil a obtenção dos mapas de normais.

Seleccione, [RMB], cada uma das malhas de baixa resolução (UnwrapMesh_Skin, UnwrapMesh_Props, e UnwrapMesh_Weapons), e, no painel Object Tools da tabela de propriedades, [N], da janela 3D, active Shading Smooth.

7.2.1. Skin.


Seleccione a malha UnwrapMesh_Skin, [RMB], e entre em modo edição, [Tab].

Seleccione a malha da cabeça, [RMB] > [L], e separe-a da restante malha, [P] > Seleccion. Repita o procedimento para a malha da mão.

Ficou assim com 3 malhas separadas. Dê às malhas os nomes UnwrapMesh_Skin_Head, UnwrapMesh_Skin_Torso e UnwrapMesh_Skin _Hand.

Se seleccionar qualquer das malhas, [RMB], entrar em modo edição, [Tab], e seleccionar todos os vértices, [A], pode verificar que a ilha correspondente aparece representada na janela UV/Image Editor.





Certifique-se que a tabela Simplify do contexto Scene da janela de propriedades está desactivada.

A obtenção dos mapas de normais pode ser demorada. Se o seu computador tem poucos recursos pode ser aconselhável que proceda a um primeiro ensaio com Simplify activo e o parâmetro Subdivision com um valor baixo (3 deve ser suficiente). No entanto, para a obtenção da versão final do mapa de normais deve ter Simplify desactivado.

Active em simultâneo os layers onde tem as malhas de híper/alta resolução da cabeça, torso, mãos, e as malhas UnwrapMesh_Skin.

Seleccione a malha de híper/alta resolução do torso, [RMB], e, em seguida, a malha UnwrapMesh_Skin_Torso.


No painel Bake do contexto Render da janela de propriedades, seleccione Bake Mode: Normals. Certifique-se que estão especificados, Normal Space: Tangent, Selected to Active, Distance: 0.0 e Bias: 0.00.








Pressione Bake e aguarde a construção do mapa de normais.










O mapa do tronco deverá de fácil obtenção, todo em tons ténues de azul/rosa de evolução suave, sem aparecimento de pontos escuros ou esverdeados, e traduz todos os pequenos pormenores do modelo de híper resolução através de um mapeamento em cor das normais à sua superfície.




Se expandir muito a imagem pode ver que são claramente visíveis os pixéis da imagem na zonas de transição brusca. Paralelamente ao número de tris da malha de baixa resolução, a dimensão dos mapas de texturização do personagem repercute-se na percepção da qualidade gráfica do personagem em ambiente de jogo. As dimensões aconselhadas, 2 mapas de 1024x 1024 e um mapa de 512x512, garantem uma percepção de um elevado nível de detalhe para a dimensão que os personagens assumem nas situações típicas de jogo numa aplicação para PC.

Na barra da janela UV/Image Editor, salve a imagem com nome NM_Skin_Warrior, Image > Save as Image > ….

Seleccione agora a malha dos globos oculares, [RMB], a malha de híper resolução da cabeça, [Shift]+[RMB], e por fim a malha UnwrapMesh_Skin_Head, [Shift]+[RMB].

No painel Bake do contexto Render da janela de propriedades certifique-se que Clear está desactivado.

Pressione Bake e aguarde a construção do mapa de normais.










O mapa da cabeça deverá de fácil obtenção, todo em tons ténues de azul/rosa de evolução suave, sem aparecimento de pontos escuros ou esverdeados, traduzindo todos os pequenos pormenores do modelo de híper resolução, apenas limitado pelo número de pontos da matriz.

Na barra da janela UV/Image Editor, salve a imagem com nome NM_Skin_Warrior, Image > Save as Image > ….


Seleccione agora a malha de híper resolução da mão, [RMB], seguida da malha UnwrapMesh_Skin_Hand, [Shift]+[RMB].

No painel Bake do contexto Render da janela de propriedades certifique-se que Clear está desactivado. Pressione Bake e aguarde a construção do mapa de normais.

Na barra da janela UV/Image Editor, salve a imagem com nome NM_Skin_Warrior, Image > Save as Image > ….

É muito provável que apareçam agora entre os dedos algumas zonas de transição abrupta de cor, resultantes da tentativa de adaptação da malha de alta resolução à malha de baixa resolução numa zona em que as superfícies estão muito próximas.





Uma solução para o problema passa pela associação temporária à malha de baixa resolução de um modificador Subdivision Surface, e/ou mesmo a inserção temporária de novos contornos no modelo baixa resolução, note que sem a obtenção de um novo desdobramento, e a criação do mapa de normais sobre esta malha mais complexa.

Nas imagens abaixo pode ver, à esquerda, o mapa de normais obtido com a malha de baixa resolução original, e, à direita, o mapa de normais obtido quando à malha de baixa resolução original se associa um modificador de subdivisão de superfície.

Note que desapareceu a informação, errada no mapa da esquerda, sobre a variação brusca das normais.

























Ainda assim, neste caso concreto, a correcção não é muito relevante porque, por um lado a mão numa é observada a uma tão curta distância que torne o pormenor visível, e, por outro, a simplicidade da malha de baixa resolução acaba por induzir um sombreamento que concorre negativamente com a informação contida no mapa de normais.

Nas imagens abaixo pode ver, à esquerda, a mão com o mapeamento do mapa de normais original, e, à direita, a mão com o mapa de normais corrigido.














Vamos agora ver o resultado da aplicação à malha de baixa resolução do mapa de normais obtido. Como vamos ainda utilizar as malhas separadas da cabeça, torso e mãos para obter os mapas de oclusão de ambiente não as integraremos por enquanto numa única malha.

Seleccione a malha de baixa resolução da cabeça, [RMB]. Active o contexto Material da janela de propriedades e pressione New para associar um material à malha.

Especifique Specular Intensity : 0.2 e mantenha os restantes parâmetros.




Active o contexto Textures da janela de propriedades e pressione New para associar uma nova textura ao material.

Especifique Type: Image or Movie e, no painel Image, seleccione a imagem correspondente ao mapa de normais criado.










No painel Image Sampling active Normal Map.





No painel Mapping Seleccione Coordinates: UV. Não é necessário especificar o nome do mapa uma vez que a malha apenas tem um desdobramento associado.


No painel Influence, desactive Diffuse: Color e active Geometry : Normal.








Seleccione a malha de baixa resolução do tronco, active o contexto Material da janela de propriedades, pressione New para associar um material à malha, e seleccione o nome do material que criou para a cabeça. Repita o procedimento para a malha de baixa resolução da mão.


No painel Display da tabela de propriedades da janela 3D, [N], Seleccione Shading: GLSL e desactive Texture Solid.











Na barra da janela 3D, seleccione Vieport Shading: Texture, ou pressione [Alt]+[Z].





Se não tiver nenhuma fonte de luz em cena as malhas ficarão todas a negro. Insira uma fonte do tipo Hemi e uma fonte do tipo Sun, [Shift]+[A] > Lamp > …. Controle convenientemente a intensidade de cada uma das fontes no contexto Object Data da janela de propriedades.

Pode ver como a malha de baixa resolução parece agora ter a topologia e todos os pequenos pormenores da malha de híper resolução.



















Pode também verificar que as costuras são praticamente indetectáveis com excepção da costura da zona das sobrancelhas, e isto apenas para um nível de zoom muito elevado, nível este em que, de resto, são também claramente visíveis os pixéis da matriz de texturização, e que não se traduz em qualquer tipo de problemas porque não deverá ser um nível de zoom permitido em ambiente de jogo.



7.2.2. Props.


Vamos agora criar os mapas de normais da malha UnwrapMesh_Props. A malha tem uma topologia bastante mais complexa do que a malha UnwrapMesh_Skin, com diversas submalhas não ligadas, pelo que a obtenção do mapa de normais é bastante menos trivial.

Para tornar a explicação de alguns dos procedimentos menos complexa, e nomeadamente esclarecer a função dos parâmetros Bias e Distance do painel Bake do contexto Render da janela de propriedades, vamos começar por fazer alguns considerandos tomando uma malha simples como exemplo.

Considere uma malha de baixa resolução constituída apenas por um plano posicionada em z = 0.0. Considere também uma malha de alta resolução que consiste numa malha constituída por 3 pirâmides de alturas 1, 2 e 3 UB ligada a um plano posicionado em z =0.0, e ainda 3 esferas, portanto malhas não ligadas, de raio unitário, com centro em 0.5, 1.5 e 2.5. Considere ainda um outro objecto constituído por uma esfera de raio unitário e centro z = 1.5














No que segue, é seleccionada a esfera independente, representadas a verde, seguida da malha de constituída pelas esferas e pelas pirâmides, e por fim a malha de baixa resolução constituída pelo plano. Seguidamente é pressionado o botão Bake do painel Bake do contexto Render da janela de propriedades, em que foi seleccionado Bake Mode: Normals e activado Selected to Active.

Na configuração padrão, Bias: 0.0 e Distance: 0.0, a malha ligada, as pirâmides, é convenientemente representada, independentemente da sua distância ao plano, mas as malhas não ligadas, independentemente de serem ou não objectos separados, estão representados a verde. Isto significa que as esferas estão a ser interpretadas como buracos. Estão representadas a verde porque as normais estão dirigidas segundo um sentido que se afasta do observador.














Seja Bias: 0.001 e Distance: 0.0. Ou seja, o parâmetro Bias é apenas muito ligeiramente diferente de 0.0. Toda a malha ligada é interpretada correctamente e a malha não ligada, pertencente ou não ao mesmo objecto, é ignorada.














Seja Bias: 1.0 e Distance: 0.0. Toda a malha não ligada abaixo de Bias, neste caso a esfera mais próxima do plano, é convenientemente incluída no mapa de normais.














Seja Bias: 1.2 e Distance: 0.0. Sejam ou não pertencentes ao mesmo objecto, todas as malhas não ligadas são convenientemente interpretadas. As duas esferas com centro em 1.5 são seccionadas pelo plano Bias, estando a ser representada a sua calote, côncava, interior.














Seja Bias: 3.0 e Distance: 0.0. Todos as malhas ligadas ou não ligadas e pertencentes ou não ao mesmo objecto estão abaixo do plano Bias e são convenientemente interpretadas. Na maior parte das situações o controle do parâmetro Bias é suficiente para obter o mapa de normais desejado.














Consideremos agora a influência do parâmetro Distance. Seja Bias: 0.0 e Distance: 1.0. Todas as malhas não ligadas acima do plano Bias são ignoradas. A malha ligada é seccionada pelo plano Distance e só é representada a malha abaixo desse plano. Ao contrário do seccionamento pelo plano Bias as malhas seccionadas são consideradas fechadas.














Finalmente consideremos a situação em que quer Bias quer Distance têm valores não nulos. Seja Bias: 1.1. e Distance: 1.3. As malhas não ligadas são seccionadas pelo plano Distance e apenas são representadas as que estão abaixo desse plano e é representada a malha ligada abaixo do plano Distance+Bias.














Exposta a influência dos parâmetros Bias e Distance, passemos então à obtenção dos mapas de normais da malha UnwrapMesh_Props.

Comecemos pelo cinto, que é um bom exemplo de malhas ligadas e não ligadas e malhas de objectos diversos, que se pretende que sejam interpretadas sobre um mesmo desdobramento.

Seleccione a malha UnwrapMesh_Props, [RMB], entre em modo edição, [Tab], passe a modo de representação de faces, [Ctrl]+[Tab], seleccione a malha do cinto, [RMB] > [L], separe-a da restante malha, [P] > Seleccion, e designe-a por UnwrapMesh_Props_Belt. Na janela UV/Image Editor verá apenas o desdobramento da malha do cinto. Saia de modo edição, [TAB].




Seleccione a malha do medalhão, [RMB], a malha do cinto, [Shift]+[RMB], e a malha UnwrapMesh_Props_Belt, [Shift]+[RMB].

No painel Bake do contexto Render da janela de propriedades active Selected to Acive e especifique Bias 0.5, que é suficiente para incluir todas as malhas ligadas e não ligadas do cinto e ainda a malha do medalhão.

Pressione Bake e aguarde a construção do mapa de normais.

Se Bias foi especificado de modo a incluir todas as malhas e ainda assim obtiver zonas verdes no mapa de normais, tal deve-se ao facto de na malha de alta resolução ter normais incorrectamente posicionadas.

Admitamos que se tinha obtido um mapa de normais como se mostra na figura. As fivelas estão a verde não porque Bias esteja mal especificado mas porque, na malha de alta resolução, as suas normais estão invertidas.

Salve o ficheiro. Abra o ficheiro com a malha de alta resolução, seleccione o cinto, [RMB], entre em modo edição, [Tab], Seleccione toda a malha, [A], corrija aposição das normais, [Ctrl]+[N], saia de modo edição, [Tab], e salve o ficheiro.

Reabra o ficheiro com os mapas UV e repita os procedimentos de modo a obter de novo o mapa de normais do cinto. O mapa será agora construído correctamente.








Na barra da janela UV/Image Editor, salve a imagem com nome NM_Props_Warrior, Image > Save as Image > ….

Nota: Não é relevante se as zonas do mapa de normais não ocupados pelas ilhas são transparentes ou têm um tom de azul. Para obter o tom de azul o parâmetro Clear do painel Bake deve estar activo quando constrói o primeiro mapa.



Vamos agora atender a uma questão que é sobretudo relevante nas malhas de natureza geométrica. Visível que o contorno do cinto tem uma evolução irregular. Tal é provocado pela adaptação da superfície curva da malha de alta resolução às superfícies planas da malha de baixa resolução.






Para evidenciar o problema vamos começar por aplicar o mapa de normais à malha de baixa resolução.

Proceda de modo idêntico ao visto anteriormente (pontos 85 a 95).

É claramente visível a evolução ondulante do contorno no cinto.

Para resolver o problema vamos gerar o mapa com um modificador de subdivisão de superfície associado à malha de baixa resolução.

Seleccione a malha UnwrapMesh_Props_ Belt, [RMB], e associe-lhe um modificador Subdivision Surface. No painel do modificador desactive Subdivide UVs.




Eventualmente, como é o caso presente, poderá fazer sentido adicionar novos contornos, [Ctrl]+[R], de modo a dar à malha uma forma mais próxima da malha de alta resolução, no presente caso para tornar os bordos do cinto menos arrendados, como naturalmente resultam da associação do modificador.

Quando insere os contornos, certifique-se que, no painel Loop Cut and Slide da tabela de operadores da janela 3D, Correct UVs está activo.

Note que quer estes contornos que o modificador de subdivisão de superfície são provisórios, e apenas se destinam a obter o mapa de normais, sendo posteriormente eliminados.

Uma segunda nota. Caso adicione novos contornos, salve um ficheiro com esta nova versão da malha de baixa resolução, para que possa ser usado novamente quando forem construídos os mapas de oclusão de ambiente

Gere de novo o mapa de normais. A melhoria resultante é bem visível.











Seleccione o novo mapa de normais no painel Image do contexto Textures da janela de propriedades. Nas imagens seguintes pode ver, à direita, o resultado da aplicação do mapa original e à esquerda o resultado para o mapa corrigido.

Note que as correcções acima descritas são trabalhosas, só devendo ser feitas quando o seu impacto sobre o modelo é relevante. Se para as dimensões que o personagem assume em ambiente jogo as imperfeições são pouco ou nada visíveis a sua correcção é inútil.










Seleccione a malha UnwrapMesh_Props, [RMB], entre em modo edição, [Tab], passe a modo de representação de faces, [Ctrl]+[Tab], seleccione a malha das calças, [RMB] > [L], separe-a da restante malha,[P] > Seleccion, e designe-a por UnwrapMesh_Props_Pants. Na janela UV/Image Editor verá apenas o desdobramento da malha das calças. Saia de modo edição, [Tab].



Seleccione a malha de híper resolução das calças, [RMB], e a malha UnwrapMesh_Props_ Pants, [Shift]+[RMB].

No painel Bake do contexto Render da janela de propriedades verifique que Selected to Active está activo e Clear está desactivo. Especifique Bias 0.1. Pressione Bake e aguarde a construção do mapa de normais.


Deverá obter o mapa de normais sem qualquer problema.










Na barra da janela UV/Image Editor, salve a imagem com nome NM_Props_Warrior, Image > Save as Image > ….

Seleccione a malha UnwrapMesh_Props, [RMB], entre em modo edição, [Tab], passe a modo de representação de faces, [Ctrl]+[Tab], seleccione a malha do colar, [RMB] > [L], separe-a da restante malha, [P] > Seleccion, e designe-a por UnwrapMesh_Props_Necklage. Na janela UV/Image Editor verá apenas o desdobramento da malha do colar. Saia de modo edição, [Tab].




Seleccione a malha de alta resolução do colar, [RMB], e a malha UnwrapMesh_Props_ Necklage, [Shift]+[RMB].

No painel Bake do contexto Render da janela de propriedades verifique que Selected to Active está activo e Clear está desactivo. Especifique Bias 0.3 (por causa dos botões na zona frontal). Pressione Bake e aguarde a construção do mapa de normais.

Deverá obter o mapa de normais sem qualquer problema.










Na barra da janela UV/Image Editor, salve a imagem com nome NM_Props_Warrior, Image > Save as Image > ….

Seleccione a malha UnwrapMesh_Props, [RMB], entre em modo edição, [Tab], passe a modo de representação de faces, [Ctrl]+[Tab], seleccione a malha da braçadeira, [RMB] > [L], separe-a da restante malha, [P] > Seleccion, e designe-a por UnwrapMesh_Props_Bracer. Na janela UV/Image Editor verá apenas o desdobramento da malha da braçadeira. Saia de modo edição, [Tab].



Seleccione a malha de alta resolução da braçadeira, [RMB], e a malha UnwrapMesh_ Props_Bracer, [Shift]+[RMB].

No painel Bake do contexto Render da janela de propriedades verifique que Selected to Active está activo e Clear está desactivo. Especifique Bias 0.5 (por causa dos botões e das fivelas). Pressione Bake e aguarde a construção do mapa de normais.

Deverá obter o mapa de normais sem qualquer problema.










Na barra da janela UV/Image Editor, salve a imagem com nome NM_Props_Warrior, Image > Save as Image > ….

Seleccione a malha UnwrapMesh_Props, [RMB], entre em modo edição, [Tab], passe a modo de representação de faces, [Ctrl]+[Tab], seleccione a malha da bota, [RMB] > [L], separe-a da restante malha, [P] > Seleccion, e designe-a por UnwrapMesh_Props_Boots1. Na janela UV/Image Editor verá apenas o desdobramento da malha da bota. Saia de modo edição, [Tab].




Seleccione a malha de alta resolução da bota, [RMB], e a malha UnwrapMesh_Props_ Boots1, [Shift]+[RMB].

No painel Bake do contexto Render da janela de propriedades verifique que Selected to Acive está activo e Clear está desactivo. Especifique Bias 0.1. Pressione Bake e aguarde a construção do mapa de normais.


Deverá obter o mapa de normais sem qualquer problema.










Na barra da janela UV/Image Editor, salve a imagem com nome NM_Props_Warrior, Image > Save as Image > ….

Seleccione a malha UnwrapMesh_Props, [RMB], entre em modo edição, [Tab], passe a modo de representação de faces, [Ctrl]+[Tab], seleccione a malha da caneleira, [RMB] > [L], separe-a da restante malha, [P] > Seleccion, e designe-a por UnwrapMesh_Props_Boots2. Na janela UV/Image Editor verá apenas o desdobramento da malha da bota. Saia de modo edição, [Tab].




Seleccione a malha de alta resolução da caneleira, [RMB], e a malha UnwrapMesh_Props_ Boots2, [Shift]+[RMB].

No painel Bake do contexto Render da janela de propriedades verifique que Selected to Acive está activo e Clear está desactivo. Especifique Bias 0.1. Pressione Bake e aguarde a construção do mapa de normais.


Deverá obter o mapa de normais sem qualquer problema.











Na barra da janela UV/Image Editor, salve a imagem com nome NM_Props_Warrior, Image > Save as Image > ….

Seleccione a malha UnwrapMesh_Props, [RMB], entre em modo edição, [Tab], passe a modo de representação de faces, [Ctrl]+[Tab], seleccione a malha das correias da caneleira, [L], separe-a da restante malha, [P] > Seleccion, e designe-a por UnwrapMesh_Props_Boots3. Na janela UV/Image Editor verá apenas o desdobramento da malha das correias. Saia de modo edição, [Tab].



Como as correias na malha de baixa resolução foram seccionadas na zona frontal, e tal não foi feito na malha de alta resolução, e dada a interpenetração das malhas, nomeadamente das fivelas, e ainda devido à grande simplificação feita à malha de baixa resolução, a obtenção de um correcto mapa de normais por controle do parâmetros Bias e Distance é muito complexo, se não de todo impossível.

Se proceder como indicado nas malhas anteriores, poderá verificar que é indevidamente incorporada informação sobre as fivelas nos mapas das correias que estão por baixo destas,

e informação sobreposta das malhas das correias adjacentes.





Note que estes factos poderão, eventualmente, ser desprezados, dado que apenas são visíveis em determinadas perspectivas, e quando o modelo é observado de muito perto, situações que, muito provavelmente, não ocorrerão em ambiente de jogo.
















Dada a proximidade entre as malhas não é possível especificar os parâmetros Bias e Distance para controlar devidamente quais as malhas a integrar. Se baixarmos muito o parâmetro Bias o mapa passará a incorporar a informação de que a malha de baixa resolução está abaixo da malha de alta resolução e apresentará zonas esverdeadas.

Seleccione a malha de alta resolução e torne a malha local, [L] > Selected Objects and Data.








Entre em modo edição, [Tab], insira novos contornos transversais para delimitar a malha, [Ctrl]+[R], e seleccione, [Alt]+[RMB], e elimine, [X], a malha que é oculta pela caneleira.










Vamos agora dividir a malhas em diversos objectos. Basta dividi-la em objectos disjuntos. Ainda em modo edição, seleccione um vértice, [RMB], de cada uma das pontas da correia, expanda a selecção, [Ctrl]+[L], e separe as malhas, [P] > Selection. A malha tomará o nome Boot3.001.




Seleccione agora um vértice, [RMB], de cada uma das restantes partes da correia, expanda a selecção, [Ctrl]+[L], e separe as malhas, [P] > Selection. A malha tomará o nome Boot3.002.







Restará a malha com as fivelas, que manterá o nome Boot3.








Nota: Se pretender que a malha de alta resolução incorpore estas modificação em definitivo, o procedimento correcto será o de fazer as alterações no ficheiro original, e salvar, fechar, e abrir o presente ficheiro para que as alterações sejam importadas.






Seleccione a malha de baixa resolução da correia, [RMB], duplique-a, [Shift]+[D], e passe-a para outra layer, para que possa vir a ser utilizada mais tarde. Todas as alterações na malha de baixa resolução são provisórias e apenas se destinam a construir os mapas de normais e de oclusão de ambiente.

Proceda agora de modo idêntico para a malha de baixa resolução original. Obtendo as malhas UnwrapMesh_Props_Boots3.001, UnwrapMesh_Props_Boots3.002 e UnwrapMesh _Props_Boots3.







Depois de separar as malhas, se procedêssemos de modo idêntico ao descrito para os objectos anteriores de modo a obter o mapa de normais poderemos verificar que o problema em mãos tinha sido resolvido. No entanto, resta ainda uma segunda questão a ter em conta: a associada ao mapeamento de objectos curvos de malhas de alta resolução sobre objectos curvos de malhas de baixa resolução.

Poderíamos ver as ondulações características nos mapas de normais,




com o respectivo impacto negativo quando a malha de baixa resolução é texturizada.

Mais uma vez se chama à atenção para o facto dos procedimentos a adoptar para corrigir esta situação só fazerem sentido quando o efeito é detectável para as dimensões comuns do personagem em ambiente de jogo.



Seleccione as malhas de baixa resolução das correias e associe-lhe um modificador Subdivision Surface. Não esqueça que deve desactivar Subdivide UVs.



Insira novos contornos, [Ctrl]+[R] e ajuste a posição da malha de baixa resolução, utilizando os controladores, de modo a que a malha de baixa resolução se ajuste à superfície da malha de alta resolução.











Quando insere os contornos, certifique-se que, no painel Loop Cut and Slide da tabela de operadores da janela 3D, Correct UVs está activo.








Seleccione a malha de baixa resolução UnwrapMesh_Props_Boots3.001, [RMB], e a malha de alta resolução Boot3.001, [Shift] + [RMB].

No painel Bake do contexto Render da janela de propriedades verifique que Selected to Active está activo e Clear está desactivo. Especifique Bias 0.2. Pressione Bake e aguarde a construção do mapa de normais.

Proceda de modo idêntico para os pares de malhas UnwrapMesh_Props_Boots3.001 / Boot3.001 e UnwrapMesh_Props_Boots3 / Boot3.

Deverá obter o mapa de normais sem qualquer problema.






Na barra da janela UV/Image Editor, salve a imagem com nome NM_Props_Warrior, Image > Save as Image > ….

Poderá ver que agora os mapas de normais são correctamente construídos, como pode ver na figura em baixo à esquerda. Compare o mapa obtido anteriormente (figura em baixo à direita).







Desaparecendo os indesejados efeitos quando a malha de baixa resolução é texturizada, como pode ver na figura em baixo à esquerda. Compare com a texturização obtida anteriormente (figura em baixo à direita).












Não se esqueça que deverá preservar a malha de baixa resolução modificada para construir os mapas de oclusão de ambiente.

Para observar o efeito das texturização com o mapa de normais basta seleccionar a malha original resultante da duplicação e associar-lhe o material conveniente, procedendo como acima foi descrito para outros objectos.

Seleccione a malha de alta resolução do arreio e torne a malha local, [L] > Selected Objects and Data.

Entre em modo edição, [Tab]. Seleccione, [RMB], um vértice de cada uma das partes disjuntas cuja sobreposição ou proximidade possa dificultar a obtenção dos mapas de normais, expanda a selecção, [Ctrl]+[L], e separe as malhas, [P] > Selection. As malha tomarão o nome,

Harness.001 (note que os rebites são incluídos na mesma malha, uma vez que não têm malha própria de baixa resolução),

Harness.002,




Harness.003,





Harness.004,








e Harness.








Seleccione a malha de baixa resolução do arreio, [RMB], e duplique-a, [Shift]+[D], para o caso virem a ser feitas alterações à malha e possamos mais tarde utilizar a malha original.

Seleccione a malha de baixa resolução original do arreio, [RMB], entre em modo edição, [Tab], seleccione, [RMB], um vértice de cada uma das partes correspondentes à malha de alta resolução que criou expanda a selecção, [Ctrl]+[L], e separe as malhas, [P] > Selection. As malha tomarão o nome UnwrapMesh_Props_Harness.00#.

Seleccione, [RMB], a malha Harness.001 e a malha UnwrapMesh_Props_Harness.001, [Shift]+[RMB].

No painel Bake do contexto Render da janela de propriedades verifique que Selected to Acive está activo e Clear está desactivo. Especifique Bias 0.2. Pressione Bake e aguarde a construção do mapa de normais.

Repita o procedimento para cada um dos pares de malhas. Deverá obter o mapa de normais sem qualquer problema.








Admitamos que por inspecção do mapa de normais não são detectáveis distorções significativas, e vamos observar o efeito da texturização com o mapa de normais agora obtido, seleccionando a malha original resultante da duplicação e associando-lhe o material conveniente, procedendo como acima foi descrito para outros objectos. Podemos observar diversas distorções.



Note ainda o efeito de escada resultante da pixelização inevitável dada a dimensão relativa dos objectos na matriz de texturização.

Mais uma vez se chama à atenção para o facto de, por hipótese académica, os objectos estarem a ser observados de muito perto, não correspondendo a uma situação típica em ambiente de jogo, e de que só faz sentido o tipo de procedimento que seguem quando estes são relevantes para a percepção da qualidade do personagem em ambiente de jogo.

Algumas destas situações poderiam ter sido previstas a quando da obtenção dos mapas UV. Não se quis na altura alertar para o facto, e proceder às correcções, para que pusessem agora ser expostas algumas das técnicas de correcção do mapa de normais já numa fase em parte dele se encontra construído. Por uma outra razão qualquer pormenor pode passar despercebido e ser necessário proceder a correcções nesta fase.

Considere a bolsa inferior de suporte da espada. É visível o enviesamento das correias e o ondular associado à planificação dos vincos circulares.

Seleccione a malha Unwrap Mesh_Props_Harness, [RMB], entre em modo edição, [Tab], seleccione um vértice da bolsa, [RMB], e expanda a selecção, [Ctrl]+[L]. Observe a malha na janela UV/ Image Editor.






Na janela UV/ Image Editor, seleccione um contorno vertical, [Alt]+[RMB], e alinhe-o em x, pelo método tradicional, [S] > [X] > 0, ou a partir da barra da janela UV/ Image Editor, [W] > Align X.




Repita o procedimento para todos os contornos verticais









Seleccione os dois contornos longitudinais da esquerda, [Alt]+[RMB], e alinhe a malha, [G] > [Y].








Com apenas a malha da bolsa seleccionada, saia de modo edição, seleccione a malha Harness, [RMB], a malha Unwrap Mesh_Props_Harness, [Shift]+[RMB], e refaça o mapa de normais, pressionando o botão Bake no painel Bake do contexto Render da janela de propriedades.

Pode ver que agora o mapa é construído correctamente. Note que é visível a informação relativa ao mapa anterior, mas tal não tem qualquer impacto na texturização uma vez que é exterior aos mapas UV. De qualquer modo, por uma questão formal, a questão pode ser corrigida.

Na barra da janela UV/ Image Editor seleccione o modo Paint.




No painel Paint da tabela de operadores, [N], da janela janela UV/ Image Editor, seleccione Brush. Coloque a o rato sobre a célula de cor, em seguida sobre a pipeta, e arraste-a para o mapa recolhendo a cor de fundo.



No painel Paint Curve seleccione a forma mais à direita.









Limpe o mapa.











Na barra da janela UV/ Image Editor seleccione de novo o modo View. Construa de novo o mapa de normais procedendo como anteriormente.







Pode verificar o resultado da correcção activando de novo a texturização.











Nota: Se tiver texturizado o objecto e tentar criar o mapa de normais deverá receber a mensagem “Feedback loop detected” na barra da janela Info.



Para corrigir a questão desactive momentaneamente a textura, no contexto Textures da janela de propriedades.











Considere agora uma das correias.

















Seleccione cada um dos contorno longitudinais, [Alt]+[RMB], e alinhe-os em x, [S] > [X] > 0. Seleccione cada um dos contorno transversais, [Alt]+[RMB], e alinhe-os em y, [S] > [Y] > 0.

Seleccione as secções que não estão coloridas a azul escuro e desloque-as em y, [G] > [Y], de modo a minimizar a distorção.







Procedendo como para o caso da bolsa, limpe o mapa e gere de novo o mapa de normais. Repita o procedimento para cada uma das correias.

Note que o alinhamento das ilhas permite um eventual aproveitamento do espaço da matriz imagem. Para evitar repetições de procedimentos, é, por isso, um processo a considerar logo na fase de construção dos mapas UV.



Note também que para além da correcção da distorção, o alinhamento da ilha com os eixos coordenados permite a diminuição do efeito de pixelização.







7.2.3. Weapons.


Seleccione a malha de alta definição do escudo (Shield) e torne a malha local, [L] > Selected Objects and Data.




Entre em modo edição, [Tab], seleccione um vértice de cada uma das correias e respectivos rebites, [RMB], e expanda a selecção, [Ctrl]+[L]. Separe a malha, [P] > Selection (a malha passará a ter a designação Shield.001).





Seleccione a malha de alta definição da espada (Sword) e torne a malha local, [L] > Selected Objects and Data.

Entre em modo edição, [Tab], seleccione um vértice da lâmina e outro da protecção punho, [RMB], e expanda a selecção, [Ctrl]+[L]. Separe a malha, [P] > Selection (a malha passará a ter a designação Sword.001).

Seleccione a malha de baixa resolução da espada e escudo (UnwrapMesh_Weapons) e crie as quatro malhas correspondentes às malhas de alta resolução UnwrapMesh_Weapons.00#.

Seleccione a malha Shield, [RMB], e a malha UnwrapMesh_Weapons, [Shift]+[RMB].

No painel Bake do contexto Render da janela de propriedades verifique que Selected to Acive e Clear estão activos. Especifique Bias 0.2. Pressione Bake e aguarde a construção do mapa de normais.

Deverá obter o mapa de normais sem qualquer problema.









Na barra da janela UV/Image Editor, salve a imagem com nome NM_Weapons_Warrior, Image > Save as Image > ….

Desactive Clear no painel Bake do contexto Render da janela de propriedades e repita o procedimento para os outros 3 pares de malhas.

Se considerar pertinente alinhe previamente a malha das correias procedendo como foi descrito para as correias do arreio.

Deverá obter o mapa de normais sem qualquer problema.









Na barra da janela UV/Image Editor, salve a imagem com nome NM_Weapons_Warrior, Image > Save as Image > ….

Ficam assim completos os 3 mapas de normais. A figura em baixo mostra a malha de baixa resolução texturizada com os mapas de normais obtidos.









































7.3. Ambient Occlusion Maps.



Vamos agora passar aos mapas de oclusão de ambiente. Feito todo o trabalho de correcção dos mapas UV e alteração temporária, sempre que necessário, da malha de baixa resolução, a construção dos mapas de oclusão de ambiente é absolutamente trivial, só sendo demorada em consequência do seu peso computacional.

Em primeiro lugar, como boa prática, e prevendo já o que convenientemente teria que ser feito a quando da exportação do personagem para o ambiente Unity, vamos começar por eliminar todo o lixo que eventualmente possa ter sido criado a quando da construção dos mapas de normais.

Na barra da janela UV/ Image Editor abra o stack de imagens.

É provável que tenha referenciadas diversas imagens, que deveriam ser temporárias, que resultaram do processo de construção dos mapas de normais, e que por alguma razão mantiveram um link para algum dos objectos presentes em cena.



Para eliminar estas imagens, seleccione sucessivamente cada uma delas e pressione o símbolo X à direita do nome mantendo a tecla [Shift] pressionada.

As imagens processadas deste modo passarão a exibir um 0 precedendo o seu nome no stack









Salve o ficheiro, saia, e abra o ficheiro de novo. No stack passarão constar apenas as imagens relevantes.

Se quiser alterar o nome interno (o nome do bloco de dados) da imagem, pode fazê-lo, por exemplo, no painel Image da tabela de operadores da janela UV/Image Editor. Note que o nome interno e o nome externo podem ser diferentes, sendo que o nome da imagem no stack corresponde ao nome interno.

Se quiser alterar o nome externo, altere a informação da célula Source, e proceda à alteração do nome do ficheiro na pasta onde se encontra. Todos o apontadores para os mesmos blocos de dados, por exemplo os existentes no contexto Textures, serão coerentemente alterados.

É também boa prática dar aos materiais um nome que os identifique claramente. Pode eliminar materiais obsoletos procedendo de modo idêntico ao exposto para o caso das figuras, isto é, pressionando o símbolo X com a tecla [Shift] pressionada em simultâneo.

Para criar os mapas de oclusão de ambiente, as malhas de alta/híper resolução não devem ter materiais associados.

Note que não poderá eliminar os materiais que estão associados a objectos que foram Linkados, identificados com a letra L à esquerda do seu nome no stack. Para eliminar os materiais associados às malhas linkadas terá de o fazer nos ficheiros originais.

Por fim, é também boa prática identificar as texturas associadas aos materiais com um nome sugestivo.









7.3.1. Skin.


Comecemos então a construir os mapas de oclusão de ambiente.

Elimine todos os materiais associados às malhas de alta/híper resolução. Dados que não é possível eliminar materiais associados a objector linkados, para eliminar os materiais terá de o fazer nos ficheiros originais ou começar por tornar os objectos locais e eliminar então os materiais.

No stack de materiais temos neste momento apenas os 3 materiais associados às malhas de baixa resolução.

No contexto Scene da janela de propriedades verifique que Simplify está desactivado.





No painel Gather do contexto World da janela de propriedades especifique um elevado número de amostras, Samples:16.

Note que não é necessário activar Ambient Occlusion e que apesar estar a cinzento o painel Gather é editável.

Processo de construção dos mapas de oclusão de ambiente pode ser muito demorado. É boa prática ensaiar a construção do mapa com um número reduzido de amostras (5), verificar se existem correcções a fazer, nomeadamente nos parâmetros Bias e Distance do painel Bake, e aumentar o número de amostras quando se pretender a construir a versão definitiva.

Seleccione a malha de baixa resolução da cabeça e entre em modo edição, [Tab]. A partir da barra da janela UV/Image Editor, crie uma nova imagem, com a mesma dimensão do mapa de normais, e designe-a por AO_Skin_Warrior. Saia de modo edição, [Tab].




Seleccione a malha de híper resolução dos globos oculares, [RMB], da cabeça, [Shift]+[RMB], e por fim a malha de baixa resolução da cabeça, [Shift]+[RMB].

Na obtenção dos mapas de oclusão de ambiente é importante que estejam em cena não só as malhas de híper e baixa resolução sobre as quais a operação está a ser feita mas também todas as malhas de alta/híper resolução que lhe sejam adjacentes.

No caso presente, devem estar activos não só os layers onde se encontram as malhas de híper e baixa resolução da cabeça mas também o layer onde se encontra o colar.

No painel Bake do contexto Render da janela de propriedades especifique Bake Mode: Ambient Occlusion. Active Normalized. Active Selected to Active. Especifique Distance e Bias do mesmo que o fez para a obtenção do mapa de normais.




Pressione Bake e aguarde a construção do mapa de normais.

O processo poderá ser bastante demorado, dependendo dos recursos disponíveis no seu computador. Para evitar perdas de tempo excessivas com contratempos não expectáveis é boa pática que ensaie a obtenção de um mapa provisório com um pequeno número de amostras especificado no painel Gather do contexto World da janela de propriedades.

Note que a presença do colar é importante para que se obtenha a sua influência no sombreamento.








Na barra da janela UV/Image Editor, salve a imagem com nome AO_Skin_Warrior, Image > Save as Image > ….

Repita os procedimentos para a malha do torso e das mãos, tendo o cuidado de garantir que em cena, para além das malhas em processamentos estão também as malhas adjacentes.

Neste caso, não inclua em cena as malhas das armas, uma vez que serão objectos amovíveis durante a animação, pelo que não queremos a informação permanente da influência da sua presença sobre o sombreamento.

No caso das mãos não se esqueça que o mapa de normais foi obtido com um modificador Subdivision Surface associado à malha da de baixa resolução.

Na barra da janela UV/Image Editor, salve a imagem com nome AO_Skin_Warrior, Image > Save as Image > ….

Vamos agora ver o resultado da aplicação à malha de baixa resolução do mapa de oclusão de ambiente obtido.

Com uma das malhas agora processadas seleccionada, active o contexto Materials da janela de propriedades. Deve estar seleccionado o material Material_Skin. Active em seguida o contexto Textures, seleccione a segunda posição do stack e pressione New.

Especifique Type: Image or Movie e, no painel Image, seleccione a imagem correspondente ao mapa de oclusão de ambiente criado.

Dê um nome sugestivo à textura, por exemplo AO_Skin.










No painel Mapping Seleccione Coordinates: UV.




Obtidos os mapas de normais e de oclusão de ambiente podemos agora duplicar a malha da mão. Seleccione a malha de baixa resolução da mão, associe-lhe um modificador Mirror, e, no painel do modificador, pressione o botão Apply.

Active o modo de sombreamento Texture, [Alt]+[Z], active os layers onde tem as malhas de baixa resolução e as fontes de luz, e observe o resultado da texturização.

A figura em baixo mostra a malha de baixa resolução texturizada com os mapas de normais e o mapa de oclusão de ambiente obtido.





















7.3.2. Props.


Vamos agora criar os mapas de oclusão de ambiente da malha UnwrapMesh_Props. Em resultado dos procedimentos necessários à obtenção do mapa de normais a construção do mapa de oclusão de ambiente é agora trivial.

Seleccione a malha de baixa resolução das calças e entre em modo edição, [Tab]. A partir da barra da janela UV/Image Editor, crie uma nova imagem, com a mesma dimensão do mapa de normais, e designe-a por AO_Props_Warrior. Saia de modo edição.

Seleccione a malha de híper resolução das calças, [RMB], e a malha de baixa resolução das calças, [Shift]+[RMB].

Não esqueça que devem estar activos não só os layers onde se encontram as malhas de híper e baixa resolução das calças mas também os layers onde se encontram as malhas adjacentes (cinto, botas, etc.).

No painel Bake do contexto Render da janela de propriedades especifique Bake Mode: Ambient Occlusion. Active Normalized. Active Selected to Active. Especifique Distance e Bias do mesmo que o fez para a obtenção do mapa de normais.

Pressione Bake e aguarde a construção do mapa de normais.









Na barra da janela UV/Image Editor, salve a imagem com nome AO_Props_Warrior, Image > Save as Image > ….

Repita os procedimentos para as restantes malhas, tendo o cuidado de garantir que em cena, para além das malhas em processamento estão também as malhas adjacentes.

Não esqueça que o mapa de normais das correias das botas foi obtido com uma malha de baixa resolução modificada. Utilize a malha que duplicou na altura, exactamente nas mesmas condições, senão a distorção do modelo não será a mesma.

Não esqueça que o mapa de normais do cinto foi obtido com uma malha de baixa resolução modificada. Utilize a malha que duplicou na altura exactamente nas mesmas condições.

Vamos agora ver o resultado da aplicação à malha de baixa resolução do mapa de oclusão de ambiente obtido.

Com uma das malhas agora processadas seleccionada, active o contexto Materials da janela de propriedades. Deve estar seleccionado o material Material_Props. Active em seguida o contexto Textures, seleccione a segunda posição do stack e pressione New.

Especifique Type: Image or Movie e, no painel Image, seleccione a imagem correspondente ao mapa de oclusão de ambiente criado.

Dê um nome sugestivo à textura, por exemplo AO_Props.









No painel Mapping Seleccione Coordinates: UV.




Obtidos os mapas de normais e de oclusão de ambiente podemos agora duplicar as malhas da bota, calças, etc. Seleccione as malhas de baixa resolução, Associe-lhes um modificador Mirror, e, no painel do modificador, pressione o botão Apply.

Active o modo de sombreamento Texture, [Alt]+[Z], active os layers onde tem as malhas de baixa resolução e as fontes de luz, e observe o resultado da texturização.

A figura em baixo mostra a malha de baixa resolução texturizada com os mapas de normais e os mapas de oclusão de ambiente.


































Caso o sombreamento de algumas das malhas adjacentes lhe pareça indesejado, o que poderá acontecer devido à não exacta justaposição das malhas de baixa resolução às malhas de alta resolução, desactive, no painel Outliner, a renderização das malhas adjacentes em causa, ou, em alternativa, mude as malhas de layer, e crie de novo o mapa de oclusão de ambiente.

Caso considere que as sombras resultantes em algumas das malhas são demasiado intensas, active Falloff no painel Gather do contexto World e especifique convenientemente o parâmetro Strength.


Nas imagens em baixo pode ver à direita o mapa resultante na configuração padrão, em que Falloff está desactivado, e, à esquerda o mapa resultante para Falloff activo com Strength: 2.0.











7.3.3. Weapons.


Por fim, vamos agora criar os mapas de oclusão de ambiente da malha UnwrapMesh _Weapons.

Seleccione a malha de baixa resolução do escudo e entre em modo edição, [Tab]. A partir da barra da janela UV/Image Editor, crie uma nova imagem, com a mesma dimensão do mapa de normais, e designe-a por AO_Weapons_Warrior. Saia de modo edição, [Tab.

Seleccione a malha de híper resolução do escudo, [RMB], e a malha de baixa resolução do escudo, [Shift]+[RMB].

Mude as malhas de híper e baixa resolução da espada de layer ou desactive a sua renderização.

No painel Bake do contexto Render da janela de propriedades especifique Bake Mode: Ambient Occlusion. Active Normalized. Active Selected to Active. Especifique Distance e Bias do mesmo que o fez para a obtenção do mapa de normais.

Pressione Bake e aguarde a construção do mapa de normais.









Na barra da janela UV/Image Editor, salve a imagem com nome AO_Weapons_Warrior, Image > Save as Image > ….

Repita os procedimentos para as restantes malhas do escudo e da espada, tendo o cuidado de garantir que em cena, para além das malhas em processamento estão também as malhas adjacentes.

Na barra da janela UV/Image Editor, salve a imagem com nome AO_Weapons_Warrior, Image > Save as Image > ….



Vamos agora ver o resultado da aplicação à malha de baixa resolução do mapa de oclusão de ambiente obtido.

Com uma das malhas agora processadas seleccionada, active o contexto Materials da janela de propriedades. Deve estar seleccionado o material Material_Weapons. Active em seguida o contexto Textures, seleccione a segunda posição do stack e pressione New.

Especifique Type: Image or Movie e, no painel Image, seleccione a imagem correspondente ao mapa de oclusão de ambiente criado.

Dê um nome sugestivo à textura, por exemplo AO_Weapons.










No painel Mapping Seleccione Coordinates: UV.




Active o modo de sombreamento Texture, [Alt]+[Z], active os layers onde tem as malhas de baixa resolução e as fontes de luz, e observe o resultado da texturização.

Ficam assim completos os 3 mapas de oclusão de ambiente. A figura em baixo mostra a malha de baixa resolução texturizada com os mapas de normais e os mapas de oclusão de ambiente obtidos.