quarta-feira, 17 de novembro de 2010

Zdepth em objetos com mapas de transparência (max, maya e xsi)

É muito comum usarmos fotos de arvores aplicadas em planes e recortadas por mapas de opacidade, para reduzir o tempo de render, só que nos deparamos com uma grande incomodação quando precisamos de um pass de zdepth, pois ele não  reconhece a transparência em objetos recortados com mapas de opacidade.
Recentemente conheci um pacote de shaders para o mental ray, o Shaders P (Puppet, sobrenome do criador, Ledin Pavel aka Puppet), esse pacote é simplesmente fantástico, com recursos incríveis para usuários um pouco mais avançados. Mas ele tem um shader de zdepth fantástico, que reconhece mapas de opacidade e é muito simples de se usar, inclusive por usuários de outros renderizadores.
Então fiz um pequeno tutorial para mostrar como usar.


Antes de começar vale salientar que esse pacote de shader esta disponível para 3Ds Max, Maya e Softimage XSI

Nessa primeira imagem pode-se ver os planes com mapas de opacidade aplicados para gerar o recorte do objeto.


Para usar o shader é muito simples (não vou falar sobre a instalação pois no pacote vem as instruções detalhadas).


Primeiro precisamos carregar o shader de base que é o "mental ray" (como mostra na imagem acima), para os que não usam o MR notem que esse shader é como uma carcaça vazia, onde vc pode ir adicionando os elementos necessários para criar o seu material. Nesse caso o nosso material vai ser um Zdepth, portanto vamos carregar o shader "p_z" no canal "Surface" do shader "mental ray".

Agora para configurar o "p_z" o processo é semelhante a configuração do Elements de Zdepth do Max. Precisamos saber a distância máxima do efeito a partir da câmera.


Uma maneira simples de se ver isso é movendo o "target distance" da câmera até a distância necessária para compreender toda a área que se deseja ter visível no mapa de zdepth, e então usar esse valor para configurar o shader.


O "Near clip" (em amarelo na imagem acima) seria o que esta perto ou seja começa com branco (255) e vai até o preto (0) que seria o "Far clip" (em verde na imagem acima). Se colocarmos valores maiores que zero no "Near Clip" teremos o que esta próximo a câmera muito mais claro.
Por algum motivo que eu não sei o Ledin Pavel, criador desse shader, fez por padrão o que esta perto ser preto e o que esta longe ser branco, mas ele colocou uma opção de "invert result" (em azul na imagem acima) para poder ficar no padrão correto, então basta marcar essa opção.
Com o shader configurado e aplicado em todos os objetos da cena, ao fazermos um primeiro teste de render já teremos o resultado que pode ser visto acima.

Agora precisamos configurar o material para os planes com transparência.


Para simplificar o processo, vamos fazer uma cópia desse primeiro material que criamos e vamos renomear. Feito isso basta aplicar a textura de opacidade no canal "opacity" do shader "p_z" e se certificar de que o valor seja 1.
Agora basta aplicar esse novo material nos planes e esta pronto para usar.

Esse shader porém é bem mais completo que isso, podendo por exemplo renderizar um mapa de zdepth com reflexão e refração:

Ou então a opção "Split Color", onde ele faz um mapa de Z colorido, o que possibilita isolar e recortar elementos do mapa usando os canais de cor (red, green e blue)


Red channel - main Z        /        Green channel - reflection Z

Blue channel - refraction Z

Ele também tem suporte para salvar imagens de 8bit, 16bit e 32bit (float).
Ao todo esse pacote possui 19 shaders com muitos recursos uteis e que quando misturados entre si podem gerar novas alternativas. Conforme eu for tendo tempo para estudá-lo, vou postar mais tutoriais com dicas de uso.

4 comentários:

Tom disse...

Muito legal esse post, gostei muito....

Vai me ajudar pra caramba, sempre tive essa dificuldade....

Valeu Thiago

Tom
tomcharacteranimator.blogspot.com

Alej0 disse...

Exelente, es de gran ayuda este truco.

Ivan pereira disse...

Amigo, estou procurando esse shader e não encotro mais, será que vc ainda teria ele aí perdido? valeu e parabéns pelo blog

Tiago Medeiros disse...

No site da creative crash ainda tem http://www.creativecrash.com/maya/downloads/scripts-plugins/rendering/mental-ray/c/shaders_p--2

Postar um comentário