18
respostas

Diferença de iluminação entre objetos

Eu estava fazendo a aula 2 do curso e comecei a colocar uns postes de luz no meu mapa, mas a iluminação de uma luz bem no encontro entre os dois objetos fica diferente no estacionamento do que nas ruas. Da forma atual, dá para ver claramente a linha de separação entre os objetos. Cconsiderando que ambos utilizam o mesmo material e que usei V para alinhar os objetos, gostaria de saber porque ocorre essa diferença.

18 respostas

Bom dia Caetano,

Isso acontece quando vc está jogando ou só no modo de edição?

Em ambos os modos e mesmo após gerar o jogo para executar no browser. Fica bem fácil de observar durante a edição que dependendo do ângulo e da altura da câmera a iluminação muda. Quando estou próximo, em alguns ângulos, a iluminação aparece normal, mas na câmera do jogo ou quando afasto bastante, a iluminação nos dois objetos fica bem diferente. Isso aconteceu depois de eu aumentar o tamanho do cone de luz para afetar uma área maior (não tive tempo de reduzir o cone de novo para ver se voltava ao normal).

Oi, Caetano, tudo bem?

Você chegou a fazer bake da iluminação? Porque o que pode estar acontecendo é a Unity sempre estar recalculando as luzes.

Não fiz (na verdade agora de cabeça não sei o que é isso, hahaha). É aquela instrução que aparece na aula sobre resolver a parte do problema que ao reiniciar a fase o jogo volta escuro? (aliás, meu jogo nunca apareceu esse problema como na aula) Se for outra coisa, se puder me passar alguma referência, eu testo hj à noite.

Isso! Aquela mesma! É porque depende muito de como está a configuração do projeto. No seu caso deve estar marcado pra ficar refazendo as luzes em qualquer alteração, você pode ou fazer bake das luzes como mostrei na aula (o que é legal porque seu jogo fica mais leve sem calcular luzes em tempo real no cenário desnecessariamente). Ou você pode simplesmente desmarcar a opção de ficar rebuildando a luz o tempo todo e quando precisar fazer isso manualmente.

Entendi. Uma coisa que percebi, era que inicialmente as minhas luzes não estavam gerando sombra, então marquei a opção de gerar Hard Shadows. Também tinha um dos postes amassados que eu fiz um script para a luz ficar piscando (alterando a intensidade, pq quando tentei desativar o componente, ele parou de executar o script). Fazer o bake da luz iria afetar estes comportamentos?

Quando for fazer o bake não marque esses objetos como estáticos pra eles serem influenciados pela luz quando ela sofrer alteração, senão a luz vai ficar sempre do mesmo jeito.

Ok! Assim que eu conseguir dar uma testada, retorno nesse post. Aliás, existe uma opção de anexar uma imagem aqui no fórum?

Blz, estamos aguardando! Sobre anexar imagens você teria que subir num site de imagens como imgur por exemplo e colocar o link aqui.

Fiz uns testes aqui e não parece estar havendo diferença em relação à posição da câmera. Fiz o bake e parece não ter feito muita diferença tbm. Tentei copiar o shader e o rederer dos objetos da rua para o objeto do estacionamento para ver se era alguma configuração diferente, mas tbm não resolveu. Nessa imagem é possível ver que os dois objetos de estacionamento aparentam estar sob uma luz muito mais forte que o objeto de rua (todas as ruas e a galeria de lojas destruídas estão se comportando uniformemente, então acho que deve ser alguma configuração no prefab do estacionamento) https://imgur.com/a/K4Ky9Cz

Em um segundo teste, adicionei um novo estacionamento em branco e copiei o shader da rua e apliquei nele. Esse estacionamento ficou com uma iluminação igual à da rua. Então acho que deve ser algum componente que ainda não conheço que causa essa diferença. Sabem qual pode ser?

Achei que tinha conseguido contornar o problema, mas parece que não, hehe

Adicionei mais duas imagens no link https://imgur.com/a/K4Ky9Cz

A primeira é como o cenário aparce assim que a cena inicia (mesmo após reiniciar quando o jogador morre) e a segunda é quando meu script de piscar luz executa. Após retornar a intensidade da luz para o valor original, a iluminação fica diferente no estacionamento. (A configuração de auto-generate lighting não altera esse comportamento)

Desmarcando o auto generate e fazendo o bake mantem as luzes do mesmo jeito que você configurou?

Pode mandar o projeto num Google Drive, Dropbox, ou coisa assim como .zip pra eu dar uma olhada se tem alguma configuração diferente?

Não percebi nenhuma diferença entre antes e depois do bake. Ao inciar o jogo, a luz está sempre a mesma. Só após eu alterar a intensidade dela no script que ela fica diferente.

Segue o link para o meu projeto. https://drive.google.com/drive/folders/119wQBp8zorqZ1pL3Vzuc4TrgXgfjYWUl?usp=sharing

O .rar ficou com 400MB.

Oi, Caetano, tudo bem? É alguma oclusão de luz causando isso, a maneira mais fácil de corrigir isso é aumentando um pouco a intensidade, notei que você havia deixado 2, mas seu script de piscar vai entra 1 e 0.

Testa pra ver se resolve seu problema, ou então você pode desabilitar o poste de receber essa luz, por exemplo.

Oi, tudo bom! Realmente eu esqueci de corrigir o script e depois da mudança não vi mais o problema acontecendo quando dou Play dentro da Unity.

Só que o problema ainda aparece no HTML quando eu tento fazer a build do jogo (nesse caso o problema aparece mesmo antes da luz piscar). Você chegou a testar esse caso?

E não entendi o que vc quis dizer com desabilitar o poste de receber a luz. Você diz remover a fonte de luz, mudar o modo como o script faz a luz piscar ou mudar alguma configuração do objeto do poste?

Obrigado!

Seria realmente fazer com que o poste não sofra incidência da luz pra luz poder ficar mais próxima dele, mas se posicionar corretamente não seria necessário.

Então WebGl não funciona tão bem com luz dinâmica mesmo, é comum dar problema por ser um esquema bem mais leve e ainda em desenvolvimento. Ideal pra esse tipo de configuração seria outro tipo de exportação como standalone.

Entendi. Acabei removendo esta luz pq não consegui uma boa posição. Mas em alguns outros casos, percebi que quando haviam duas fontes de luz muito próximas, parecia que a Unity resolvia "pintar" apenas umas das luzes nos objetos e acabava tendo algumas diferenças muito grandes quando ela decidia que objetos próximos iriam ser "pintados" com luzes diferentes.

Agora estou colocando menos luzes e também deixando mais espaço entre elas. Está sendo uma boa forma de evitar estes casos.

Acabei me empolgando na hora de aumentar o mapa e colocar a iluminação, mas acho que já consigo voltar a avançar o curso agora. Na forma atual, estou conseguindo evitar este bug em específico.

Legal, Caetano. Colocar iluminação é um estudo que tem que ser feito a parte porque toma bastante tempo, você pode colocar luzes principais e depois luzes mais fracas pra compor e não deixar tão escuro.

Espero você nos próximos cursos, bons estudos :)