S8.A1.
5.3. Smoke.
Para utilizar o simulador Smoke, seleccione um objecto do tipo
mesh, active o contexto Physics da janela de propriedades, e pressione o botão Smoke.
Como o nome indica, Smoke é utilizado para simular o comportamento típico de nuvens de fumo, mas,
em geral, pode ser convenientemente utilizado para simular a dinâmica de qualquer distribuição
tridimensional de partículas, quando devidamente parametrizado, nomeadamente, ao nível da
caracterização de materiais.
Ao activar Smoke, é criado o painel Smoke, que permite caracterizar o papel que a
malha desempenha no simulador de três modos diferentes: Domain, Flow, ou Collision.
Toda a simulação Smoke tem obrigatoriamente:
• Uma malha do tipo Domain, que define o volume do espaço 3D em que a simulação é calculada.
• Uma malha do tipo Flow, que determina o volume, ou superfície, que emite as partículas.
Ao especificar o objecto Flow, é automaticamente criado um sistema de partículas associado a esse objecto.
Opcionalmente, poderão existir em cena:
• Uma ou mais malhas do tipo Collision, com as quais as partículas terão interacção.
À malha Domain deverá estar associado um material do tipo Volume com uma textura do tipo Voxel
Data, de modo a que a aparência do fumo resulte do envolvimento por Voxels (volumetric pixels)
de cada uma das partículas do sistema
Na figura, em que o emissor é uma malha Suzy, pretendeu-se evidenciar a malha de voxels.
Note os pequenos cubos cinzentos, que simulam o preenchimento do espaço 3D com partículas de fumo.
5.3.1. Painéis.
5.3.1.1. Domain.
A malha Domain define o volume do espaço 3D em que a simulação é calculada.
5.3.1.1.1. Smoke.
Ao activar Domain o painel Smoke é expandido, passando a
conter os conjunto de parâmetros que em seguida se
descrevem.
• Resolution Divisions: Nível de detalhe da simulação. O valor padrão é
32,
permitindo uma simulação relativamente rápida (alguns segundos), embora com
baixo nível de detalhe, não sendo conveniente alterar significativamente este
valor na fase de ensaios. Ao aumento do nível de resolução está associado um
substancial aumento do tempo de simulação, sendo que, embora dependendo dos
recursos disponíveis, não é aconselhável uma resolução
superior a 124.
• Time Scale: Permite alterar a escala de tempo da simulação.
• Border Collisions: Permite determinar o comportamento das partículas
de fumo na fronteira do domínio de simulação, sendo possível seleccionar uma de três opções:
• Collide All: O fumo é reflectido pelas paredes do domínio, mantendo-se inteiramente no seu interior.
• Vertically Open: O fumo não colide com as paredes superior e inferior do domínio, desaparecendo quando entra em seu contacto.
• Open: O fumo não colide com qualquer das paredes do domínio, desaparecendo quando entra em seu contacto.
• Density: Determina em que medida a densidade do fumo (nº de partículas) altera a sua velocidade.
• Temperature: Determina a velocidade de ascensão do fumo.
• Vorticity: Determina o nível de turbulência do fumo.
• Dissolve: Quando activo, provoca a dissipação, ao logo do tempo, do fumo que foi emitido.
• Time: Estando Dissolve activo, permite alterar a velocidade de dissipação do fumo.
Note que domínio de simulação é determinado pela bounding box do objecto Domain e não pela forma
da malha, isto é, pelo posicionamento específico dos seus vértices.
Pode ver na figura um exemplo em que o objecto Domain é uma UVSphere, e em que o fumo vai ocupando
progressivamente todo o domínio de simulação, evidenciando a forma do cubo que constitui a bounding box
da UVSphere.
Não há por isso qualquer vantagem em utilizar como Domain qualquer outra malha que não seja uma malha
do tipo Cube, que é bastante mais fácil de escalar à dimensão desejada.
Note o escalamento do objecto Domain deve ser feito em Modo Objecto. O escalamento em modo edição
conduz a efeitos não desejáveis no comportamento das partículas de fumo.
Note ainda que apenas são renderizadas as partículas que estão no interior da malha que constitui o
domínio de simulação.
Voltando ao exemplo anterior, saliente-se que, embora o fumo ocupe o cubo
correspondente à bounding box da UVSphere, apenas serão renderizadas as partículas que se encontrem
no interior da esfera.
Esta poderá ser uma técnica a utilizar quando se pretende dar ao fumo uma forma específica,
embora seja mais comum a utilização de malhas Collision.
5.3.1.1.2. Smoke High Resolution.
Quando activo, o painel Smoke High Resolution permite emular aproximadamente a dinâmica das partículas
em muito mais alta resolução do que a especificada em Resolution Divisions do painel Smoke, sem que
seja necessário alterar esse parâmetro e proceder ao cálculo dessa dinâmica, o que resultaria num
processo de simulação bastante mais demorado.
• Resolution Divisions: Número de subdivisões efectuadas, sobre a posição das
partículas calculadas na dinâmica de baixa resolução.
• Smooth Emitter: Permite evitar o surgimento de blocos de partículas, suavizando a
forma do emissor.
• Show High Resolution: Mostra, na janela 3D, o aumento de descriminação da emulação
de alta resolução.
• Noise Method: Método de geração da pertubação (ruído) conducente à emulação de alta
resolução, com opções Wavelet e FFT.
• Strength: Nível de perturbação.
5.3.1.1.3. Smoke Cache.
Uma vez definida a malha Domain e pelo menos uma malha Flow, a simulação pode ser pré-visualizada na
janela 3D. No entanto, para proceder à renderiação é necessário que os dados da simulação sejam
previamente gravados em disco, e, para que isso seja possível, é necessário salvar previamente
o ficheiro *.blend correspondente.
Enquanto o ficheiro *.blend não for salvo, o painel Smoke Cache está
desactivado, não sendo possível o acesso a nenhuma das suas funcionalidades.
Após salvar o ficheiro ficarão disponíveis os diversos parâmetros
• Compression: Nível de compressão dos dados, Light/Heavy, associado a um inevitável compromisso
entre velocidade e espaço de armazenamento.
Na caixa seguinte, o stack de caches, são mostradas as simulações disponíveis.
• External: Se activo, permite carregar simulações previamente calculadas e gravadas em disco.
• File Name: Prefixo do nome dos ficheiros em que a simulação será gravada.
A especificação não é obrigatória, sendo apenas necessária quando se pretender testar
diversas configurações
• Start/End: Primeira e última das frames da simulação.
• Bake: Quando pressionado, desencadeia o processo de cálculo e registo em disco dos
dados da simulação.
Note que após o registo em disco dos dados da simulação os parâmetros do painel Smoke deixam de
estar acessíveis.
Após o registo em disco, o botão Bake dá lugar ao botão Free Bake. Para redefinir os
parâmetros de Domain será necessário libertar os dados da simulação.
• Free Bake: Liberta os dados da simulação e permite que uma nova simulação seja parametrizada e
calculada.
Por si só, a activação de Free Bake não elimina do disco os ficheiros correspondentes aos dados da
simulação. Tal só acontece após alteração de um dos parâmetros do painel Smoke.
• Bake All Dynamics /Free All Bakes: Regista em disco os dados de todos os sistemas existentes em
cena.
• Calculate To Frame/ Update All To Frame: Calcula/ Regista os dados da simulação apenas até à
frame activa.
• Current Cache to Bake: Regista em disco os dados da simulação existentes em RAM.
5.3.1.1.4. Smoke Groups.
Caso exista mais do que uma malha Flow no interior do domínio se simulação, e caso um subconjunto dessas
malhas tenha sido associada num Grupo, a célula Flow Group permite especificar as
malhas desse grupo como as únicas a participar na simulação.
De modo idêntico, a célula Collision Group permite especificar qual o grupo de malhas que participa na
simulação como objecto deflector de partículas.
Recorde que a criação de um grupo é feita no painel Groups do contexto Object
da janela de propriedades.
5.3.1.1.5. Smoke Field Weights.
O painel Smoke Field Weights permite controlar a influência que as diversas forças eventualmente existentes em cena
exercem sobre as partículas de fumo.
O painel é idêntico aos painéis Field Weights já descritos anteriormente.
Recorde que, na configuração padrão, a gravidade é a única força previamente definida como não nula.
5.3.1.2. Flow.
Para que tenha participação no processo de simulação, a malha Flow deve estar contida dentro do dominio de simulação, definido pela bounding box da malha Domain.
Ao activar Flow o painel Smoke é expandido, passando a conter os conjunto de parâmetros que em seguida se descrevem.
É automaticamente associado à malha Flow um sistemas de partículas, com nome padrão SmokeParticles, cujas
características poderão ser redefinidas no contexto Particles da janela de propriedades.
É em torno das partículas emitidas por este sistema que se formarão os voxels correspondentes às partículas de fumo.
• Outflow: Elimina o fumo da simulação.
• Particle System: Nome do sistema de partículas utilizado na simulação.
• Initial Velocity: Quando activo, as partículas de fumo passam a ter em atenção a velocidade inicial
definida para as partículas do sistema.
• Multiplier: Se Initial Velocity estiver activo, permite especificar a influência da velocidade inicial
das partículas do sistemas sobre a velocidade das partículas de fumo.
• Absolute Density : Quando activo, permite especificar a densidade das partículas de fumo.
• Density: Factor de especificação da densidade do fumo.
• Temp. Diff.: Controla a velocidade de ascensão das partículas de fumo.
5.3.1.3. Collision.
Poderão interagir com as partículas de fumo todas as malhas existentes no interior do domínio
de simulação a que seja associado o modificador Collision.
5.3.2. Exemplo.
5.3.2.1 Dados da Simulação.
Abra o Blender.
O cubo padrão encontra-se já seleccionado. Vamos utilizá-lo como domínio de simulação.
Na janela de propriedades, active o contexto Physics, pressione o botão
Smoke, e, no
painel Smoke, seleccione Domain.
Note que apesar do modo de sombreamento na janela 3D permanecer em Solid, o cubo passou a
ser representado em Wireframe, para que seja possível ver o que se passa no interior do
domínio de simulação.
Active a tabela de propriedades da janela 3D, [N], e, no painel Item, dê ao cubo um nome
sugestivo, por exemplo SmokeDomain.
Vamos agora criar uma malha emissora de partículas. Note que esta deve estar contida no domínio de simulação.
Com o cubo seleccionado, centre o cursor 3D, [Shift] + [S] > Cursor to Selected,
insira um plano, [Shift] + [A] > Mesh > Plane, e escale-o,
[S] > 0.2.
Alternativamente, pode escalar o domínio de simulação. Note que, se o fizer, dever escalar
o cubo em modo objecto, e não em modo edição.
Para evitar tempos de simulação desnecessariamente elevados, o domínio de simulação deve
ser o mais pequeno que as necessidades de enquadramento da animação permitirem.
No painel Dimensions do contexto render da janela de propriedades, altere Resolution
para 1080x1080.
Seleccione a câmara, [RMB], passe a modo Front Ortho, [1], e faça o enquadramento do cubo, [Ctrl] + [Alt] + [0], [Shift] + [F].
Seleccione o plano, [RMB], e desloque-o para a zona inferior do domínio de simulação, [G] > [Z].
No painel Item da tabela de propriedades da janela 3D, mude o nome do plano para SmokeFlow.
Com o plano seleccionado, active o contexto Physics, pressione o botão Smoke, e,
no painel Smoke, seleccione Flow.
Note que foi automaticamente associado ao plano um sistema de partículas com
o nome padrão SmokeParticles.
Proceda à pré-visualização da animação, [Alt]+[A].
Pode ver uma coluna de fumo que se eleva a partir do plano.
A dinâmica observada é, naturalmente, a resultante das configurações padrão dos
painéis Smoke da malha Domain e da malha Flow, e dos diversos painéis do sistema
de partículas SmokeParticles, que poderá ver seleccionando o plano e activando
o contexto Particles da janela de propriedades.
Note que da primeira vez que observa a pré-animação o processo é mais demorado,
em resultado de estar a ser calculada a dinâmica da simulação.
Feita pela primeira vez a pré-animação, os dados relativos à simulação passam
a estar disponíveis em RAM.
Se seleccionar a malha Flow, pode ver que na base
da janela Timeline surgiu uma linha vermelha com um conjunto de pequenos quadrados
vermelhos equiespaçados.
Seleccione a linha verde vertical, [RMB], e procure pré-visualizar a animação
movendo o rato. Pode ver que, embora as partículas estejam a ser geradas pelo
sistema SmokeParticles, não estão a ser gerados os Voxels associados a cada
uma delas, e sua respectiva dinâmica.
Enquanto a simulação apenas existir em
RAM, a sua pré-visualização apenas é possível na sequência completa da primeira
à última frame da animação.
Seleccione a malha Domain. Pode ver que na base da janela Timeline não existe
nenhuma linha de coloração diferente do fundo da janela.
Com a malha Domain seleccionada, active o contexto Physics e expanda o painel
Smoke Cache.
Pode ver que os parâmetros da janela não são acessíveis. Para que tal aconteça, é necessário salvar previamente o ficheiro.
Note, por outro lado, que os parâmetros do painel Smoke estão disponíveis, o que
significa que pode alterar os parâmetros da simulação.
Salve o ficheiro.
Pode ver os parâmetros do painel Smoke Cache passaram a estar disponíveis.
Pressione, por exemplo, o botão Current Cache to Bake.
Será criada na directoria do ficheiro NomedoFicheiro.blend uma pasta com o nome blendcache_NomedoFicheiro. De momento a directoria encontra-se vazia.
Proceda à pré-visualização da animação, [Alt]+[A].
Abra a directoria. Pode ver um conjunto de ficheiro contendo os dados da simulação,
um por cada uma das frames.
Os ficheiros têm extensão bphys, e um nome cujo prefixo
é variável, pode, aliás, ser definido pelo utilizador na célula
File Name, e cujo sufixo é número da frame a que os dados correspondem.
Seleccione a malha Domain. Pode ver que na base da janela Timeline existe agora
uma linha cinzenta, indicativa de que os dados da simulação estão registados em
disco.
Seleccione a linha verde vertical e pré-visualize a animação movendo o rato. Como
vê, é possível ver qualquer das frames da animação por qualquer ordem.
Note que os parâmetros do painel Smoke deixaram de estar acessíveis, e que no painel
Smoke Cache o botão Bake deu lugar ao botão Free Bake.
Como se disse anteriormente, se pressionar o botão Free Bake liberta os dados da
simulação e permite que uma nova simulação seja parametrizada e calculada.
Recorde também que os ficheiros em discos não são eliminados
quando se activa o botão Free Bake, mas apenas quando, após a sua activação, é alterados
um dos parâmetros do painel Domain.
Para recalcular e gravar em disco uma nova simulação pressione o botão Bake.
O processo de cálculo e gravação dos dados pode ser extremamente demorado. Enquanto
decorre, surge no ecrã um pequeno número a branco sobre fundo negro, indicando a
percentagem da simulação que já foi registada.
Em qualquer altura, pode abortar o processo de cálculo e registo de dados da
simulação, pressionando [Esc].
Se optar por activar Update All to Frame, em vez de Bake, o pequeno número a branco
sobre fundo negro que surge no ecrã é indicativo da frame que está a ser calculada,
e não da percentagem da simulação que já foi registada.
5.3.2.2 Materiais.
Embora os dados padrão do sistema de partículas que é automaticamente associado
à malha Flow sejam suficientemente bons para a simular o comportamento do fumo,
o mesmo não se passa relativamente a uma possível configuração
automática do material associado à malha Domain.
Se renderizar a cena, [F12], pode ver uma imagem completamente negra. Tal deve-se
ao facto de a câmara estar a enquadrar uma face não iluminada do cubo que está a
servir de malha definidora do domínio de simulação.
Seleccione a fonte presente em cena e, no contexto Object Data da janela de
propriedades, altere o tipo de fonte para Sun. Para além disso,
reposicione convenientemente a fonte.
Se renderizar a cena pode ver um rectângulo cinzento claro correspondente a
uma face do cubo SmokeDomain, mas agora iluminada.
Seleccione o cubo SmokeDomain e active o contexto Materials da
janela de propriedades. Seleccione Volume como tipo de material e,
no painel Density, faça a densidade base do material que ocupa o volume
igual a zero, Density : 0.0.
A densidade será controlada pela textura que vamos assiciar ao material.
Active o contexto Textures da janela de propriedades. Dê um nome
sugestivo à textura, por exemplo, DensityTex, ou
SmokeTex.
De entre os tipos de textura seleccione Voxel Data.
No painel Voxel Data, mantenha as opções padrão. Na célula Domain Object
seleccione o nome da malha a que está associado o domínio de simulação,
no caso, SmokeDomain.
No painel Influence, desactive Emission (Emission Color está activo
na configuração padrão) e active Density.
Ficam assim expostos os procedimentos básicos necessários numa simulação
Smoke, tanto no que se refere à obtenção dos dados e seu registo,
como na sua posterior utilização na texturização do material.
Se proceder à renderização de um dos instantes da simulação, obterá uma imagem semelhante à que se mostra na figura.
Naturalmente que muito há ainda a fazer, quer na alteração dos parâmetros padrão do painel Smoke, quer da malha Domain, quer da malha Flow, dos inúmeros parâmetros dos diversos painéis do sistema de partículas associado à malha Flow, e ainda dos parâmetros do material e texturas da malha Domain.
5.3.3. Smoke Tutorial 1.
5.3.3.1. Dados da Simulação.
Abra o Blender.
O cubo padrão encontra-se já seleccionado. Vamos utilizá-lo como domínio de simulação.
Active a tabela de propriedades da janela 3D, [N], e, no painel Item, dê ao cubo um nome sugestivo, por exemplo, SmokeDomain.
Na janela de propriedades, active o contexto Physics, pressione o botão Smoke, e, no painel Smoke, seleccione Domain.
Ainda no painel Smoke, especifique Temp. Diff: 0.2, Vorticity: 0.1, active
Dissolve, e especifique Time: 10.
Note que o painel Smoke Cache não está activo.
Salve o ficheiro, por exemplo, com o nome SmokeTutorial1.
No painel Smoke Cache, dê à cache o nome S32_SHR0, indicativo do número de sudivisões de baixa e alta resolução.
Active o contexto Render da janela de propriedades e, no painel
Dimensions, especifique Resolution 1280 x 720.
Vamos agora criar uma malha emissora de partículas. Note que esta deve estar contida no domínio de simulação.
Seleccione o cubo, [RMB], e coloque o cursor 3D sobre a sua origem, [Shift]+[S] > Cursor to Selected.
Insira um plano, [Shift]+[A] > Mesh > Plane, e reduza a sua dimensão, [S] > 0.15.
Passe a Front Ortho, [1] > [5] , e desloque o plano até próximo da face inferior do cubo, [G] > [Z].
Seleccione a câmara, [RMB], enquadre-a com a vista da janela 3D,
[Ctrl]+[Alt]+[0], e
desloque-a, [Shift]+[F], até que o cubo ocupe completamente
o enquadramento da câmara.
Seleccione o plano, [RMB], e, por exemplo, no painel Item da tabela de
propriedades da janela 3D, [N], dê-lhe um nome sugestivo, por exemplo, SmokeFlow.
Active o contexto Physics da janela de propriedades, pressione o botão Smoke, e, no painel Smoke, seleccione Flow.
Altere o valor de Temp. Diff. para 0.4.
Note que foi automaticamente associado ao plano um sistema de partículas
com o nome padrão SmokeParticles.
Com o plano seleccionado, active o contexto Particles da janela de propriedades.
No painel Emission, especifique Amount 10000 e active
Random no modo de
emissão pelas faces da malha.
No painel Render, desactive Emitter.
No painel Field Weights, elimine a influência da gravidade,
Gravity: 0.0.
Proceda à pré-visualização da animação, [Alt]+[A].
No painel Cache, active Disk Cache.
Salve o ficheiro.
5.3.3.2. Materiais.
Seleccione o cubo SmokeDomain e active o contexto Materials
da janela de propriedades.
Seleccione Volume como tipo de material e, no painel
Density,
faça a densidade base do material que ocupa o volume igual a zero,
Density : 0.0, e altere o seu factor de proporcionalidade,
Density Scale: 4.0.
No painel Shading, especifique Emission: 40.0.
Active o contexto Textures da janela de propriedades.
Dê um nome sugestivo à textura, por exemplo, SmokeDensity.
De entre os tipos de textura seleccione Voxel Data.
No painel Voxel Data, na célula Domain Object, seleccione o
nome da malha a que está associado o domínio de simulação, no caso, SmokeDomain.
No painel Influence, desactive Emission Color, e active
Density.
No stack de texturas, active a segunda textura e pressione o botão
New, de modo a associar uma nova textura ao material.
Dê à textura o nome SmokeColor, e, de entre os tipos de textura, seleccione
Voxel Data.
No painel Voxel Data, na célula Domain Object, seleccione o nome da malha
a que está associado o domínio de simulação, no caso, SmokeDomain.
Na célula Source, seleccione Heat.
No painel Influence, active Density, e active
Emission.
Na célula Blend, seleccione Multiply.
No painel Colors, active Ramp, e defina 4 rampas de cor especificando as cores limite:
Cor 0: Pos: 0.496; RGBA: [1.0 0.0 0.0 0.0].
Cor 1: Pos: 0.520; RGBA: [0.65 0.16 0.0 0.5].
Cor 2: Pos: 0.526; RGBA: [0.0 0.0 0.125 0.33].
Cor 3: Pos: 1.000; RGBA[1.0 1.0 1.0 0.0].
Active o contexto World da janela de propriedades, e, no painel
World, especifique Horizon Color: RGB [0.0 0.0 0.0].
Avance para a frame 150 e renderize, [F12].
Deve obter uma imagem semelhante à figura.
Como decerto notou, a renderização é extremamente rápida, no entanto, como pode ver pela imagem,
o nível de ruído é significativo.
Seleccione o cubo SmokeDomain, active o contexto Material do da janela de propriedades,
e, no painel Integration, especifique Step Size : 0.01.
Avance para a frame 150 e renderize, [F12].
Deve obter uma imagem semelhante à figura.
Como deve ter notado, o tempo renderização aumentou substancialmente. Durante a fase de testes é aconselhável a utilização de um passo de integração elevado, de modo a reduzir o tempo de renderização.
No painel Output do contexto Render da janela de propriedades, seleccione o codec vídeo adequado, e especifique o nome do ficheiro.
Finalmente, crie o vídeo, pressionando [Ctrl] + [F12].