Cursos e Bibliotecas Ver Mais

Galeria 3D1 Ver Mais

Jomar Machado   Rio de Janeiro - RJ
Douglas Garcia   São Paulo - SP
Victor Trindade   Belo Horizonte - MG

Portfólios Ver Mais

Eliot   Santos - AC
claudiothepower   São Miguel do Iguaçu - Pr - AC
Hauris   Ceará - CE

Alguem me ajuda com sombra do meu modelo 3D por favor ? (UE4)

Por: Bruno  

Em: 28/01/2020 19:30

Meu problema é o seguinte galera, eu modelei varias espadas no bleder e então exportei elas no formato FBX para a Unreal Engine 4 então coloquei elas no cenario para ver como elas ficaram até ai tudo bem, então complilei tudo pra ver o resultado final e ... a sombra de todos os modelos que eu fiz ficaram erradas como vocês podem ver na imagem, alguem sabe como resolver esse probrema ??
Oi Bruno, tudo bem?

Você se refere aos defeitos da sombra projetada no piso ou aos defeitos do sombreado nas espadas, como as áreas escuras nas lâminas?

Se for a sombra projetada no piso, depende da configuração da fonte de luz e da resolução do Lightmap do piso, caso tenha feito Bake da iluminação.
Se não fez o Bake, depende de como configurou o Cascaded Shadows, mas eu sugiro que use Distance Field Shadows, pois possui melhor qualidade.

Já o defeito no sombreado nas lâminas das espadas pode ser pela baixa resolução do Lightmap, por problemas no mapeamento do segundo canal UV, que é o canal usado pelo Lightmap, ou porque as faces nas pontas das lâminas estão se sobrepondo.

Abração e tudo de bom.

André Vieira
Obrigado pela ajuda andre, então na verdade o meu problema são os 2 tanto a sombra projetada no chão quanto a que ta no objeto, eu sou bem novato nisso então nem sabia oque era Lightmap, fui descobrir que ele existe depois de ter esse problema pra mim só precissava fazer o mapeamento UV pra textura, então eu descobri que a unreal 4 gera o lightmap automaticamente ao exportar o arquivo no 2 canal mas o resultado não ficou muito bom. Eu não fiz o bake pra ser sincero só fui descobrir q isso existe tentando decobrir como resolver esse defeito na sombra. Eu olhei alguns turoriais na internet mas, só achei em ingles por isso não entendi muito bem como fazer esse lightmap e o bake você saberia me diser algum canal que explique isso em portugues ou como fazer?  
Oi Bruno, tudo bem?

Tem bastante coisa envolvida neste assunto, daria para escrever um livro só sobre isso.
Mas vou tentar te dar uma clareada geral para você poder prosseguir.

O Unreal oferece diversos tipos de sombras para usar conforme cada situação, pois é pesado calcular todas as sombras em tempo real para valer, então, as luzes e os objetos são classificados como estáticos, estacionários ou móveis.
As luzes estáticas são as que possuem maior qualidade, mas só iluminam objetos estáticos e a iluminação delas é gerada fazendo o Bake, que acontece quando clica no botão Build, mas tem que configurar o Lightmass antes do Build.

1- O Lightmass fica no World Settings, se ele não estiver na sua interface é só abrir através do menu Window > World Settings.
A configuração é bem simples, como mostra a imagem 1 em anexo, basta colocar 5 no Num Indirect Lighting Bounces e Num Sky Lighting Bounces, além de desabilitar o Compress Lightmaps para ter mais qualidade, porém, isso deixará o Game mais pesado.

Quando os objetos são estáticos e as luzes também, aparece o escrito Preview nas sombras dos objetos, pois para ver a sombra real tem que fazer o Bake, também aparece uma mensagem em vermelho na Viewport avisando que precisa fazer o Build da cena.
O Bake calcula as sombras e o GI, que é o que cria mais realismo, dai guarda estas informações no segundo canal UV, pois o primeiro é usado pelas texturas dos materiais do objeto.
Por isso o mapeamento do segundo canal UV é muito importante para a qualidade das sombras, ele precisa ser o menos quebrado possível, ou seja, ter o menor número de ilhas e as ilhas devem ocupar a maior parte possível da área do UV para as sombras terem mais resolução.

A maioria dos objetos do cenário devem ser estáticos, assim como a maioria das luzes, apenas os objetos animados ou que podem ser movidos devem ser marcados como móveis.

2- Apesar de ser possível gerar o mapeamento do segundo canal UV na importação ou mesmo depois no Mesh Editor do Unreal, este mapeamento automático só fica bom em objetos quadradões como paredes, portas, janelas, pisos e tetos, não fica bom em objetos arredondados.
Neste caso é necessário fazer o mapeamento no próprio Blender e desabilitar a geração automática do Lightmap UV na importação para não substituir o que fez no Blender.
Eu não conheço o Blender para explicar como fazer o mapeamento do segundo canal UV, no 3ds max aplicamos o modificador Unwrap UVW e nele tem a opção de definir o número do canal UV.

No Unreal você pode ver se o objeto está com os dois canais UVs corretamente clicando no Mesh para abrir o Editor e dai tem o botão UV, clicando na setinha do lado dele pode escolher o UV que deseja exibir, tem que ter o canal zero e o canal 1 como mostra a imagem 2 em anexo.
O canal 1 é o mapeamento do Lightmap onde serão guardadas as sombras do objeto depois do Bake.

3- Como eu disse, a maioria das luzes num Game devem ser estáticas para não ter que calcular em tempo real, mas a luz do sol normalmente é marcada como estacionária (Stationary), como mostra a imagem 3 em anexo, pois assim ela gera sombras estáticas nos objetos estáticos e gera sombras Real-Time nos objetos móveis.

Continua sendo necessário o Bake, pois ela vai gerar o Lightmap dos objetos estáticos.
Porém, nos objetos móveis a sombra não terá tanta qualidade quanto nos objetos estáticos, já que a sombra Real-Time precisa ser otimizada, você nota a baixa qualidade principalmente na área de contato de um objeto com outro, como está marcado na imagem.
Tem duas formas de resolver, usando Contact Shadows ou Cascaded Shadows, você acessa o Contatc Shadows clicando na setinha na parte de baixo do painel Light, como mostra a imagem.

4- Basta aumentar um pouco o valor do Contact Shadow Length e a sombra na área de contato dos dois objetos será preenchida, como mostra a imagem 4 em anexo.

5- Para testar o Cascaded Shadows, desligue a Contact Shadows zerando o Contact Shadow Length.
Depois, encontre o painel Cascaded Shadow Maps mais abaixo no menu da luz e aumente o valor do Dynamic Shadow Distance Stationary, assim, verá que a sombra aparece na área de contato dos dois objetos, como mostra a imagem 5 em anexo.

6- Se a luz for marcada como móvel (Movable) ela vai gerar as sombras em tempo real para todos os objetos, os estáticos e os móveis, dai não precisa de Bake da iluminação e por consequência também não precisa do mapeamento do segundo canal UV usado pelo Lightmap, mas é a opção mais pesada de todas.
Neste caso a sombra precisa ser mais otimizada e ficará mais borrada, então, é necessário ligar o Contact Shadows para melhorar a sombra de contato entre os objetos, também pode ser necessário ajustar o Shadow Filter Sharpen, que fica logo acima do Contatct Shadow Length, ele permite diminuir o borrado da sombra.

Quando a luz for móvel o Cascaded Shadows fica habilitado por padrão, pois a sombra Real-Time é feita a partir de Shadow Map, ou seja, uma imagem da sombra que é projetada em cima dos objetos como se fosse um projetor de cinema.
Por padrão ele cria 3 imagens das sombras a cada Frame (Num Dynamic Shadow Cascades), por isso que chama Cascade de cascata, pois as imagens são projetadas uma depois da outra igual uma cascata, se diminuir para 2 ficará mais rápido, mas a sombra perde mais qualidade.
Você percebe pelo arredondamento da sombra nos cantos do Box, como está marcado na imagem 6 em anexo.

Todas as luzes perdem qualidade com a distância, até mesmo as estáticas, pois o Unreal otimiza a cena diminuindo a resolução das texturas e Lightmaps distantes, mas as sombras móveis além de perderem qualidade com a distância também somem completamente depois de certo ponto.
Esta distância é controlada nos dois primeiros parâmetros do painel Cascaded Shadow Maps, o primeiro controla a distância das sombras das luzes móveis e o segundo controla a distância nas luzes estacionárias como vimos mais acima.

7- Se aumentar para 4 Dynamic Shadow Cascades a sombra Real-Time ganha mais qualidade e os cantos do Box não ficam mais arredondados, como mostra a imagem 7 em anexo, mas deixa a cena mais pesada.

A sombra Real-Time de melhor qualidade é gerada através de Distance Fields, mas dai tem muitos outros detalhes envolvidos, precisa criar o Distance Field de cada Mesh, isso leva tempo e deixa o projeto bem maior em MB, pois tem que arquivar o Distance Field de todos os objetos.
Isso sem falar do Ray Tracing Real-Time, que dai tem a melhor sombra de todas, mas só roda em PC com placa RTX, é uma coisa para o futuro, daqui uns 5 anos mais ou menos.

Espero ter conseguido te dar uma luz neste assunto, se tiver dúvida sobre qualquer detalhe que mencionei, é só falar que explico melhor o ponto.

Abração e tudo de bom.

André Vieira
Tudo blz Andre?
Muito obrigado pela ajuda, realmente me ajudou bastante a entender melhor o processo de luz na Unreal.

Ficou bem mais bonita a sombra usando a Cascaded Shadows eu botei 2 imagens pra vc ver como ficou.  

Quanto ao bake eu estou vendo uns vídeos pra entender como fazer ele no blender, vou testar pra ver se consigo faço direito.

Ja o Raytracer é melhor eu nem chegar perto mesmo pro meu PC não explodir kkkkkkk.

Um abraço pra vc também e novamente vlw pela ajuda.
Oi Bruno, tudo bem?

Eu fico feliz de ver que deu certo e agradeço por postar as imagens, realmente melhorou bastante.

Sobre o Bake dos mapas de detalhes como Ambient Occlusion e Normal Map, existem programinhas gratuitos que fazem isso como o X-Normal e o Handplane.

O X-Normal fica neste link: https://xnormal.net/

O Handplane fica neste link: http://www.handplane3d.com/

Porém, para coisas reflexivas é importante ter também o mapa de Bent Normals e o único programa que eu conheço que gera Bent Normals é o Substance Designer.
Vou gostar muito de saber se o Blender permite gerar Bent Normals também, pois o Substance é da Adobe e o Blender é de graça.

Se precisar de ajudar para construir o material do Unreal com estes mapas é só falar.

Abração e tudo de bom.

André Vieira
Oi Andre tudo bem ?
Sou eu denovo, desculpa tar te pertubado mais uma vez com isso mas depois de ver uns 30 videos sobre o lightmap eu ainda não consegui entender como fazer um bem feito, eu vou tar botando uma imagem para vc ver o resultado, ele ficou melhor q o inicial mais ainda ta com problemas. 
Eu queria saber se tem como eu te mandar o modelo 3D da espada numero 1 pra vc dar uma olhada e me explicar como arrumar direito lightmap? Eu posso mandar o arquio em FBX se for melhor
Oi Bruno, tudo bem?

Não está me perturbando de forma alguma, é um prazer poder ajudar alguém interessado no Unreal.

Se quiser, pode enviar o arquivo em FBX para o meu email que eu olho ele para você, mas terei que fazer no 3ds max, pois não sei usar o Blender, meu email é [email protected]

De qualquer forma, o seu problema é muito comum e acredito que sei como resolver vendo a imagem que postou.

O Lightmap é gerado pelo Lightmass e a configuração é super simples, basta colocar 5 no Indirect Lighting Bounces e no Sky Lighting Bounces para a luz rebater 5 vezes nos objetos, como mostra a primeira imagem em anexo.
Dai, se quiser mais qualidade no Lightmap você deve desabilitar a opção Compress Lightmaps, porém, isso vai gastar mais memória na aplicação interativa e vai tornar o Pack maior em MB.

Mas o seu problema não é este, o Lightmap é guardado como uma textura e de acordo com o mapeamento do objeto, então, os defeitos aparecem justamente na emenda entre as ilhas do mapeamento.
Veja o problema nos cantos das lâminas como indicou na imagem que postou em anexo, eles estão aparecendo bem no lugar onde tem uma emenda no mapeamento.
O ideal é que você junte as partes da malha que formam a lâmina no mapeamento, das empunhaduras também, quanto menos ilhas tiver, melhor, no caso do 3ds max isso é feito com o comando Stitch, mas no Blender eu não sei.

Se me enviar o arquivo eu mapeio da forma correta para você ver como fica.

Mesmo assim ainda pode aparecer estes defeitos devido a resolução do Lightmap, pois se o Lightmap tiver uma resolução muito baixa o sombreado ficará muito borrado e aparecerá estas falhas nas emendas, inclusive quando o mapeamento estiver bem feito.

Você resolve isso clicando no Mesh do objeto no Content Browser do Unreal, para abrir o Mesh Editor, dai é só aumentar o valor do Lightmap Resolution, como mostra a segunda imagem em anexo.
Você deve usar valores como 128, 256, 512, 1024 ou 2048.
Creio que colocando em 512 vai ficar perfeito e pode sumir os defeitos mesmo sem melhorar o mapeamento, pois com alta resolução o sombreado contorna melhor a ilha de mapeamento.

Abração e tudo de bom.

André Vieira
Olá Andre sou eu de novo, realmente vc estava certo ao mexer no Lightmap Resolution resolveu o problema das sombras borradas, eu tive que botar a resolução em 2048 com 512 ainda estava um pouco borrado.

Eu vou botar uma imagem para vc ver como ficou.

Mesmo assim eu vou mandar o arquivo FBX pro seu email só pra poder ver como alguem que manja faria o lightmap.

E mais uma vez vlw pela ajuda.

Oi Bruno, tudo bem?

Eu fico feliz que deu certo, mas neste caso foi a um custo muito alto de memória, pois 2048 nestes objetos é imenso!

O importante é perceber porque foi necessário 2048 para ficar bom.
Olhe a área útil do mapeamento, veja como as partes do Mesh ocupam uma pequena área da textura, ficando boa parte dela completamente vazia.

Então, imagine que vai aplicar uma textura de madeira com este mapeamento, o que vai acontecer?
A textura parecerá gigante porque apenas uma pequena parte dela vai aparecer na empunhadura da espada, por exemplo, então, terá que ladrilhar a textura para repetir diversas vezes dentro da área útil do mapeamento até que ela fique pequena o suficiente para aparecer na empunhadura.
Ou seja, a textura terá baixa resolução mesmo usando uma imagem grande.

O mesmo está acontecendo com a sombra, que é uma textura parecida com Normal Map, mas por guardar a iluminação é chamada de Lightmap.
As sombras estão ocupando uma pequena área de toda a textura do Lightmap, então, você precisa usar uma imagem gigante com 2048 para que a pequena parte usada pela sombra tenha mais resolução.

Estas espadas têm que ficar perfeitas com 512, que já é muito, mas para isso precisa ajustar o mapeamento.
Você usa 2048 em áreas grandes do cenário como tetos e pisos de salões, as paredes pode ser 1024.
Objetos pequenos não podem passar de 512.

No final de semana eu faço o mapeamento e te envio em FBX para você ver como deve ficar.

Abração e tudo de bom.

André Vieira

Faça o login para poder comentar

Usuários conectados

Total de mensagens publicadas pelos membros da comunidade: 707603.

Total de membros registrados: 135223

Últimos membros registrados: sanerreddie, Humberto1082, pdsanbvha, annastark, Ztesu026, Defending, André.fs, LUHIDALGO.

Usuário(s) on-line na última hora: 959, sendo 21 membro(s) e 938 visitante(s).

Membro(s) on-line na última hora: Saone, Starter, Frederico Wagner N. R., pinart, Reinaldo Silva, Nuno, Thiago Couto, Ronaldo Junior, Fabio Amorim, Eber.Silva, Jorge Henrique, Duda, Henrique Ribeiro, Flávio, Gauchu, Allen Anderson, Willmitnick, mixel.amorim, Fernando Cunha, SaavedraCG, Marco Rocha.

Legenda: Administrador, Especial, Moderador, Parceiro .

3D1 © Três D1 © 1999-2024. Todos direitos reservados.