Cursos e Bibliotecas Ver Mais

Galeria 3D1 Ver Mais

Jomar Machado   Rio de Janeiro - RJ
Jomar Machado   Rio de Janeiro - RJ
luis martins   Viana do Castelo Portugal - AC
Ale   Joinville SC - AC

Portfólios Ver Mais

ljunior   Belo Horizonte - MG
Marcos Fernandes 3d   João Pessoa-PB - PB
Johnrestos   Natal, RN
Jacques   Es vitoria

Breve estudo sobre lightmaps e shadowmap

Por: Caio Lamas  

Em: 17/07/2008 20:03

Como prometido, estou abrindo esse tópico em resposta à questão aberta pelo meu amigo de fórum Zulmar Junior. EU me reservei o direito de fazer algumas ressalvas ao que eu mesmo propus em favor de uma melhor introdução do tema. Esse não é um tutorial passo a passo, ainda, com o desenrolar deste mesmo tópico vamos chegar a esse ponto. Eu não disponho de tanto tempo quanto quero para vir aqui contar tudo o que eu sei, e como eu quero. Mas isso é o de menos, vamos ao que importa. O que são lightmaps? São imagens com a informação luminosa de um ou mais objetos de um cenário 3D, ou até mesmo uma cena inteira. Os lightmaps dependem do mapeamento adequado da malha de todos os objetos na cena em canais extras, que diferem dos canais de cor, para serem aplicados corretamente e permitirem que nos canais de cor haja repetição de texturas e que possam usar texturas menores. E qual é a utilidade? ( Essa seria uma pergunta besta ehim.. ) Geralmente são usados em jogos eletrônicos, são a forma mais prática e leve (em termos de memória e processamento) de se obter uma boa iluminação de todo o ambiente em tempo real, mas eles podem ser aplicados a muitos outros casos. Para produzi-los basta iluminar a cena da forma usual e usar o “render to texture” para exportar essa iluminação em forma de textura. Assim, uma cena com 100 objetos, cada um com uma ou mais texturas de cor com mapeamento no canal 1 poderá compartilhar o mesmo lightmap no canal 3 gerando toda a informação luminosa necessária em tempo real, por meio de uma composição entre o canal 1 e o canal 3. Em jogos os lightmaps não precisam ter grandes dimensões, se bem planejados, é possível obter qualidade na iluminação de um objeto simples usando uma área, por exemplo, de 5px por 5px, isso ocorre por que quando esse mapa é composto junto aos mapas de cor seus pixels se mesclam e não ficam evidentes, gerando um efeito de luz suave. Um simples exemplo: Aqui as duas imagens nos mostra os mapas de cor aplicados com shading tipo "flat", e o lightmap ja simulado e aplicado aos objetos. Aqui os dois canais ja mesclados. Aqui o layout do lightmap (512x512px), essa malha foi aberta com o modificador unwrap uvw antes de usar o "render to texture". Pô, legal... mas, como usar isso por exemplo, em um passeio de maquete eletrônica? :lol: Esse é o ponto interessante, pode-se usar essa técnica em animação perfeitamente, para criar uma iluminação global sem flicker, uma vez que está informação não será calculada frame por frame, estará fixada nas texturas de cada objeto. A grande vantagem desse uso é que não existe um limite para os tamanhos das texturas, pode-se usar uma textura de boa qualidade para cada objeto, e depois compor o resultado com passes de cor, reflexo, refração... O render feito só com os lightmaps no canal diffuse servirá como um pass de iluminação direta e indireta, para quem já leu o tutorial do André aqui mesmo na 3d1 sobre composição e renderização em elementos vai entender bem do que estou falando, pra quem não leu eis o link: http://www.tresd1.com.br/conteudotutoriais.php?t=27912 O resultado final disso tudo pode ser mesclado no combustion, mas existem alternativas, pode mesclar o lightmap com materiais do mental ray com um shader de composição do mental ray para mesclar diversos materiais com os mesmos modos de composição do photoshop, como por exemplo o shader “JS_Multilayers”, que pode ser baixado gratuitamente na internet. Um exemplo simples de composição: Temos essa cena simples, com a iluminação já configurada. Esse abaixo é o lightmap da cena completa, gerado pelo “render to texture” e Final Gather do mental ray. No exemplo a cena toda recebe o mesmo mapeamento, que foi editado para tirar o máximo proveito do mesmo mapa. Essa abaixo é a cena na viewport com o lightmap aplicado no canal diffuse, essas partes escuras nas arestas ocorrem devido ao mipmapping que a viewport faz da textura, para que isso não ocorra deve-se fazer uma edição do mapa no photoshop, adicionando uma faixa de 1 pixel da mesma cor da emenda da textura, mas isso só para uso em tempo real, para usar isso em animação essa edição na maioria das vezes não é necessária, já que se pode usar imagens maiores que não apresentarão esse defeito no render, ficará perfeito, se ocorrer, basta usar um local supersampling que o problema é resolvido. Abaixo uma exemplificação simples do pass de cor, iluminação, e resultado final da composição. Agora, use a imaginação... O que deve se ter em mente é que esse é só um exemplo simples, a complexidade que se pode dar a essa técnica é ilimitada. Para aguçar a curiosidade, uma coisa interessante nessa técnica é que se pode criar lightmaps diferentes para a iluminação direta e indireta, para isso basta ir em “render to texture>output>add...(add texture element)>lightingmap>select element unique settings> ...”, onde se pode desligar qualquer tipo de iluminação que desejar, deixando só a restante. Na próxima parte vamos deixar os lightmaps de lado por enquanto, e explicarei alguns macetes sobre shadowmap no mental ray, depois um breve passo a passo de como utilizar as duas técnicas, botão por botão. Espero que gostem. PS. Estou usando o imageshack para upar as imagens, por isso desses ads aí, desculpem por esse detalhe... :D Abraço.
nossa, muito interessante, nao conhecia esse lightmap, bem util a primeuira vista, achei bem legal essa iniciativa do "mestre". Parabens mesmo Abraco
opa caio, isso muito me interessa! hehehe valeu mesmo a explicação. Agora he sentar e fazer os testes!
DEUS é maior!
Ótimo ótimo ótimo!!!! Muito bom esse artigo caio, parabens!!!!
é tipo ambient oclusion ? ou quando se aplica o VrayDirt por exemplo na VrayLightMtl ? http://www.tresd1.com.br/conteudotutoriais.php?t=19563
Renato Conti - wakedesign
Caio, obrigado pela estudo, muito bom saber dessa técnica. Mas me responde uma pergunta? Essa técnica serve para agilizar o tempo de render de animação de maquete eletrônica? Se eu salvar o mapa de sombra de tudo como vc explicou, posso usar esse mapa na animação e ele não vai ter que calcular a sombra em cada frame?
Poxa Caio, obrigado por compartilhar. Gostei muito desta técnica, vou tentar aplicar nos meus trabalhos.
muito bom cara...ja vou fazer uns testes!! :D
Parabéns Caio... vai ajudar um bocado a galera que meche com animações... vlw
Panoram Studio Gráfico
www.panoram.com.br
massa esse tutorial, como se aplicaria a uma imagem com varios objetos?
Julio Linhares Arquitetura e CG Curitiba - PR www.juliolinhares.com

Faça o login para poder comentar

Usuários conectados

Total de mensagens publicadas pelos membros da comunidade: 707657.

Total de membros registrados: 135263

Últimos membros registrados: spiceland, federickpaul, mitsuki026, Vanessa Rôxo , May Alencar, adriellex, sabrina-bomfi, graceholan64.

Usuário(s) on-line na última hora: 546, sendo 5 membro(s) e 541 visitante(s).

Membro(s) on-line na última hora: spiceland, RAPH, cadwillem, deathstars, Marco Rocha.

Legenda: Administrador, Especial, Moderador, Parceiro .

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