O que você está procurando?
Engine & platform

Melhores práticas da equipe Spotlight: Criando visuais críveis no Unity

RINALDO TJAN / UNITY TECHNOLOGIESContributor
Mar 9, 2018|13 Min
Melhores práticas da equipe Spotlight: Criando visuais críveis no Unity
Esta página da Web foi automaticamente traduzida para sua conveniência. Não podemos garantir a precisão ou a confiabilidade do conteúdo traduzido. Se tiver dúvidas sobre a precisão do conteúdo traduzido, consulte a versão oficial em inglês da página da Web.

Como parte da equipe Spotlight, tenho a sorte de estar envolvido em alguns projetos muito interessantes. A equipe Spotlight da Unity trabalha em jogos junto com nossos clientes e uma parte significativa da minha função é ajudar os desenvolvedores a alcançar a aparência e a qualidade desejadas para seus projetos. Ouço muitas histórias de todos os setores da indústria e consigo identificar problemas comuns enfrentados pelos criadores de conteúdo. Vários dos projetos em que trabalhei tinham como objetivo obter visuais bastante realistas. Considerando o conteúdo artístico do projeto, como podemos criar uma cena no Unity que pareça crível?

Há uma infinidade de tópicos que precisam ser abordados para criar visuais confiáveis. Neste post vou discutir configurações de iluminação e renderização. Mais abaixo no post, também compartilharei nossa cena de exemplo do Spotlight Tunnel e explicarei como você pode usá-la para aprender e experimentar.

Preparando as configurações de renderização do Unity

Entender como os recursos de renderização do Unity podem ser usados para imitar realisticamente o mundo real ajudará você a atingir o objetivo visual do seu projeto.

Modo de renderização linear
Em termos simples, isso configura o Unity para fazer cálculos de iluminação e sombreamento usando matemática fisicamente precisa antes de transformar a saída final no formato que funciona melhor para monitores.

Para especificar um fluxo de trabalho gama ou linear,
vá em Editar > Configurações do Projeto > Player e abra Configurações do Player.
Em seguida, vá para Outras configurações > Renderização e altere o Espaço de cores para Linear.

Definir seu espaço de cores deve ser uma das primeiras decisões em seu projeto, devido ao impacto drástico nos resultados finais de sombreamento e iluminação.

Modo de renderização.
Na cena de amostra do Spotlight Tunnel, usamos o caminho de renderização adiado. Isso permite que os criadores de conteúdo trabalhem com múltiplas luzes dinâmicas de forma eficiente, combinem vários cubemaps de reflexão e tenham a capacidade de usar os recursos de Reflexão de Espaço de Tela existentes no Unity 2017+.

Para definir isso, vá para Configurações gráficas > Caminho de renderização ou Câmera > Caminho de renderização

Você pode encontrar mais informações sobre modos de renderização nesta parte da documentação do Unity.

Câmera de alto alcance dinâmico (HDR).
Ao renderizar uma iluminação crível, assim como na vida real, os criadores de conteúdo lidarão com valores de iluminação e superfícies emissivas que têm brilho maior que 1 (alta faixa dinâmica). Esses valores precisam então ser remapeados para o intervalo de tela adequado (isso é chamado de mapeamento de tons). Essa configuração é crucial para permitir que a câmera Unity processe esses valores altos e não os corte.

Para habilitar isso, selecione a câmera principal na cena e certifique-se de que HDR esteja marcado na aba do inspetor para a câmera selecionada.

Codificação HDR Lightmap. (opcional)
A cena de amostra do Spotlight Tunnel não usou iluminação assada. No entanto, se você estiver planejando trabalhar com iluminação assada de alta intensidade (HDR), recomendamos que você defina a codificação do mapa de luz como mapa de luz HDR para garantir que o resultado da luz assada seja consistente.
A opção pode ser encontrada em Editar > Projeto > Configurações do player > Outras configurações > Codificação do Lightmap (somente Unity 2017.3+).
Informações detalhadas sobre a codificação do Lightmap podem ser encontradas no manual.

Tonemapper para sua cena (parte da pilha de pós-processamento).
Para exibir a iluminação HDR corretamente, um mapeador de tons precisa ser habilitado no projeto.
Certifique-se de instalar primeiro o Unity Post Processing Stack (versão 1) do Asset Store.

Crie um ativo de perfil de pós-processamento no seu projeto e configure-o da seguinte maneira:

  • Habilitar Color Grading > Tonemapper > ACES
    (Padrões de codificação de cores da academia)
  • Habilitar Dithering. O pontilhamento permite que a cena alivie o artefato de faixas introduzido pela saída de 8 bits/canal da cena HDR. Os motores modernos usam essa técnica para contornar a limitação de saída de 16 milhões de cores. Deixe o restante das configurações no tonemapper por enquanto.
  • Selecione a “Câmera Principal” e adicione o componente Comportamento de Pós-Processamento.
  • Atribua o perfil de Pós-processo criado anteriormente ao slot de perfil. Se você quiser usar o Post Processing Stack Versão 2, consulte o arquivo leia-me do pacote, pois ele está atualmente em Beta.
  • Habilitar efeito de imagem para viewport.
    Isso permite que você veja o tonemapper o tempo todo enquanto trabalha com a visualização de cena.
    Observe as melhorias na renderização de realce e na separação de valores do túnel escuro na cena mapeada por tons. Se você observar a cena sem mapeamento de tons, poderá ver como os realces não convergiram para uma cor unificada (o sol amarelado ardente neste caso).

Esta configuração tenta essencialmente replicar como uma câmera digital captura uma cena com uma exposição fixa (sem recursos de adaptação de exposição/adaptação ocular habilitados).

Imagem

Neste ponto, os criadores de conteúdo alcançaram uma configuração de renderização de cena fundamental adequada que deve fornecer resultados confiáveis com uma ampla variedade de conteúdo.

Iluminação e configuração

O Unity atende a muitas estratégias/sistemas de iluminação e cenários de projetos diferentes. Recomendamos que você confira nossa extensa documentação sobre modos de iluminação e configuração para entender todas as diferentes opções.

No entanto, para uma iteração rápida e simples, é necessário um feedback visual responsivo.
Por esse motivo, a cena de amostra do Spotlight Tunnel usa iluminação em tempo real com Realtime Global Illumination (GI). Isso nos dará uma boa gama de resposta especular, boa iluminação de rebatimento e nos permitirá mudar nossas luzes rapidamente.

Iluminação em tempo real com Realtime GI + Light Probe

Imagem
Imagem

Voltando à iluminação em si, uma cena típica, durante o dia, com áreas externas, pode ser dividida em 3 componentes de iluminação:

1) Hemisfério (contribuição do céu).

2) Luzes diretas (Sol + Luzes locais).

3) Iluminação indireta (iluminação GI).

Nesta fase, presume-se que os criadores de conteúdo tenham malhas devidamente texturizadas e uma cena montada.

Iluminação externa e configuração

Iluminação inicial do hemisfério
O primeiro componente para iluminação externa é a iluminação Hemisphere, chamada de Environment Lighting na Unity. Esta é uma palavra chique para claraboia. O céu noturno tem uma contribuição mínima, enquanto o céu diurno tem uma contribuição muito brilhante. As configurações do hemisfério podem ser encontradas na aba Iluminação (Janela > Iluminação > Configurações > Ambiente).
Para começar, o material procedural skybox seria preferível ao cubemap HDRI. Crie um novo material no projeto, nomeie-o SkyMaterial e defina-o como Skybox / Procedural.

Imagem

Atribua-o ao Material do Skybox do ambiente dentro da aba Iluminação > Cena.

Imagem

Neste ponto a cena está um pouco iluminada. Há iluminação ambiente, mas não exatamente adequada ao hemisfério. Vamos deixar isso de lado por enquanto.

Luz direcional
A luz solar ou lunar típica é uma fonte de luz próxima ao infinito e tem direção de luz e sombra paralelas. Eles geralmente são representados por uma luz direcional.

Imagem

Iluminação indireta / Iluminação global.
Luz direcional + ambiente sozinhas não criarão uma iluminação confiável. A iluminação adequada do hemisfério requer a oclusão da iluminação do teto solar. Também precisamos simular a luz do sol refletindo nos objetos da cena. Atualmente, o céu renderiza um único valor de cor para a cena, tornando-a plana. É aqui que a Iluminação Global em Tempo Real ou Iluminação Assada é necessária para calcular a oclusão e a iluminação de rebote indireto. Para conseguir isso, siga estes passos:

  • Certifique-se de que todas as malhas que precisam contribuir para o Realtime GI ou baking estejam sinalizadas com Enable Lightmap Static e Reflection Probe Static. Normalmente, seriam grandes malhas estáticas.
  • Em seguida, ative a Iluminação Global em Tempo Real (deixe nas configurações padrão-médias) na guia Iluminação > Cena > Iluminação em Tempo Real.
  • Clique em Gerar Iluminação ou marque Gerar Automaticamente.
Imagem

Uau, a cena agora está escura depois que a geração de luz terminou. Para piorar a situação, alguns elementos da cena estão fora do lugar - observe o bonde e a porta ao fundo.
Os objetos estáticos na cena atualmente têm oclusão adequada para hemisfério e resposta de salto indireto da luz direcional, no entanto, o restante dos objetos não tem uma configuração de iluminação adequada.

Sondas de luz e sondas de reflexão.
Para que objetos dinâmicos ou objetos sem mapa de luz recebam Iluminação Global em Tempo Real/Assada, é necessário que haja sondas de luz distribuídas na Cena. Certifique-se de distribuir grupos de sondas de luz na cena de forma eficiente, perto das áreas onde objetos iluminados dinamicamente estão localizados ou passarão (como o jogador). Saiba mais sobre o Light Probe Group no manual.
Clique em Gerar Iluminação novamente ou aguarde a conclusão do pré-cálculo se Gerar Automaticamente estiver marcado.

Imagem

O bonde e a porta do fundo estão melhor aterrados, mas os reflexos parecem fora do lugar. O reflexo do céu está por todo lugar e aparece dentro do túnel. É aqui que entram as sondas de reflexão. Posicione sondas de reflexão com eficiência e cobertura adequada na cena, conforme necessário. Na cena acima, uma sonda de reflexão para a sala principal é suficiente e duas para cada interior do túnel.
A resolução de Cubemap de 128 pixels usando projeção de caixa geralmente é uma boa base para casos típicos e manterá os tempos de cozimento de memória e reflexão satisfatórios.
Aqui estão mais informações sobre o Reflection Probe.

Imagem

A cena agora parecia devidamente fundamentada e coesa, uma parte importante de uma cena crível. Mas tudo está ainda mais sombrio do que antes e longe de uma qualidade crível.

Valor de iluminação HDR
Muitos criadores de conteúdo não percebem que, na realidade, a iluminação hemisférica e a luz do sol são fontes de luz muito brilhantes. Eles são muito mais brilhantes que o valor 1. É aqui que a iluminação HDR entra em jogo.

Por enquanto, desligue a luz direcional e defina a Exposição do SkyMaterial para 16.
Isso lhe dará uma boa ideia do que a iluminação hemisférica adequada faz em uma cena.

Imagem

As coisas começam a parecer críveis. Pense nesse estado como um dia nublado, onde a luz do sol está completamente difusa no céu, então não há luz direcional.

Neste ponto, você pode reintroduzir a luz solar na cena com um valor muito mais alto. Experimente a Intensidade 5 para começar. Apesar do sol parecer quase branco, é importante que a cor da luz direcional seja escolhida corretamente, pois o impacto da cor indireta do sol forte pode mudar drasticamente a aparência da cena.

Imagem

Agora o sol (luz direcional) parece uma luz de alta energia, como esperado da vida real. A cena parece bastante crível neste ponto.

Oclusão de ambiente do espaço da tela e reflexão do espaço da tela
Embora a iluminação da cena pareça muito boa neste ponto, há detalhes adicionais que você pode adicionar à cena para melhorá-la. Geralmente não é possível processar oclusões detalhadas devido à resolução limitada definida no Realtime GI para um desempenho razoável. É aqui que a Oclusão de Ambiente do Espaço de Tela pode ajudar. Habilite o SSAO no Perfil de Pós-processamento em Oclusão de ambiente. As configurações para este exemplo são definidas como Intensidade 0,5, Raio 1, Contagem de amostra média com redução de amostragem e Somente ambiente marcado para começar.

Imagem

Embora o SSAO cuide da oclusão extra da iluminação ambiente, a reflexão poderia usar algumas melhorias de precisão além das sondas de reflexão simples.
Os reflexos traçados por raios no espaço da tela podem ajudar a melhorar essa situação. Habilite o Screen Space Reflection no perfil de pós-processamento.

Imagem

Observe que o lado esquerdo da trilha molhada não renderiza mais reflexos brilhantes, pois o SSR fornece à cena reflexos mais precisos para objetos na tela. Ambos os efeitos de pós-processamento geram custos de desempenho em tempo de execução, portanto, habilite-os com sabedoria e defina as configurações de qualidade para se adequarem às suas restrições de desempenho em tempo de execução.

Névoa
Nesta fase, os criadores de conteúdo alcançaram uma separação de valor interno e externo razoavelmente crível em uma exposição fixa. O reflexo é visível em áreas internas escuras como destaques fortes e não como valores opacos e opacos.

Imagem

No entanto, os elementos de primeiro plano e de fundo da cena não estão aparecendo, apesar de terem fortes elementos de perspectiva. Uma névoa sutil na cena pode fazer uma grande diferença, dando dimensão adicional à cena.

Imagem

Observe que o corrimão em primeiro plano tem melhor definição em comparação à cena sem neblina.
A neblina é ativada na aba Iluminação > Cena > Outras configurações. A cor da névoa #6D6B4EFF, Exponencial em densidade de 0,025, está habilitada aqui. Na renderização adiada do Unity 2017, talvez você também precise habilitar a névoa no perfil de pós-processamento, caso ela não seja ativada automaticamente.

Iluminação interna e local

Holofote / Ponto de luz
Os elementos básicos da iluminação local em tempo real são holofotes e holofotes. A iluminação de área só pode ser usada na iluminação de cozimento, a menos que você esteja usando o HD Scriptable Render Pipeline (SRP), introduzido na versão beta 2018.1. Há novas luzes de área que podem ser renderizadas em tempo real no modo HD SRP.

Fundamentalmente, ambos os tipos de luzes emitem luz de um ponto no espaço e são limitados pelo alcance, com o holofote tendo um limite adicional pelo ângulo. Mais informações sobre iluminação estão na seção relevante da documentação do Unity.

As grandes diferenças entre as duas luzes têm a ver com a maneira como elas projetam sombras e interagem com os biscoitos. Sombrear com uma luz pontual custa 6 mapas de sombra, em comparação com o mapa de sombra único de um holofote. Por esse motivo, os pontos de luz que projetam sombras são muito mais caros e devem ser usados com moderação.

OBSERVAÇÃO: As luzes assadas não precisam se preocupar com esse problema.
Outra diferença é que uma textura de cookie em um Spotlight é uma textura 2D simples e direta, enquanto um pointlight requer um cubemap, geralmente criado em software 3D.

Cor e intensidade da luz.
A escolha da cor e intensidade adequadas para suas luzes precisa seguir algumas diretrizes gerais para dar resultados plausíveis.

Ao selecionar a intensidade das luzes internas, tente garantir que nenhuma delas tenha intensidade maior que a do sol. Isso pode criar uma aparência desequilibrada dependendo da cena.

Imagem

Dada essa configuração de cena de amostra, é muito improvável que haja luzes de alta intensidade brilhando no teto que excedam o brilho do horário de verão.

Ao selecionar a cor, tente não deixar nenhum canal de cor completamente de fora. Isso cria uma luz que tem problemas para convergir para o ponto branco.

Imagem

Embora seja tecnicamente uma cor de luz válida, a cor clara na imagem da esquerda remove toda a cor azul do resultado final. Ter uma paleta de cores final limitada na cena como base não é uma boa ideia, especialmente se você quiser fazer a gradação de cores mais tarde.

Superfícies Emissivas
No Unity, superfícies emissivas podem contribuir para a iluminação se o Realtime GI ou o baked GI estiverem habilitados, dando o efeito de iluminação de área. Isso é especialmente útil se o Realtime GI estiver habilitado. Os criadores de conteúdo podem modificar a intensidade e a cor da superfície emissiva e obter o feedback imediatamente, supondo que o pré-cálculo tenha sido feito com antecedência.

Imagem

A imagem acima mostra a iluminação difusa sutil das malhas no teto.

Arquivo de projeto de amostra

A equipe Spotlight da Unity San Francisco criou o Spotlight Tunnel Sample Scene para ajudar os criadores de conteúdo a aprender e experimentar na prática.

Imagem

Obtenha o arquivo de projeto de amostra do Spotlight Tunnel aqui.

Basta extrair o projeto para a pasta e abri-lo usando o Unity.

O Spotlight Tunnel Project foi criado com o Unity 2017.1.0f3.

Abrir este projeto em uma versão mais recente do Unity exigirá a reconstrução da iluminação, pois pode haver incompatibilidade de formato de dados de iluminação entre as versões.

Todos os recursos fornecidos neste projeto só podem ser usados em um projeto desenvolvido com o Unity Engine.

Como mencionado antes, há mais coisas que você precisa saber ao criar visuais críveis. Você pode aprender mais sobre este tópico neste tutorial. Também adicionaremos um Guia de Melhores Práticas completo aos documentos do Unity. Fique atento!

Agora é sua vez de ultrapassar os limites.
Imagem

Espero que este blog ajude os criadores de conteúdo a permanecerem no caminho certo para obter visuais confiáveis no Unity. Mal podemos esperar para ficarmos deslumbrados com todos os criadores de conteúdo do Unity por aí.