UE4 O ciclo do dia e da noite | Modificação do SkySphere

A mudança do dia e da noite geralmente aumenta entre os usuários. E se o movimento do sol em si é bastante simples de organizar, obter um trabalho mais ou menos realista *** SkySphere *** já é muito mais difícil.

Neste artigo, não pretendo mostrar todos os tipos de maneiras de alterar a orientação do DirectionalLight com as estações do ano e a precessão. Sobre este assunto, na minha opinião, existem materiais suficientes. Alguém faz isso através do Blueprint , mas eu uso C ++ , para que o relógio esteja correndo no servidor e periodicamente (uma vez a cada poucos segundos) sincronize o relógio do cliente. Ao mesmo tempo, nenhum movimento ocorre no servidor. Não é uma coisa grandiosa mover o sol pelo céu.


A seguir, falarei sobre os problemas que surgirem e mostrarei minha versão da atualização do BP_Sky_Sphere padrão para que funcione corretamente com o ciclo diário.




Antes da modificação, será bastante útil copiar todo o conteúdo da pasta EngineSky para o seu diretório, para não prejudicar o Blueprint padrão e os recursos conectados a ele.





Antes de tudo, quero falar sobre um bug (ou recursos) da esfera padrão. O StaticMesh em anexo para a esfera tem uma escala de 400. Se você mudar para 1, parece que nada mudará, mas se você avançar um pouco, você se sentirá como no filme "The Truman Show". Sim, essa esfera, embora enorme, tem suas próprias fronteiras. Um problema óbvio para mundos abertos, que é muito fácil de corrigir, fazendo a esfera se mover com o jogador.



Obviamente, como alternativa, você pode tornar a esfera ainda maior, mas não estou muito impressionado com essa ideia.




O próximo item é definir uma noite normal. Não gosto que as estrelas apareçam apenas à meia-noite e no resto do tempo - é apenas um tipo de tarde prolongada.


Também é simplesmente resolvido ajustando as curvas existentes e adicionando novas.



Exemplo de curva



O próximo problema é o amortecimento da luz para DirectionalLight e SkyLight . É estranho o suficiente observar que à noite não se vê nada pior do que durante o dia. Também é resolvido de maneira muito simples, adicionando e ajustando curvas.


Alteração dos níveis de iluminação



Bem, para a sobremesa ... Estrelas não se mexem! Se a noite é longa e cheia de horrores , talvez o jogador não perceba. Mas somos a favor de uma abordagem séria?


Primeiro, fiz a textura das estrelas se mover adicionando variáveis ​​extras ao material.


Algo assim

Enquanto o sol se mover ao longo do plano equatorial, tudo estará em ordem. Porém, ao simular altas latitudes, começam as dificuldades matemáticas e a falta de vontade da textura em girar como queremos. Mas somos a favor de uma abordagem séria? :)


Como resultado, ele decidiu fazer duas esferas celestes. Um com nuvens, sol e céu, e o segundo, um pouco maior, com estrelas. BP_Sky_Sphere também conectou uma esfera adicional e educadamente pediu que ela girasse com o sol ...


E a parte mais interessante! Faça a menor esfera celeste parcialmente transparente. Apenas conectando a lógica do material à Opacidade , é claro que tenho estrelas maravilhosas brilhando através das nuvens negras da noite. Portanto, tive que modificar novamente o material com um arquivo, desenhando dois céus. Um com nuvens negras para o visual. E o segundo, sempre com nuvens brancas como a neve, para Opacidade . Além disso, ele adicionou muito branco durante o dia, tornando o céu opaco para que o azul translúcido não amedrontasse sua profundidade.


Blueprint

Imagem clicável


Material







Agora tudo funciona como pretendido pelo Criador, neste caso - por mim. Resta apenas ajustar as curvas de controle, mas no geral parece muito bom.




Se você tiver idéias sobre como facilitar isso, compartilhe. Eu ficaria grato.

Source: https://habr.com/ru/post/pt419469/


All Articles