Mostrando postagens com marcador particle flow. Mostrar todas as postagens
Mostrando postagens com marcador particle flow. Mostrar todas as postagens

segunda-feira, 11 de maio de 2009

Tutorial do Teapot de Areia - Versão 2.0

Como prometido no post "Tutorial do Teapot de Areia - Versão 1.0", voltei para postar um novo tutorial que cria o mesmo efeito de um objeto se desfazendo, porém dessa vez usarei uma técnica que exige uma quantidade bem menor de partículas, facilitando muito o trabalho.

Para seguir este tutorial é importante que você tenha conhecimentos básicos de 3D Max e se possível já esteja familiarizado com o Particle Flow. Também é interessante que tenha acompanhado o tutorial anterior para perceber as diferenças entre as duas técnicas.

Vamos lá:

1º - Vamos criar uma cena básica no 3D Max. Para isso eu criei uma semi-esfera para servir de ambiente, um Teapot, uma luz Direct para gerar um foco de luz e sombra (para a sombra eu usei a Ray Traced Shadows, pois essa sombra interpretará o alpha que usaremos mais para frente para fazer o Teapot sumir), usei o E-Light (script) para criar uma iluminação homogênea na cena (porém sem emitir sombra) e posicionei a câmera.
2º - Texturize a semi-esfera, no meu caso eu coloquei uma cor básica e reflexo no que seria o "piso" da minha cena. Para texturizar o Teapot vamos criar um material Multi/Sub-Object. Clique no botão "Set Number" e mude o valor para "2". Lembre-se de habilitar a opção "2-Sided".No primeiro Slot do Multi/Sub-Object crie a textura do Teapot, eu coloquei apenas uma cor e um Bump. O resultado você pode conferir na imagem abaixo.

3º - Agora precisamos criar um mapa de opacidade para fazer o Teapot sumir. Para isso vamos adicionar um Gradient Ramp no canal Opacity da textura do Teapot. As configurações que usei estão na imagem abaixo, mas lembre-se que essas configurações e, praticamente todas as outras, podem mudar de cena para cena. Cada um deve encontrar a melhor configuração para o efeito desejado.
Repare que no Gradient Ramp eu usei Map Channel 2, pois a imagem que usei de Bump está com Map Channel 1 e o mapeamento dos dois será diferente. Mapeie o Gradient Ramp como preferir, eu fiz o meu de uma forma que o Teapot suma de cima para baixo. Observe também que eu mudei as configurações do Noise e criei uma pequena faixa preta no canto do Gradient Ramp.
4º - Vamos animar essa faixa preta indo da esquerda para a direita. Para isso basta posicionar a TimeLine no Frame final da animação (nesse ponto cada um decide em quantos Frames o seu objeto irá desaparecer e depois ajusta caso fique muito rápido ou muito lento) clique no botão "Auto Key" na TimeLine do Max, selecione o Flag do Gradient Ramp que queremos animar e mova para a posição final.
Observe na imagem abaixo como o meu Gradient Ramp está reagindo.
É muito importante que no começo da animação o Teapot esteja completamente coberto pela cor branca do Gradient Ramp (essa cor determina a parte do Teapot visível) e no final da animação ele deverá estar completamente coberto pela cor preta (cor que determina a parte que não será visível). Ao renderizar você verá o seu Teapot desaparecendo de forma gradual.
Agora entra uma das partes mais importantes dessa técnica que difere da que postei anteriormente. Na técnica anterior eu usei um Teapot como emissor de partículas. Nessa técnica que estou mostrando agora, vamos usar um mapa para emitir as partículas enquanto o Teapot desaparece. É por isso que fica muito mais leve, pois o Teapot não precisa ser totalmente formado por partículas, o mapa que criaremos irá emitir essas partículas, sincronizado com o mapa de opacidade do Teapot.

5° - Para criar esse mapa que servirá como emissor de partículas, vamos usar o segundo Slot do Multi/Sub-Material. Copie o Gradient Ramp aplicado no canal de opacidade do Teapot e cole como cópia (isso é muito importante, não pode ser instance, pois faremos algumas mudanças) no canal Diffuse do segundo Slot.
É preciso usar o Gradient Ramp do canal Opacity para que a sincronia fique perfeita. Esse Gradient Ramp que estamos usando como base, vai da cor branca para a preta. Porém o Gradient Ramp que usaremos como emissor, deve ser apenas uma faixa branca, animada da esquerda pra direita acompanhando o tempo de animação do Gradient Ramp do canal Opacity. Para isso você deve fazer algumas modificações nas Flags do Gradient Ramp usado como emissor para que ele fique como mostra a imagem abaixo.
Observe como este segundo Gradient Ramp "percorre" o Teapot sincronizado com o Gradient Ramp usado como opacidade. Porém ele não muda a cor do Teapot. Você notará apenas uma estreita faixa percorrendo seu Teapot, é exatamente dessa faixa que as partículas serão emitidas.

6° - Agora precisamos configurar o Particle Flow. Para isso crie um PF Source como mostrei no tutorial anterior. Confira na imagem abaixo os controladores que você irá precisar.
7° - Agora vou explicar rapidamente como configurar cada controlador, baseado nas letras usadas na imagem abaixo.

a) Configuração da emissão de partículas. Note que como as partículas serão emitidas ao longo da animação, acompanhando o Gradient Ramp que usamos como emissor, devemos usar dessa vez a opção Rate e não Amount como no tutorial anterior.

b) Mais uma vez as partículas terão como base para seu posicionamento o Teapot. Atenção agora para o CheckBox "Density By Material", com a opção Grayscale selecionada. Nessa parte estamos "falando" para o Particle Flow que as partículas serão emitidas do material que criamos. Também é importante determinar qual será esse material. Isso é feito escolhendo o Mtl ID. Como o mapa que usei para ser o emissor está no segundo Slot do Multi/Sub-Material, com ID 2, coloquei o número 2 no Mtl ID, determinando assim qual será o meu material emissor.

c) Escolhi minha câmera, para que as partículas estejam sempre viradas para ela e determinei o tamanho das partículas.

d-e) É preciso colocar o mapeamento para que não de aquela mensagem de erro ao tentar renderizar algo que tenha uma imagem não mapeada na textura .

f) Mais uma vez adicionei vento na cena. A configuração de cada um vem logo à seguir, mas é importante que você teste e encontre a melhor configuração para a SUA cena.

g) Neste ponto usei a mesma cor básica que usei no Teapot, para que as partículas fiquem com a mesma cor, dando a impressão que o Teapot está realmente se desfazendo, como se fosse feito de areia ou algo do tipo.

h) Coloquei um controlador para deletar as partículas baseado no tempo de existência de cada partícula após a sua emissão. Isso é útil para deletar as partículas que já saíram do campo de visão de sua câmera e que, sem esse controlador, continuariam "voando" eternamente, deixando o render mais e mais pesado com o aumento dessas partículas soltas no espaço.

8° - A imagem abaixo mostra o posicionamento e a configuração dos dois Winds que usei na minha cena (identificados pelos números 1 e 2).

Pronto. Se você seguiu todos os passos, provavelmente terá um resultado bem próximo do vídeo à seguir. Espero ter ajudado, caso tenha alguma dúvida, basta entrar em contato comigo.

Como a qualidade do vídeo aqui não fica muito boa, coloquei o mesmo vídeo em mais dois lugares. Porém não ficou muito melhor, mas de qualquer forma aí vão os links:

http://s204.photobucket.com/albums/bb303/paulorfo/?action=view&current=teapot.flv


http://www.youtube.com/watch?v=tOBbXZflPu0

domingo, 10 de maio de 2009

Tutorial do Teapot de Areia - Versão 1.0

Estou postando o tutorial do Teapot de areia. Esse arquivo é um pouco antigo. Fiz ele com o 3DS Max 6 e o Particle Flow ToolBox 1.

Abaixo podemos observar o resultado desejado com este tutorial.


Antes de mais nada quero deixar claro que a técnica vista à seguir não é a melhor. Porém foi assim que eu fiz o vídeo que pode ser visto na postagem anterior. Em breve eu postarei uma técnica diferente e bem melhor para obter o mesmo resultado.

Se você vai seguir este tutorial é importante que já esteja familiarizado com o 3DS Max e caso já tenha se aventurado com o Particle Flow, será melhor ainda.

Vamos lá:

1° - Crie um Plane, um Teapot, posicione a câmera como preferir e nesse ponto já podemos adicionar alguma luz também. Para a iluminação eu usei o E-light (script) bem básico, apenas para ter sombra e mais contraste. Porém cada um deve setar sua iluminação de acordo com o resultado desejado e o render que usará. (Usei Scanline, bem simples, exatamente por estar preocupado mais com a simulação do que com imagens mais trabalhadas). Adicione também texturas e os devidos mapeamentos ao Plane e ao Teapot (no caso do Teapot é apenas para testar como ficarão as partículas, pois esse Teapot criado é apenas um guia para servir de emissor e não será renderizado ao final do processo).

2° - Crie um PF Source em qualquer ponto de sua cena. Ele pode ser encontrado no Menu Geometry/Particle Systems/PF Source.

3° - Clique em Particle View, para abrir a tela onde controlaremos as opções das partículas.

4° - Você verá a seguinte tela, com essa configuração Default.

5° - Apague os seguintes operadores marcados (você não precisará deles ou serão substituídos por outros). OBS: Infelizmente esqueci-me de marcar o operador Rotation, ele também deve ser deletado. Como só percebi isso na metade do tutorial, resolvi colocar apenas essa observação e contar com a compreensão de todos, dessa forma não preciso alterar todas as imagens, agilizando a publicação deste tutorial. Obrigado.

6° - A seguir adicione os operadores em destaque na próxima imagem.

7° - Vamos agora a uma breve explicação de alguns operadores importantes, começando pelo Cache. Vamos setar este operador para que as partículas na Viewport não sejam atualizadas a cada modificação feita, tornando o trabalho mais lento. Esse operador proporcionará um controle de quando atualizar essas partículas, de acordo com a vontade de quem estiver usando o programa, dessa forma podemos alterar vários parâmetros e só depois de tudo devidamente setado atualizar para ver o resultado. Para isso eu mudei a opção Update que vem por Default como Always para Manually. Com essa mudança, sempre que quiser atualizar suas partículas na Viewport, basta clicar em Update.

8° - Birth: Deixe o Emit Start em zero assim como o Emit Stop. Dessa forma o Particle Flow iniciará a cena com todas as partículas. Teste quantas partículas serão necessárias na sua cena para cobrir o Teapot de forma que ele pareça sólido. Na minha cena foi preciso 150.000 partículas... Nessa hora que os problemas começam caso você não tenha uma boa máquina. Porém não se desespere. Como eu disse no post anterior, essa não é a melhor forma de se fazer isso, mas foi a forma que eu fiz quando comecei a aprender. Depois postarei um tutorial um pouco mais "inteligente" e "leve" para recriar esse mesmo efeito.

9° - Position Object: Na opção Emiter Objects, clique em By List e selecione o seu Teapot. Isso fará com que as partículas sejam emitidas do objeto escolhido e não do PF Source.

10° - Shape Facing: Na opção Look At Camera/Object, clique no botão None e após isso clique na sua câmera, fazendo com que as partículas fiquem todas viradas de frente para a câmera. Isso deve ser feito porque usaremos partículas em forma de plane, pois assim fica mais leve e fácil de preencher todo o objeto.

11° - Material Static: Arraste o Slot do material criado para o Teapot sob o botão None e faça essa cópia como Instance, dessa forma se futuramente você resolver alterar algo no seu material, ele mudará no operador automaticamente.

12° - Mapping Object: Na opção Mapping From Objects, clique em By List e adicione seu Teapot. Lembre se conferir se na opção Mapping Channels você está usando o mesmo Map Channel usado no mapeamento do Teapot. Isso é muito importante para que as partículas sejam mapeadas de forma correta.

13° - Display: Mude a opção Type, por Default Ticks, para Geometry. Após isso você já pode atualizar as partículas no Cache e ver como está ficando o resultado. Renderize e veja se precisa de ajustes de luz, material, mapeamento, mais partículas, enfim.

Agora que já temos um Teapot formado inteiramente por partículas, vamos à segunda parte onde faremos essas partículas saírem "voando", dando a impressão que o Teapot está se desfazendo.

14° - Para isso eu criei 3 Winds, um Drag e um SDeflector. Veja nas imagens abaixo a disposição e configuração de cada um desses elementos.

15° - Selecione o SDeflector que está logo acima do Teapot e anime-o descendo e passando pelo Teapot. É o SDeflector que desencadeará a próxima ação que é fazer com que as partículas se soltem do Teapot e saiam voando. Por isso preste bastante atenção para ver se o SDeflector está passando por todo o Teapot, caso contrário nem todas as partículas se soltarão.

Só isso não basta, precisamos "falar" para o Particle Flow que todas essas forças estão aí na cena e como ele irá interagir com elas. Outra coisa que eu fiz na minha cena, mas que é opcional, é determinar um momento para as partículas sumirem após saírem voando.

16° - Selecione os controladores Display, Mapping Object, Material Static e Shape Facing. Copie esses controladores e cole como Instance, criando um novo evento. Copiei esses controladores como Instance, pois essas características não irão mudar quando as partículas se soltarem do Teapot.

17° - Para ligarmos esse novo evento ao anterior, precisamos colocar o controlador Collision no evento anterior, já adicione o seu SDeflector ao Collision (isso significa que quando o SDeflector colidir com as partículas, elas reagirão da maneira determinada no próximo evento).

No evento seguinte à colisão, adicione o controlador Force (adicione ao Force os 3 Winds e o Drag) e adicione também o controlador Delete. Vamos configurar este ultimo controlador para deletar as partículas por Age. Veja como fiz na próxima imagem. Encontre os melhores valores para a sua cena.

Pronto! Agora é só atualizar as partículas e ver se tudo está como você deseja, caso contrário basta ir ajustando os parâmetros necessários de acordo com sua vontade. Logo postarei mais um tutorial para essa mesma cena, só que dessa vez usarei uma técnica que deixará o arquivo mais leve e com uma quantidade muito menor de partículas para obtermos o mesmo resultado.

Espero que tenha sido útil, qualquer dúvida é só entrar em contato.

Obrigado.