Advertisement
  1. 3D & Motion Graphics

Iluminação na Unity 5

Scroll to top
Read Time: 12 min

() translation by (you can also view the original English article)

Final product imageFinal product imageFinal product image
What You'll Be Creating

Unity tornou-se cada vez mais popular entre os programadores de jogos iniciantes. Isto é devido ao fato de que a Unity suporta diretamente uma infinidade de plataformas, tais como celulares, computadores e consoles. Além disso, é livre para usar para desenvolvedores que geram pouca receita ou estúdios.

Unity oferece suporte a várias tecnologias e componentes. Alguns dos componentes-chave são as técnicas de luz e iluminação. Na Unity, você pode iluminar uma cena, simulando o comportamento complexo das luzes ou aplicando um modelo simples de iluminação.

Este tutorial irá focar na explicação de como a luz funciona na Unity 5, propriedades e tipos de iluminação e como usá-los para criar efeitos ricos de iluminação.

Pré-requisitos

Primeiro, certifique-se que você tem a versão mais recente da Unity. Neste tutorial nós estamos usando a versão 5.5.0f3. Certifique-se de que você está usando a versão mais recente da Unity; caso contrário, você pode ter problemas ao seguir o tutorial ou usar as propriedades físicas.

Em seguida, baixe o arquivo LightingInUnity5-Starter. Descompacte e abra o projeto na Unity. A cena Demo deve abrir automaticamente, mas se não, você pode abri-la na pasta Assets.

Iluminação direta e indireta

No mundo real, você tem dois tipos de efeitos de iluminação: luz direta e indireta. Iluminação direta, como o nome sugere, é a luz que vem diretamente de uma fonte de luz (uma lâmpada, o sol ou outro). Por outro lado, a iluminação indireta é a luz que vem de outro objeto.

Vamos testar e implementar ambas.

A luz direta já pode ser vista em ação na sua cena. Como você deve ter notado, você tem uma luz direcional na cena chamada Directional Light.

Luzes direcionais são principalmente utilizadas em cenas ao ar livre para simular a luz do sol e da lua. Elas afetam todas a superfície dos objetos na cena. São também os efeitos que menos custam ao processador gráfico.

Você pode selecionar a Directional Light e exibir suas propriedades no painel Inspector. Você vai notar várias propriedades interessantes tais como Type (tipo), Color (cor) e Intensity (intensidade). Você pode brincar com a cor e as propriedades de rotação e ver o resultado em tempo real. Alterando esses valores, você está lidando diretamente com a luz direcional.

Directional Light Inspector RotationDirectional Light Inspector RotationDirectional Light Inspector Rotation

Neste momento, sua cena 3D não tem nenhuma luz indireta. Você pode verificar isso movendo a esfera mais perto da parede verde ou vermelha. A cor da esfera não vai mudar.

Global Illumination - Sphere surfaceGlobal Illumination - Sphere surfaceGlobal Illumination - Sphere surface

Uma maneira de usar a iluminação indireta é usar objetos estáticos. Tenha em mente que o uso de objetos estáticos no jogo pode melhorar o desempenho na renderização do seu jogo, mas também reduzirá a qualidade, então você deve encontrar o equilíbrio certo.

Adicione um cubo na sua cena (GameObject > 3D Object > Cube) e coloque-o ao lado da esfera. Nomeie o objeto como Cubo.

Global Illumination - Box meshGlobal Illumination - Box meshGlobal Illumination - Box mesh

Selecione o cubo e dentro do Inspetor habilite a propriedade Static (estático).

Global Illumination - Cube Inspector PropertiesGlobal Illumination - Cube Inspector PropertiesGlobal Illumination - Cube Inspector Properties

Quando você habilitar a propriedade Static, A Unity automaticamente cria um mapa de luz para esse objeto e aplica o modelo de iluminação correto. Agora você pode mover a câmera para o cubo e ver a iluminação indireta funcionando. O verde (na imagem) ou a cor vermelha agora está se espalhando pelo cubo.

Global Illumination - Light map with shadowsGlobal Illumination - Light map with shadowsGlobal Illumination - Light map with shadows

Se você alterar a direção da luz direcional, você observará que a Unity automaticamente atualiza os mapas de luz também.

A iluminação indireta que está sendo aplicada ao cubo não é aplicada à esfera porque a esfera não é estática. Você pode resolver isto fazendo a esfera estática (Inspector > Static).

Neste momento, você pode adicionar e configurar a iluminação direta e indireta para objetos estáticos. No entanto, as cenas 3D são compostas de objetos dinâmicos. Portanto, como podemos aplicar tais efeitos a esses objetos? Essa pergunta leva-nos para a próxima seção.

Sondas de luz

Quando sua cena contém objetos não-estáticos, você precisa usar técnicas de iluminação específicas para iluminá-los corretamente para que eles não pareçam desconectados da cena.

Através do uso e posicionamento de sondas de luz, pode-se iluminar pontos estratégicos na cena. Cada sonda de luz pode conhecer uma região específica e então calcular a iluminação naquela região específica. Este cálculo é rápido o suficiente para ser usado durante o jogo. A utilização de sondas de luz evita qualquer desconexão entre a luz mapeada de objetos móveis e estáticos na cena.

A esfera é um objeto dinâmico, portanto, e ao contrário do que possa parecer, ela não está corretamente iluminada. Se você desligar a luz direcional, você observará que a unica luz que afeta a esfera é a luz ambiente. Para iluminar corretamente a esfera, você precisa usar sondas de luz.

Para adicionar sondas de luz em uma área de sua cena, vá ao menu Component > Rendering > Light Probe Group. Isto irá criar um grupo de sonda de luz em sua cena.

Light Probes - Light probe groupLight Probes - Light probe groupLight Probes - Light probe group

O próximo passo é colocar os pontos do grupo na posição correta. Você terá que colocá-los perto dos cantos da caixa.

A melhor maneira de fazer isso é para alterar para uma visão ortográfica (clicando sobre o cubo no canto superior direito da cena). Em seguida, selecione nó de luz e arraste-o para cada canto do quadrado (semelhante à imagem seguinte).

Light Probes - Side selectionLight Probes - Side selectionLight Probes - Side selection

Repita o processo até você tenha posicionado todos os pontos.

Light Probes - ProcedureLight Probes - ProcedureLight Probes - Procedure

Há cenas que exigem testes adicionais para iluminar corretamente os objetos. Para adicionar mais sondas, você pode selecionar uma sonda e no menu Inspector, clique no botão Duplicated Selected.

Light Probes - Light Probe GroupLight Probes - Light Probe GroupLight Probes - Light Probe Group

Após a duplicação, você precisa colocar o novo nó no lugar certo (a cópia vai ser criada na mesma posição do original).

Light Probes - Probes positioningLight Probes - Probes positioningLight Probes - Probes positioning

Se você olhar com atenção para a interface Inspector, você vai notar que você pode também adicionar sondas individuais (Add Probe), excluir (Delete Selected) sondas ou selecionar todas as sondas do grupo (Select All).

Para ver as sondas de luz em ação, selecione a esfera e adicione um corpo rígido a ele (Add Component > Rigidbody). Em seguida, atribua um material para o colisor. Você pode usar o material padrão.

Light Probes - RigidBodyLight Probes - RigidBodyLight Probes - RigidBody

Agora, coloque a esfera perto do topo do quadrado e pressione Play. Agora você pode ver a iluminação adequada da esfera. Para ver as diferenças, desabilite as sondas de luz e jogue a cena novamente.

Light Probes - Testing the light probesLight Probes - Testing the light probesLight Probes - Testing the light probes

Ponto de luz

Pontos de luz é a luz mais comum em jogos. Geralmente são usados para explosões e lâmpadas. Como eles emitem luz em todas as direções, Há um custo médio no processador gráfico. No entanto, cálculo de sombras usando pontos de luz custam mais processamento.

Adicione um ponto de luz selecionando GameObject > Light > Point Light. Em seguida, posicione o ponto de luz dentro da caixa perto do topo.

Point light - light positioningPoint light - light positioningPoint light - light positioning

Selecione o ponto de luz e dê uma olhada os parâmetros no Inspector.

Point light - Inspector parametersPoint light - Inspector parametersPoint light - Inspector parameters

O primeiro parâmetro é o tipo. Aqui você pode definir o tipo de luz que você deseja usar. Você pode Spot, Directional, Point ou Area. Cada um fornece um efeito de luz específico. Você pode selecionar qualquer uma das opções e ver os resultados em tempo real. No entanto, para este tutorial, você usará a opção Point. Isto irá criar um efeito de luz de lâmpada (luz que brilha igualmente em todas as direções).

O segundo parâmetro é o Baking. Você pode definir isso em Realtime, Baked ou Mixed. Deixe com o valor padrão. O parâmetro Range define até onde a luz é emitida a partir do centro do ponto de luz. O parâmetro Color define a cor da luz emitida.

Intensity define a intensidade do brilho da luz e Bounce define o multiplicador de intensidade de luz indireta. O tipo de sombra define as propriedades de sombra e tipos de sombra. Você pode definir isso No Shadows, Hard Shadows ou Soft Shadows. Lembre-se que as sombras do ponto de luz são mais caras para o processamento, tenha cuidado ao selecionar esta opção.

Se você selecionar Hard Shadows ou Soft Shadows, você verá a sombra produzida pela esfera e o ponto de luz. Quando você alterar o valor de força, a sombra também atenuará ou acentuará. A Resolução permite que você defina o nível de detalhe das sombras. Finalmente, Bias e Normal Bias permitem que você configure o deslocamento utilizado ao comparar a posição de pixel no espaço de luz com o valor do mapa de sombra.

O Cookie é um parâmetro opcional que representa um canal alfa de textura usado como uma máscara que determina o brilho da luz  em posições diferentes. Já que este é um ponto de luz, a textura usada deve ser um Cubemap.

A opção Draw Halo renderiza somente uma auréola em volta da fonte de luz. Flare é um feixe de luz que será renderizado na posição da luz. Flare e Draw Halo podem ser úteis no debug de uma cena 3D para identificar possíveis gargalos

Render Mode define quão importante é a iluminação quando se está renderizando a cena. E mais importante, quanto mais intenso o processamento será. O Render Mode pode ser definido como Auto, Important ou Non-Important. Finalmente, Culling Mask é usado para selecionar ou excluir grupos de objetos que são afetados pelo ponto de luz.

Agora que você já viu todas as propriedades de um ponto de luz, vamos falar sobre a iluminação direta e indireta quando se pontos de luz. Quando você cria um jogo, uma das principais características é o uso de efeitos de luz e iluminação. No entanto, um cenário com iluminação pesada levará tempo para ser carregado, travamentos, queda de FPS e mais trabalho para o processador. Portanto, é aconselhável que se façam testes com as propriedades Shadow Type e Baking para equilibrar o desempenho na cena.

Por exemplo, se você ajustar o Baking para Realtime e Shadow Type para Hard Shadows ou Soft Shadows, você terá um efeito de sombra muito agradável, realista entre a esfera e a caixa. No entanto, esta configuração pode ser pesada para a CPU, caso sua cena seja composta de muitas luzes.

Como resolver essa questão? Inicialmente, você pode definir o parâmetro de Baking para Bake. Uma vez que você fizer isso, a Unity criará automaticamente lightmaps para esta luz, dando-lhe um aumento de desempenho. No entanto, este aumento de desempenho tem seu custo: agora você não tem sombras sendo projetadas pelo ponto de luz em objetos dinâmicos, como a esfera.

A melhor prática é analisar cada uma delas individualmente e em seguida proceder em conformidade. Por exemplo, nesta cena faria mais sentido ter Realtime Baking e Hard Shadows, porque apenas uma fonte de luz está presente dentro da caixa.

Contudo, se sua fonte de luz é uma tocha em uma parede, seria melhor definir o Baking para Bake e deixar que a Unity produza o lightmaps.

Lembre-se que cabe ao desenvolvedor gerenciar a qualidade e o desempenho do jogo. Portanto, tenha em mente que você tem que ter cuidado em manter esse equilíbrio, especialmente se você estiver desenvolvendo para dispositivos móveis.

Luz projetada

Spot lights (projetor de luz) é uma fonte que projeta luz para uma região específica. Elas apenas iluminarão objetos dentro de uma região específica, uma região delimitada por um cone 3D. Basicamente, funciona como os faróis de um carro. Como você pode imaginar, isso é perfeito para lanternas, faróis dos carros ou postes de luz. Esse é também o tipo de luz mais pesada para o processador gráfico.

Vamos então transformar um ponto de luz em projetor de luz. Selecione o ponto de luz que você criou anteriormente e altere a propriedade Type para Spot. Em seguida, gire a luz que ilumina o chão da caixa. Renomeie-a para Spot Light.

Spot light configurationSpot light configurationSpot light configuration

Como você deve ter notado, dentro o Inspetor, os parâmetros de de um projetor são muito similares aos de um ponto. No entanto, você tem uma nova propriedade chama Spot Angle (ângulo de projeção).

Spot light Inspector propertiesSpot light Inspector propertiesSpot light Inspector properties

O Spot Angle determina o ângulo do cone de luz em graus.

A respeito de iluminação direta e indireta, projetores de luz funcionam exatamente como pontos de luz. Você tem as mesmas limitações e vantagens. Portanto, você tem que ter cuidado ao configurar o equilíbrio de luzes em seu jogo.

Observe que você pode sempre brincas com sombras para equilibrar a aparência e desempenho.

Área de luz

Uma área de luz é a luz emitida em todas as direções em um lado de uma área retangular de um plano. Este retângulo é definido nas propriedades de largura e altura. As luzes em área estão disponíveis apenas durante a criação do mapa de luz, o que significa que elas não têm efeito em objetos em tempo de execução.

Selecione o Spot light e altere seu Type para Area e o seu nome para Area light. Em seguida, posicione a luz dentro de sua caixa e no Inspetor, alterar a largura e a altura, a fim de cobrir toda a área dentro da caixa.

Area light positioningArea light positioningArea light positioning

Olhando para os parâmetros de uma Área de luz, você vai notar que a maioria dos parâmetros são semelhantes aos anteriores, por exemplo Type, Draw Halo, Flare, Render Mode e Culling Mask.

Os novos parâmetros são a largura e a altura. Ambos são usados para definir o tamanho do retângulo da área de luz.

Area light Inspector propertiesArea light Inspector propertiesArea light Inspector properties

Se você apertar o Play, você verá que a luz de área está lançando sua luz sobre todos os objetos dentro de sua escala. O tamanho do retângulo é determinado pelas propriedades de largura e altura. O lado em que está sendo projetada a luz normal do plano, é o mesmo da direção do lado positivo do eixo Z da luz. A luz é emitida em toda a superfície do retângulo. Devido a isso, o sombreamento do objeto afetado tende a ser muito mais suave do que luzes direcionais ou pontos de luz.

Os cálculos de iluminação de uma área de luz são bastante intensos em processamento, então eles não estão disponíveis em tempo de execução e só podem ser obtidos em mapas de luz.

Conclusões

Isto conclui o tutorial sobre iluminação na Unity 5. Você aprendeu sobre várias configurações e efeitos de iluminação. Com esse conhecimento, você pode agora aplicar vários efeitos de iluminação em seu jogo ou aplicativo.

Unity tem uma comunidade ativa. Existem muitos outros produtores que podem te ajudar a construir seu projeto. A  plataforma é também uma ótima opção para que você possa aprimorar suas habilidades. Seja qual for o caso, você pode ver tudo o que temos disponível no Envato.

Se você tiver mais perguntas ou comentários, como sempre, sinta-se livre para escrever alguma coisa na seção de comentários.

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new 3D & Motion Graphics tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.