Pesquisar Unity

Compartilhar

Is this article helpful for you?

Thank you for your feedback!

Durante o desenvolvimento da Unity 5, utilizamos internamente o projeto Viking Village para testes dos workflows de shading e iluminação.

Se você está utilizando a versão beta da Unity 5, você pode baixar o projeto Viking Villa da Asset Store

Este conteúdo é hospedado por um provedor terceirizado que não permite exibições de vídeo sem que os Targeting Cookies sejam aceitos. Defina as preferências com relação aos Targeting Cookies para “sim” se desejar visualizar vídeos desses provedores.

Criando um ambiente de testes

Para garantir que as configurações de shader e texturas estão se comportando corretamente, recomendamos que você utilize uma cena simples com diversas configurações de iluminação. Isto é, com diferentes skyboxes, luzes, etc. - qualquer coisa que contribua para a iluminação do seu modelo.

Quando você abrir a Unity 5, você irá notar que as novas cenas já tem um céu procedural, além de configurações padrão de ambiente e reflexão. Esse já é um ponto de partida ideal.

lightcond5fr640x480loop.1

Para nosso ambiente de testes utilizamos:

  • HDR camera rendering

  • Alguns reflection probes (para reflexões localizadas em objetos)

  • Um grupo de light probes

  • Um conjuntos de texturas e materiais de céu, além do céu procedural. O céu que vem incluso no projeto Viking Village foi criado especificamente para a Unity por Bob Groothius, criador do Dutch Skies 360.

  • Luzes direcionais "off-white" com intesidade e HDR iguais a cor do céu.

Ajustando as texturas panorâmicas do céu

A maioria das texturas do céu incluem o sol (além de flares, etc.), portanto, a luz do sol é refletida por superfícies. Potencialmente, isso pode causar três problemas:

1) A Directional Light que você está utlizando para representar o sol precisa ter exatamente a mesma direção do sol pintado no skybox ou então haverão múltiplos "hotspots" especulares no material.

2) O reflexo do sol e o "specular hotspot" se sobrepõem, causando uma iluminação especular intensa.

3) O reflexo do sol é "baked" na superfície e portanto não sofre oclusão quando a superfície está na sombra.

image11

O sol foi apagado da textura do céu e re-adicionado utilizando uma Directional Light e lens flare.

Como resultado, a iluminação do sol, flares, raios solares e os valores de HDR devem ser removidos da textura do céu e recriados usando Directional Light.

Editando materiais que utilizam physically-based shading

Para evitar o trabalho de adivinhação necessário para emular materiais do mundo real, é útil seguir uma referência conhecida. O Standard Shader da Unity 5 suporta tanto Specular Color quanto Metallic workflow. Ambos definem a cor dos reflexos que saem da superfície. No Specular workflow, a cor é especificada diretamente, já no Metallic workflow a cor é derivada de uma combinação da cor e do valor do parâmetro "metallic" configurado no Standard Shader.

Para o projeto Viking Village, utilizamos o Specular Color Workflow do Standard Shader. Nossa cena de calibragem, que pode ser baixada da Asset Store, inclue algumas tabelas de calibragem úteis. Nós referenciamos as tabelas regularmente quando criamos nossos materiais.

Ao criar materiais voce pode escolher entre o que chamamos de Specular ou Metallic workflows, cada um com seus conjuntos de configurações e tabela de referência. No Specular workflow voce escolhe diretamente a cor da luz especular refletida, no Metallic workflow você configura se o material irá se comportar como um metal quando iluminado.

A tabela de valores especulares:

UnitySpecularChart

A tabela de valores metálicos:

UnityMetallicChart

Escolher entre os workflows Specular ou Metallic é, em boa parte, uma questão de gosto pessoal, você pode normalmente conseguir o mesmo resultado independente do workflow escolhido

Além das tabelas e valores, coletar amostras de superfícies do mundo real é muito útil. Ajuda bastante encontrar o tipo de superfície que você está tentando imitar e tentar entender como esse material reage a luz.

Configurando o material

No começo, normalmente é útil criar uma representação simples porém configurável dos materiais usando cores, valores e sliders derivados das tabelas. Depois você pode aplicar texturas mantendo o material original como referência para confirmar que as características foram preservadas.

materialcompare_refl.1

Linha superior: Sem texturas. Linha inferior: Com texturas. Da esquerda para a direita: Pedra, Madeira, Osso, metal

A processo tradicional de criação de texturas

A processo tradicional de criação de texturas

 Texturas no projeto Viking Village foram criadas usando tanto métodos tradicionais manuais (fotos + ajustes) quanto usando imagens difusa e albedo, além de normal map, specular map e gloss map, todos fornecidos pela  Quixel.

Cuidado ao adicionar detalhes nos canais de textura do material. Por exemplo, normalmente é melhor evitar colocar iluminação (Ambient Occlusion, sombras, etc.) nas suas texturas: Lembre-se que o physically-based rendering provê toda a iluminação que você precisa.

Fotografias retocadas são mais difíceis de usar que informação escaneada, especialmente em relação a physically-based shading. Há ferramentas que lhe ajudam nesse processo, como o Quixel Suite e o Allegorithmic Substance Painter.

Dados escaneados

Texturas escaneadas calibradas para Physically-Based Shading diminuem a necessidade de edição, já que os dados já estão separados em canais e contem valores para albedo, specular e smoothness. O ideal é que o software que fornece os dados calibrados para Physically-Based Shading contenha um perfil de exportação específico da Unity. Você pode sempre utilizar as tabelas de referência para verificação e como um guia caso você precise calibrar os valores usando outra ferramenta, como Photoshop.

Exemplos de materiais

A cena do projeto Viking Village oferece uma grande quantidade de conteúdo enquanto mantém o consumo de memória com texturas numa quantidade razoável. Vejamos como um guindates de madeira de 10 metros de altura foi criado.

Repare que várias texturas, especialmente specular e diffuse, são homogêneas e exigem resoluções diferentes.

image10Exemplo 1: O guindaste tem dois materiais: Dois diffuse, um specular-smoothness, dois occulsion e duas detailed textures.

image06Exemplo 2: O escudo tem um material: Um diffuse, um specular-smoothness, um occlusion e zero detailed textures.

Screen Shot 2015-02-17 at 17.12.23Os dois primeiros Inspectors da esquerda são do guindaste, o da direita é do escudo.

  • Textura Albedo: No specular workflow essa textura representa a cor da luz difusa que reflete da superfície, não é necessário que seja altamente detalhada como visto na imagem da esquerda (guindaste), enquanto na textura da direita (escudo) a textura inclui detalhes únicos.

vv albedo textureEsquerda: Diffuse Map do guindaste, com cores e intensidade normais de madeira. Contém uma quantidade pequena de detalhes. Direita: Diffuse map do escudo com maior (ppi) quantidade de detalhes únicos.
image09Valor Diffuse (sem textura) do material do guindaste

  • Specular: Não metais são comparativamente mais escuros e na escala de cinza enquanto metais são mais brilhantes e podem ser coloridos (lembre-se que ferrugem, óleo e sujeira num metal NÃO são metálicos). Specular para a superfície de madeira não se beneficia muito de uma textura specular, então apenas é configurado um valor ao invés de incluir um specular map.

image07Valor Specular da madeira do guindaste.

Screen Shot 2015-02-17 at 17.40.23Esquerda: Specular map mostrando o metal do guindaste (não usando o metallic shader). Direita: Specular texture do escudo.

  •  Smoothness é um elemento chave dos materiais que usam o Physically-Based Shading. Ele contribui com variações, imperfeições e detalhes a superfície, ajudando a representar seu estado e sua idade. Para o guindaste, o valor de smoothness é bastante constante em toda a superfície, portanto utilizamos somente um valor, o que ajuda bastante no consumo de memória.

image05Valor de Smoothness para o guindaste. Não foi necessária uma textura!

Screen Shot 2015-02-17 at 17.51.13Esquerda: Smoothness map para o metal do guindaste (não usando o metallic shader). Direita: Smoothness map do escudo, contendo as superfícies de metal e madeira.

  • Occlusion indica quão expostos a luz do ambiente estão pontos diferentes da superfície. Ambient Occlusion (AO) ressalta detalhes e profundidade da superfície eliminando iluminação ambiente e reflexo de áreas que recebem pouca luz indireta. É importante lembrar que é possível usar também Screen Space Ambient Occlusion (SSAO) em sua cena. Usando SSAO e AO pode tornar certas áreas muito escuras, nesse caso é melhor usar o AO como um cavity map. Um AO map que destaca rachaduras e dobras pode ser a melhor opção se o jogo usa SSAO e/ou AO lightmapped.

image01

1 Lightmapped AO, 2: Occlusion texture, 3: Occlusion in Diffuse, 4: Image effect SSAO

Texturas secundárias e resolução

Texturas secundárias podem ser utilizadas para aumentar o nível de detalhe ou trazer variação dentro do material. Elas podem utilizar a propriedade Detail Mask para configuração.

Devido a baixa resolução da textura primária de madeira do guindaste, a textura secundária é crucial pois adiciona os detalhes a superfície final. Nesse caso, os detail-maps são tiled, em uma resolução baixa e são repetidos em diversas outras superfícies de madeira, causando uma economia crucial de memória com texturas.

image20Secondary albedo e normal maps compensam a baixa resolução das texturas main diffuse e normal map. Ambas texturas diminuem o consumo de memória com texturas por serem utilizadas em todas as superfícies de madeira da cena. Cuidado ao fornecer informação de iluminação para um diffuse detail map, pois o efeito é similar a adicionar esta informação ao primary diffuse.

image16Superfície de madeira do guindaste com (esquerda) e sem (direita) secondary texture maps.

Estes workflows certamente ajudaram na criação do projeto Viking Village. Esperamos que eles também sejam úteis a vocês, e queremos saber sua opinião!

Agradecimentos

O projeto Viking Village foi criado em parceria com a equipe de criação da Quixel, desenvolvedora de captura de superfícies em HDR e da Quixel Megascans, uma biblioteca de texturas prontas para o uso de Physically-Based Shading.

Muito obrigado aos extremamente talentosos Emmanuel "Manu" Tavares e Plamen "Paco" Tamney por criar esta cena.

Baixe o projeto na Asset Store. Tenha em mente que o projeto é otimizado para a Unity 5.0.0 RC2. Clientes que fizeram a pré-compra e assinantes já podem baixar a versão beta da Unity aqui, para Mac e Windows.

18 de fevereiro de 2015 em Engine & platform | 8 mín. ler

Is this article helpful for you?

Thank you for your feedback!