Capítulo 21 Fonte de Luz da Unidade

As fontes de luz são uma parte essencial de cada cena. Além de iluminar a cena, as fontes de luz também podem produzir efeitos de sombra.

Existem quatro tipos de fontes de luz no Unity :

1. Luz direcional: A luz direcional é usada para simular a luz solar. A luz direcional pode brilhar em qualquer lugar.

2. Fonte de luz pontual: A luz pontual é usada para simular o efeito de iluminação de uma lâmpada.

3. Spot Light: Spot Light é usado para simular o efeito da iluminação do holofote.

4. Luz de área: A luz de área é inválida no modo "iluminação em tempo real" e só é usada no modo "iluminação integrada".

Na cena padrão, uma Luz Direcional será automaticamente adicionada a nós, o que equivale a um sol.

Podemos selecionar a fonte de luz para visualizar sua visualização do Inspetor. O componente mais importante do objeto do jogo da fonte de luz é o componente Luz. A captura de tela é a seguinte

A seguir, vamos explicar brevemente algumas propriedades do componente Light:

Tipo: O tipo de fonte de luz atual. Os valores opcionais são Direcional, Ponto, Ponto e Área.

Cor: Use o seletor de cores para definir a cor do brilho.

Modo: especifica o modo da fonte de luz. Os modos disponíveis são Realtime, Mixed e Baked.

Intensidade: Defina o brilho da fonte de luz.

Multiplicador Indireto: Use este valor para variar a intensidade da luz indireta.

Se for um Spot Spot (a propriedade Type do componente Light é Spot), o efeito é o seguinte:

Este tipo de fonte de luz é semelhante a um cone. Possui duas propriedades próprias: "Alcance" e "Ângulo do ponto". A primeira representa a distância da irradiação da luz e a última representa o ângulo de abertura e fechamento do cone, que é o alcance da irradiação da luz. Do seguinte modo:

Se for uma fonte de luz pontual (a propriedade Type do componente Light é Point), o efeito é o seguinte:

Este tipo de fonte de luz possui a propriedade “Range”, que representa a distância que a luz brilha, que é o raio da esfera.

O último é Area light, o efeito é o seguinte:

Este tipo de fonte de luz é definido por um retângulo no espaço. A luz é emitida uniformemente em todas as direções sobre a superfície, mas apenas na face do retângulo. Não há controle manual sobre o alcance de uma luz de área, mas a intensidade diminuirá inversamente ao quadrado da distância à medida que você se afasta da fonte de luz. Como os cálculos de iluminação consomem muito desempenho, as fontes de luz da área não podem ser processadas em tempo real e só podem ser incorporadas em mapas de luz.

As fontes de luz são muito fáceis de usar no Unity. As fontes de luz podem ser adicionadas à cena através da barra de menu GameObject > Light. Se você ativar a iluminação da vista de cena (botão Sol na barra de ferramentas), poderá visualizar os efeitos de iluminação à medida que move o objeto de luz e define seus parâmetros. O que precisa ser observado aqui é que a luz direcional geralmente pode ser colocada em qualquer lugar da cena, iluminando toda a cena ao longo da direção positiva de seu próprio eixo Z. Não há limite para o alcance de irradiação, portanto a luz direcional não tem nada tem a ver com a posição, mas tem algo a ver com sua própria rotação (afeta diretamente a posição da sombra de um objeto). O holofote tem posição e direção, mas seu alcance de irradiação é limitado. As fontes de luz pontuais são semelhantes aos holofotes. Ambas são fontes de luz locais e são usadas principalmente para processar efeitos de luz e sombra em alguns detalhes locais da cena.

Existem muitas técnicas para usar fontes de luz. Por exemplo, se uma fonte de luz deve ser usada na cena do jogo, mas você não deseja que alguns objetos do jogo sejam afetados pela fonte de luz. Podemos criar uma camada e adicionar esses objetos de jogo à camada. Encontre o atributo Culling Mask no painel de inspeção da fonte de luz e selecione a camada na lista suspensa. Então todos os objetos do jogo nesta camada não serão mais afetados pela fonte de luz.

Em relação à fonte de luz, não ignore a "luz ambiente". É uma verdadeira iluminação global que pode iluminar objetos do jogo de todas as direções. Em outras palavras, não produzirá efeitos de sombra. Podemos encontrar as configurações de luz ambiente na janela Iluminação, que por padrão vem do mapa de materiais da skybox (a essência da luz é a cor). Abra a barra de menu “Janela” -> “Renderização” -> “Iluminação”, clique e selecione “Ambiente” na nova janela que aparecer.

Iluminação Ambiental Este item fornece iluminação ambiente para objetos. A fonte de cor pode ser o sombreador Skybox definido acima, que pode ser uma cor fixa ou gradiente. Os jogos 2D geralmente não requerem nenhuma fonte de luz, apenas a luz ambiente precisa ser definida. A propósito, vamos falar sobre Reflexões do Ambiente abaixo. Este item controla as configurações de reflexão da luz do ambiente. Ele também é derivado da bola de material Skybox skybox. Ele fornece um efeito de reflexão especular e é um efeito de iluminação importante na renderização baseada em física (PBR ). Em outras palavras, se há um espelho na cena, o que aparece no espelho é o camarote. No entanto, se esse espelho estiver em uma sala, não seria razoável que o espelho se parecesse com uma caixa celeste. Unity fornece tecnologia Reflection Probe para capturar imagens da cena circundante e armazená-las como mapas de cubos. O espelho da sala pode exibir a cena circundante através de uma sonda de reflexão. Isto é, quando um objeto está dentro do alcance da sonda de reflexão, o objeto refletirá a informação ambiental dentro do alcance da sonda de reflexão. Quando não há sonda de reflexão na cena, os objetos com reflexão na cena refletirão diretamente as informações ambientais geradas pelo camarote.

Aqui, continuarei apresentando a sky box. Como apresentamos no curso DirectX, ele simula o céu no mundo real. O skybox mais simples é apenas um mapa cúbico. O camarote no Unity é essencialmente uma bola material. Podemos baixar alguns camarotes gratuitos da Unity Asset Store, como o abaixo.

Após o download, podemos importá-lo para o projeto atual, conforme mostrado abaixo

 

Entre eles, existem muitos shaders de skybox no diretório "Materiais", e "Cenas" é uma cena que nos foi fornecida. Podemos clicar em “Cenas” para dar uma olhada.

Clique duas vezes no arquivo de cena "Demo.unity", conforme mostrado abaixo

O efeito após a corrida é o seguinte

A seguir, voltamos ao diretório "Materiais" para visualizar

A imagem acima mostra muitos shaders de skybox, e sua essência é apenas um mapa. Como usar esses shaders skybox? Voltamos à cena padrão anterior, clique na barra de menu: Janela > Renderização > Iluminação e selecione o painel de opções Ambiente, conforme mostrado abaixo

Tudo o que precisamos fazer é arrastar nosso shader para a caixa vermelha acima.

Nossa cena anterior ficou assim, que é a skybox padrão (Default-Skybox).

Como fica depois de alterá-lo para "FS000_Day_01"

A seguir, apresentamos o mapa de luz ( LightMap ) . O que todos precisam entender é que o cálculo dos efeitos de iluminação consome muito desempenho do hardware. Se tivermos que realizar cálculos de iluminação em todos os objetos do jogo o tempo todo para obter seus efeitos de desempenho, obviamente este não é o melhor caminho. Portanto, podemos " preparar " as informações de iluminação no mapa com antecedência. Após a execução do jogo, não realizamos mais cálculos de iluminação em tempo real, mas obtemos diretamente as informações do mapa de luz do objeto para obter o mesmo desempenho de antes. O mecanismo Unity nos fornece uma poderosa função de mapa de luz, permitindo que os artistas criem mapas de luz de maneira conveniente no editor Unity. Porém, a desvantagem é que esses mapas de luz só podem ser aplicados a objetos estáticos ( estáticos ) , ou seja, objetos que não podem se mover, e o efeito de desempenho é fixo, o que deve ser fácil de entender para todos. Ao introduzir o modo de fonte de luz acima, os modos disponíveis são Realtime, Mixed e Baked. Tempo real é iluminação em tempo real, Baked é iluminação cozida e Misto é uma combinação de ambos (o padrão). Com base nos nomes, podemos entender aproximadamente o uso desses três modos. Iluminação consolidada significa que o mapa de luz será consolidado com base na fonte de luz. Depois que o mapa de luz for gerado, a fonte de luz consolidada não poderá mais ser usada e os objetos estáticos na cena ainda serão o efeito de iluminação anterior, mas os objetos dinâmicos não têm efeito de iluminação e, se você mover um objeto estático, a sombra do objeto estático não se moverá com ele. Deste ponto de vista, embora a iluminação integrada reduza o desempenho da computação, ela não pode atender aos requisitos de efeito de iluminação de objetos dinâmicos. Então, como resolver esse problema? Na verdade, é o modo Misto, que pode não apenas garantir o efeito do mapa de luz de objetos estáticos, mas também garantir o efeito de iluminação em tempo real de objetos dinâmicos.

A seguir apresentaremos dois conceitos: iluminação direta e iluminação indireta.

Iluminação Direta: As informações de iluminação geradas pela fonte de luz que brilha diretamente na superfície do objeto.

Iluminação indireta (Iluminação indireta): A informação de iluminação formada pela fonte de luz brilhando na superfície do objeto e depois refletindo para outros objetos. A iluminação indireta torna nossa cena mais realista porque está mais alinhada com as condições reais de iluminação em nosso mundo real. É como colocar um espelho próximo a um objeto: a iluminação indireta do espelho certamente produzirá um efeito de iluminação no objeto. No entanto, a implementação da iluminação indireta requer hardware que suporte ray tracing em tempo real, como as placas gráficas da série RTX da Nvidia. Portanto, em PCs de baixo custo e na maioria dos telefones celulares, temos que contar com mapas de luz pré-computados para fornecer essas informações de iluminação indireta. É isso mesmo, os mapas de luz podem armazenar informações de iluminação direta e indireta. No Unity, a fonte de luz controla principalmente a iluminação direta, e a janela Iluminação controla principalmente a iluminação indireta.

A seguir, apresentamos outro conceito: o sistema de iluminação global (aproximadamente igual ao cozimento)

Os sistemas de iluminação global são um conjunto de técnicas para modelar iluminação direta e indireta para fornecer efeitos de iluminação realistas. O Unity possui dois sistemas de iluminação global: Baked Global Illumination e Realtime Global Illumination. O sistema de iluminação global cozido inclui mapas de luz, sondas de luz e sondas de reflexão. Todos os pipelines de renderização suportam sistemas de iluminação global preparados. O sistema de iluminação global em tempo real inclui iluminação global em tempo real usando o Enlighten, com funcionalidades adicionais adicionadas para sondas de luz. Observe que o Enlighten está obsoleto e o sistema de iluminação global em tempo real será removido do Unity em breve. Parece que a iluminação global do Unity é usada principalmente para criar mapas de luz. Então, deixe-me apresentar o sistema de iluminação global preparado do Unity, que precisa ser definido na janela Iluminação. Abrimos a janela Iluminação através da barra de menu Janela -> Renderização -> Iluminação, e a seguir clicamos para selecionar a opção "Cena"

Por padrão, não há configuração de iluminação, precisamos clicar em "Novas configurações de iluminação" para gerar uma

Ao mesmo tempo, no painel Projeto também será gerado um arquivo de configuração de iluminação com o mesmo nome.

Voltamos à aba “Cena” e existem duas opções: “Iluminação em tempo real” e “Iluminação mista”. Eles representam iluminação global cozida e iluminação global em tempo real, respectivamente. Pela captura de tela, podemos ver que o sistema de iluminação global em tempo real foi descartado, e o que resta é o sistema de iluminação global cozido, que está na opção “ Iluminação Mista ”. Por que fonte de luz mista? O modo de fonte de luz padrão do Unity é fonte de luz mista, que suporta iluminação e cozimento em tempo real, e também suporta tecnologia de iluminação global (uma mistura de iluminação direta + iluminação indireta) durante o cozimento. Porque, como mencionamos acima, o cozimento de fontes de luz reduz os cálculos de desempenho, mas não pode resolver as necessidades de iluminação de objetos dinâmicos. Portanto, objetos dinâmicos requerem fontes de luz em tempo real para serem resolvidos. Se houver fontes de luz cozidas e fontes de luz em tempo real na cena, qual é o papel da tecnologia de mapeamento de luz? Claro, a diferença está entre objetos estáticos e objetos dinâmicos. A razão é muito simples: fontes de luz cozidas são usadas para objetos estáticos e fontes de luz em tempo real são usadas para objetos dinâmicos. Portanto, recomenda-se a utilização de um método misto para fontes de luz, especialmente a fonte de luz principal.

Vemos que existem duas subopções em “Iluminação Mista”, uma é a caixa de seleção para iniciar o cozimento do sistema de iluminação global e a outra é “Modo de Iluminação”, o valor padrão é “Shadowmask”. No modo Shadowmask, os efeitos de iluminação indireta são incorporados ao mapa de luz (ou seja, a iluminação indireta não é calculada em tempo real) e as sombras geradas pela iluminação direta também são incorporadas ao mapa de luz (ou seja, as sombras não são calculadas em tempo real). tempo).). Em outras palavras, ao executar o projeto, a alteração da fonte de luz mista não afetará a iluminação indireta e as sombras dos objetos estáticos (fixados no mapa de luz), mas outras renderizações ainda serão calculadas de acordo com a fonte de luz em tempo real. Portanto, este modo é uma combinação de iluminação em tempo real e mapeamento de luz. Deve-se observar que o Universal Rendering Pipeline (URP) não suporta o modo de iluminação Shadowmask, embora seja a opção padrão.

Existem também dois modos para escolher: Baked Indirect e Subtractive.

No modo Baked Indirect, apenas a iluminação indireta é preparada (ou seja, a iluminação indireta não é calculada em tempo real), e a iluminação direta e as sombras são calculadas em tempo real, portanto o consumo de desempenho é relativamente grande. Observe que esse modo é compatível com todos os três pipelines de renderização.

No modo Subtrativo, a iluminação direta e a iluminação indireta são incorporadas ao mapa de luz ao mesmo tempo, e as sombras de objetos estáticos também são incorporadas ao mapa de luz. Observe que o Pipeline de renderização de alta definição (HDRP) não oferece suporte ao modo de iluminação subtrativa.

Comparando os três modos, o modo Subtrativo apresenta o menor consumo de desempenho, pois a iluminação direta, a iluminação indireta e as sombras de objetos estáticos são obtidas do mapa de luz, e nenhum cálculo em tempo real é realizado. É claro que objetos dinâmicos ainda requerem real cálculo de tempo da fonte de luz. Observe que ele tem o menor custo de desempenho, mas não é compatível com o pipeline de renderização HD. O segundo é o modo Shadowmask, que apenas ilumina iluminação indireta e sombras de objetos estáticos. A iluminação direta ainda é calculada com base na iluminação em tempo real. Comparado com o modo anterior, o consumo de desempenho é maior. Embora o consumo de desempenho esteja relativamente comprometido e seja também a opção padrão do Unity, o relacionamento de renderização universal não é suportado. Por fim, existe o modo Baked Indirect, que prepara a iluminação indireta.A iluminação direta e as sombras ainda são calculadas com base na iluminação em tempo real, o que obviamente consome mais desempenho. Embora consuma mais desempenho, é compatível com todos os pipelines de renderização. Portanto, ao desenvolver jogos, você precisa determinar esses conteúdos e escolher qual pipeline de renderização e qual modo.

Na janela Iluminação, também podemos ver a opção Configurações de Lightmapping, com alguns parâmetros importantes abaixo.

Lightmapper: especifica qual software de cálculo de iluminação interna é usado para calcular mapas de luz na cena. Unity usa um sistema de computação chamado Progressive Lightmapper. O padrão é CPU Progressiva, o que significa que a CPU é usada para cálculo. Você também pode selecionar GPU Progressiva para cálculo. Além disso, o Enlighten foi abandonado (conforme mencionado acima).

Amostras Diretas: Valores de amostragem de iluminação direta

Amostras indiretas: valores de amostragem de iluminação indireta

Amostras ambientais: valores de amostragem de luz ambiente

Finalmente, existe a opção de verificação Gerar automaticamente. Se marcarmos esta opção, o Unity irá gerar automaticamente mapas de luz para nós; se não marcarmos (padrão), precisamos clicar em "Gerar iluminação" à direita para gerar manualmente o mapa de luz. Se modificarmos a iluminação ou cena, precisaremos regenerar o mapa de luz.

Finalmente, vamos resumir: os quatro tipos de fontes de luz do Unity são fáceis de entender. O que é mais difícil de entender é a iluminação indireta do Unity, seu principal objetivo é tornar a cena mais realista, mas infelizmente a iluminação indireta só pode ser usada para cozimento, que serve para gerar mapas de luz. A tecnologia de mapeamento de luz é amplamente utilizada no Unity, portanto, existem três modos de fonte de luz: tempo real, cozimento e mistura. Por padrão, recomendamos o uso de fontes de luz no modo misto. Depois de preparar o mapa de luz, os objetos estáticos na cena obterão efeitos de iluminação do mapa de luz, enquanto os objetos dinâmicos ainda obterão efeitos de iluminação por meio de cálculos de fonte de luz em tempo real. Desta forma, pode não só garantir o efeito geral de iluminação, mas também reduzir o consumo de desempenho. Em relação às configurações de cozimento do mapa de luz, você precisa entender os três modos de “Modo de Iluminação” em “Iluminação Mista” na janela Iluminação. A diferença entre eles está em se a iluminação direta, a iluminação indireta e as sombras são incorporadas ao mapa de luz. Quanto mais conteúdo é incorporado, menos cálculos em tempo real são necessários. Isso não deve ser difícil de entender.

Acho que você gosta

Origin blog.csdn.net/konkon2012/article/details/130461175
Recomendado
Clasificación