animação foto-realista de fluidos utilizando métodos lagrangeanos
TRANSCRIPT
UNIVERSIDADE ESTACIO DE SA
JOAO VICENTE PIRES DOS REIS FILHO
ANIMACAO FOTO-REALISTA DEFLUIDOS UTILIZANDO
METODOS LAGRANGEANOS
Petropolis
2010
JOAO VICENTE PIRES DOS REIS FILHO
ANIMACAO FOTO-REALISTA DEFLUIDOS UTILIZANDO
METODOS LAGRANGEANOS
Monografia apresentada a Universidade Estaciode Sa como requisito parcial para a obtencao dograu de Bacharel em Sistemas de Informacao.
ORIENTADOR: Prof. D.Sc. Rodrigo Luis de Souza da Silva
Petropolis
2010
JOAO VICENTE PIRES DOS REIS FILHO
ANIMACAO FOTO-REALISTA DE FLUIDOS UTILIZANDOMETODOS LAGRANGEANOS
Monografia apresentada a Universidade Estaciode Sa como requisito parcial para a obtencao dograu de Bacharel em Sistemas de Informacao.
Aprovada em 26 de fevereiro de 2010.
BANCA EXAMINADORA
Prof. D.Sc. Rodrigo Luis de Souza da SilvaUniversidade Federal de Juiz de Fora
Prof. M.Sc. Rogerio Albuquerque de AlmeidaUniversidade Estacio de Sa
Dedico este trabalho a minha famılia.
★★★
Agradecimentos
Primeiramente, agradeco a Deus por este dia, aqui concluindo mais uma etapa de minhavida academica.
Aos meus orientadores professores Rodrigo Luis de Souza da Silva e Gilson AntonioGiraldi por toda paciencia, tolerancia, forca e principalmente pelos conhecimentos e exem-plos cientıficos e matematicos. As sabias sugestoes que me deram ao longo do caminho quetrilhei, fizeram com que esse se tornasse mais suave e melhor desenvolvido.
Aos meus pais, nao so pelo carinho e suporte incondicionais, mas tambem pela intuicaodo meu pai ao comprar nosso primeiro computador, quando eu ainda era crianca, o quedespertou em mim a curiosidade pela informatica.
Aos meus verdadeiros amigos, Ana, Andre, Fernando e Germano pelo companheirismo,lealdade, e por serem as pessoas sinceras com quem eu sempre posso contar.
A todos os demais amigos, familiares e professores que contribuıram de maneira diretaou indireta, que porventura nao foram citados, meus sinceros agradecimentos.
Resumo
Neste trabalho, sera apresentado um software para animacao computacional de fluidos.
Inicialmente, sera discutido o modelo matematico utilizado na simulacao. Em seguida,
serao mostrados os dois modos de utilizacao do aplicativo criado: um em tempo real
para experimentacao dos parametros de animacao e outro em modo off-line com o obje-
tivo de alcancar um maior nıvel de realismo grafico. Aspectos de engenharia de software
tambem serao discutidos, tais como a metodologia de desenvolvimento utilizada e a etapa
de modelagem. Finalmente, serao apresentadas as conclusoes descrevendo a usabilidade e
potencialidade do aplicativo criado para geracao de animacao de fluidos.
Palavras-chave: Dinamica de Fluidos; Visualizacao Cientıfica; Renderizacao.
Abstract
In this work, a software for computational fluid animation will be presented. First, the
mathematical model used in the simulation will be discussed. Then, there will be shown
the two modes of utilization of the created software application: a real-time mode which
allows experimentation with the animation parameters and an off-line mode which aims
to achieve a greater level of graphics realism. Software engineering aspects will also be
discussed, such as the development methodology and the modeling phase. Finally, the
conclusions are shown focusing on the usability and potential of the application for fluid
animations.
Keywords: Fluid Dynamics; Scientific Visualization; Rendering.
Sumario
1 Introducao 10
2 Trabalhos Relacionados 13
3 Metodo de Simulacao 163.1 Smoothed Particle Hydrodynamics (SPH) . . . . . . . . . . . . . . . . . . . 183.2 Detalhes de Implementacao . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4 Metodo de Renderizacao 244.1 Renderizacao em Tempo Real . . . . . . . . . . . . . . . . . . . . . . . . . 24
4.1.1 Interface Grafica com Usuario . . . . . . . . . . . . . . . . . . . . . 254.1.2 Modos de Visualizacao do Fluido . . . . . . . . . . . . . . . . . . . 264.1.3 Visualizando Dados do Modelo do Fluido . . . . . . . . . . . . . . . 27
4.2 Renderizacao em Off-line . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
5 Metodologia de Desenvolvimento do Aplicativo 305.1 Modelagem do Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
5.1.1 Diagrama de Casos de Uso . . . . . . . . . . . . . . . . . . . . . . . 315.1.2 Diagrama de Classes . . . . . . . . . . . . . . . . . . . . . . . . . . 345.1.3 Diagramas de Sequencia . . . . . . . . . . . . . . . . . . . . . . . . 39
6 Resultados 46
7 Conclusoes e Trabalhos Futuros 51
Referencias 52
Lista de Ilustracoes
3.1 Malha regular utilizada para acelerar os calculos. . . . . . . . . . . . . . . 20
4.1 Interface Grafica com Usuario e Painel de Controle. . . . . . . . . . . . . . 254.2 Diversos Modos de Visualizacao do Fluido. . . . . . . . . . . . . . . . . . . 264.3 Dados do Modelo do Fluido sendo visualizados. . . . . . . . . . . . . . . . 274.4 Etapa de tracado do raio. . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
5.1 Diagrama de Casos de Uso. . . . . . . . . . . . . . . . . . . . . . . . . . . 315.2 Diagrama de Classes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345.3 Diagrama de Sequencia: Inicializacao da Aplicacao. . . . . . . . . . . . . . 405.4 Diagrama de Sequencia: Inicializacao do Fluido. . . . . . . . . . . . . . . . 415.5 Diagrama de Sequencia: Atualizacao do Fluido. . . . . . . . . . . . . . . . 435.6 Diagrama de Sequencia: Renderizacao em Off-line. . . . . . . . . . . . . . 45
6.1 Velocidade inicial das partıculas (em vermelho). . . . . . . . . . . . . . . . 476.2 Sequencia de imagens do primeiro exemplo de animacao. Os tempos estao
marcados em segundos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486.3 Sequencia de imagens do segundo exemplo de animacao. Os tempos estao
marcados em segundos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496.4 Sequencia de imagens do terceiro exemplo de animacao. Os tempos estao
marcados em segundos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Capıtulo 1
Introducao
Nas ultimas tres decadas, tecnicas e modelos em dinamica de fluidos computacional (DFC)
vem sendo aplicados com sucesso em computacao grafica e geracao de efeitos visuais. A
animacao computacional de fluidos e uma sub-area da Modelagem Baseada em Fısica
(Physics Based Modeling). Nesta area, um grande desafio vem da complexidade do com-
portamento do fluido, que e regido a partir da intrincada interacao de varios fenomenos
como a conveccao, difusao, turbulencia e tensao superficial [23]. Alem disso, a animacao
computacional de fluidos e um campo multidisciplinar, ou seja, nao exige apenas conheci-
mentos sobre a fısica dos fenomenos, mas tambem sobre computacao grafica e visualizacao
cientıfica [39, 11].
As pesquisas em animacao de fluidos se dividem basicamente em tres etapas [39].
Primeiramente, temos a busca de novos modelos em DFC que sejam mais eficientes do
ponto de vista da computacao grafica. Esta etapa envolve tanto a pesquisa de novos mo-
delos fısicos quanto o ajuste de modelos ja conhecidos, sem perder de vista o fato de que o
objetivo final e a geracao de efeitos visuais, e nao a descricao de fenomenos naturais [7, 11].
Uma vez resolvidas numericamente as equacoes de fluidos, passa-se a fase de renderi-
zacao, onde tecnicas de computacao grafica sao aplicadas sobre os campos gerados, com o
objetivo de criar efeitos visuais, tais como transparencia, imagens refletidas na superfıcie
de um lıquido, ou mesmo, efeitos especiais que incluem deformacao de paisagens, incendios,
10
CAPITULO 1. INTRODUCAO 11
etc [17, 27, 18, 35].
Finalmente, as tecnicas adotadas devem ser incorporadas a um software, com inter-
faces graficas convenientes, o qual permita o uso destes recursos (modelos de fluidos e
computacao grafica) por artistas graficos e animadores (ver [38], como exemplo).
Neste trabalho, para a simulacao e modelagem dos fluidos foi utilizado o metodo SPH
(Smoothed Particle Hydrodynamics), juntamente com as equacoes de Navier-Stokes [23, 11].
O SPH foi escolhido devido suas vantagens, como por exemplo o fato de nao depender de
uma malha tridimensional [3] previamente definida. Isto permite criar cenas dinamicas,
com fronteiras variaveis e novos objetos que entram na cena a medida que esta se desen-
volve, sem um custo extra de regerar a malha sempre que tais alteracoes ocorrem.
Foi construıdo um software que desempenha duas funcoes. Primeiro, oferece um modo
de simulacao com renderizacao em tempo real, que permite a realizacao de testes e ajustes
dos diversos parametros numericos e de modelagem dos fluidos, como a pressao, viscosidade,
entre outros. Com isso, os artistas graficos serao capazes de fazer os ajustes necessarios
para obter a animacao que desejarem.
A renderizacao em tempo real e baseada em metodos tradicionais de scanline rendering
e em tecnicas simplificadas [3]. Por exemplo, as partıculas do fluido sao representadas
por pequenas esferas coloridas. Tambem e possıvel a visualizacao de dados numericos
da simulacao, tais como o gradiente de pressao, velocidade e aceleracao das partıculas,
representados por pequenos vetores coloridos em funcao da intensidade de cada campo.
Campos escalares (densidade, modulo da velocidade, etc.) sao visualizados utilizando-se
uma escala de cores.
A segunda funcao e um modo de renderizacao em off-line que utiliza o PBRT (Physically-
Based Ray Tracer); uma biblioteca baseada em fısica para renderizacao foto-realista. Neste
caso, sao utilizadas tecnicas baseadas em ray-tracing, que e um metodo que simula o tra-
jeto que os raios de luz percorrem desde as fontes luminosas, passando pelas reflexoes e
refracoes nos diversos objetos da cena, ate chegar a lente da camera virtual. Apesar do seu
alto custo computacional, essas tecnicas sao capazes de criar imagens foto-realistas com
maior grau de detalhamento [27].
CAPITULO 1. INTRODUCAO 12
Para diminuir o custo de processamento da renderizacao em off-line e melhor utilizar os
recursos computacionais disponıveis atualmente, foram utilizadas tecnicas de multithreading
para possibilitar a renderizacao de varios quadros da animacao em paralelo, utilizando to-
dos os nucleos de processamento oferecidos pelos processadores atuais [13].
Este trabalho esta estruturado como segue. No capıtulo 2 e feita uma breve revisao
sobre alguns trabalhos relacionados. Em seguida apresenta-se o metodo para simulacao de
fluidos que foi utilizado. No capıtulo 4, sao mostradas as tecnicas de renderizacao presentes
no aplicativo desenvolvido. Continuando, e discutida no capıtulo 5 a metodologia utilizada
no desenvolvimento do aplicativo. Finalmente, no capıtulo 6 sao apresentados os resultados
obtidos e no capıtulo 7 sao expostas as conclusoes e trabalhos futuros.
Capıtulo 2
Trabalhos Relacionados
Os diferentes metodos encontrados na literatura para animacao de fluidos, baseados em
modelos de DFC, sao fundamentados nas equacoes de Navier-Stokes, com tecnicas de
discretizacao baseadas em diferencas finitas implıcitas [34] e explıcitas [9], bem como em
metodos lagrangeanos tais como o Metodo das Caracterısticas [34], Smoothed Particle
Hydrodynamics (SPH) [6] e Moving-Particle Semi-Implicit (MPS) [28].
O metodo SPH e livre de malhas (assim como o MPS) e vem sendo aplicado com sucesso
em simulacoes de fluidos compressıveis, para a descricao da dinamica de materiais, estudo
de explosoes, fenomenos de transporte, dentre outras aplicacoes [22]. O SPH utiliza um
sistema de partıculas e nucleos de interpolacao para a discretizacao das equacoes de Navier-
Stokes. Implementacoes deste metodo para arquiteturas paralelas foram desenvolvidas com
o objetivo de melhorar a performance do mesmo [36, 30]. Do ponto de vista da computacao
grafica, o fato do SPH nao depender de uma malha previamente definida e uma vantagem,
se comparado com os metodos classicos. As cenas em um filme sao em geral dinamicas,
com fronteiras variaveis em funcao de novos objetos que entram na cena a medida que esta
se desenvolve. Desta forma, metodos que nao fazem uso de malhas, podem ser vantajosos
por evitar o custo extra de regerar a malha sempre que tais alteracoes ocorrem. Essas van-
tagens vem despertando o interesse dos pesquisadores em computacao grafica. Nesta area,
encontramos aplicacoes do SPH para simuladores em medicina [24], animacao de fluidos so-
13
CAPITULO 2. TRABALHOS RELACIONADOS 14
bre superfıcies de terrenos [21], interacao fluido-fluido [25] e fluido-solido [33, 12], simulacao
de fluidos multi-fase [16], simulacao de superfıcies livres [4, 8, 2, 20]. Alem disso, imple-
mentacoes em GPU vem sendo exploradas para melhorar o desempenho computacional das
aplicacoes [14].
Por exemplo, no campo de sistemas de treinamento de cirurgias medicas, em [24] foi
desenvolvida uma tecnica baseada no SPH para a simulacao interativa do sangue. Ja no
campo da simulacao de fluxos superficiais sobre terrenos, em [21] foram estudadas tecnicas
baseadas no SPH parar criar simulacoes fısicas realistas de rios. Essas tecnicas permitem
que a simulacao seja feita em tempo real e, portanto, usada em jogos e ambientes de
realidade virtual. No tema envolvendo interacao fluido-solido o trabalho [33] descreve um
metodo baseado em SPH para simulacao de lıquidos e solidos deformaveis e sua interacao.
O modelo descrito por esse trabalho tambem pode ser utilizado para simulacao de fluidos
multi-fase (lıquido-solido), como tambem demonstrado em [16]. A area de simulacao de
superfıcies livres e importante para a animacao de cenas envolvendo mares, rios, inun-
dacoes, dentre outras. Podemos entender como superfıcie livre a regiao do fluido que nao
esta em contato com a fronteira do domınio de escoamento. Um exemplo interessante
desta linha de trabalhos pode ser encontrado em [20] onde e descrito um metodo SPH para
fluidos incompressıveis utilizado para animacao de ondas do mar. O metodo utiliza termos
de correcao, derivados de formulacoes variacionais, para garantir a incompressibilidade de
fluido.
Finalmente, tecnicas de renderizacao precisam ser utilizadas para garantir o nıvel de
realismo ou efeito visual desejado. A renderizacao foto realıstica pode ser feita atraves de
varios algoritmos, incluindo path tracing, bidirectional path tracing [15], Metropolis light
transport [35] e photon mapping [18]. Artigos de revisao interessantes nessa area podem
ser encontrados em [1, 17].
Como um exemplo de um software ja em uso na area de animacao computacional de
fluidos, pode ser citado o Realflow [31]. No entanto, e um aplicativo comercial cujo codigo
e fechado, o que implica em custos para obtencao de licenca e limitacoes para incorporar
novas funcionalidades. Portanto, uma motivacao para desenvolvimento do aplicativo des-
CAPITULO 2. TRABALHOS RELACIONADOS 15
crito neste texto e oferecer uma alternativa de codigo aberto, que seja extensıvel a novas
funcionalidades.
O foco do presente trabalho e a geracao de animacoes de fluidos realistas tanto do ponto
de vista fısico quanto de renderizacao. Assim, nosso trabalho envolve superfıcies livres e
tecnicas de iluminacao global. Alem disso, estamos tambem interessados na animacao de
cenas envolvendo interacao fluido-solido.
Capıtulo 3
Metodo de Simulacao
Este capıtulo comeca com uma breve descricao do papel das simulacoes numericas em
computadores e dos procedimentos utilizados para resolver tais simulacoes, descrevendo
quais sao as principais etapas de resolucao e como elas foram importantes na escolha do
metodo utilizado neste trabalho.
Com a ajuda do crescente poder computacional, as simulacoes numericas vem ganhando
destaque tanto na resolucao de problemas praticos complexos da engenharia e ciencia
quanto na aproximacao dos mesmos criando representacoes virtuais para outros fins, como
o entretenimento e a ilustracao grafica. A simulacao numerica traduz os aspectos mais
importantes de um problema fısico para uma descricao matematica discreta, que pode ser
usada pra recriar e resolver problemas e fenomenos do mundo real no computador.
Para se criar uma solucao para esse tipo de simulacao, alguns passos sao necessarios.
Primeiramente modelos matematicos, possivelmente com algumas simplificacoes, sao cria-
dos para representar o fenomeno real observado. Geralmente esses modelos sao expressos
atraves de equacoes governantes com condicoes iniciais e condicoes de borda apropriadas.
As equacoes governantes podem ser um conjunto de equacoes diferenciais ordinarias, de
equacoes diferenciais parciais, de equacoes de integracao ou de equacoes em quaisquer ou-
tras formas, mas que sejam representacoes de leis da fısica. As condicoes de borda e iniciais
sao necessarias para se determinar o valor das variaveis do campo de simulacao no espaco
16
CAPITULO 3. METODO DE SIMULACAO 17
e no tempo. [22]
Em seguida, para resolver numericamente as equacoes governantes, e necessario a uti-
lizacao de um metodo para a discretizacao do domınio do problema. Em outras palavras,
e preciso representar um problema do mundo real que ocorre em um espaco contınuo de
uma forma discretizada, ou seja, com um numero finito de componentes, de maneira que o
computador seja capaz de guardar os dados da simulacao em sua memoria e os processar.
Essa representacao e conhecida como o modelo computacional do problema a ser simulado
e e utilizada para as aproximacoes numericas.
Ha dois tipos de descricoes principais que podem ser usados na criacao deste modelo
computacional: a Euleriana e a Lagrangeana. Do ponto de vista das equacoes governantes,
a descricao Euleriana e uma descricao espacial e e tipicamente representada pelo metodo das
diferencas finitas [22]. Ela subdivide a geometria do domınio em regioes fixas (cubos, por
exemplo) e calcula os valores numericos atraves do tempo sempre nessas mesmas regioes. Ja
a Lagrangeana e uma descricao material geralmente representada pelo metodo de elementos
finitos [22]. Neste caso, sao distribuıdos pelo domınio inicial do problema pontos de afericao
dos valores numericos, que sao mutaveis no tempo, podendo acompanhar de forma mais
flexıvel eventuais mudancas no formato geometrico do domınio do problema, o que e uma
das grandes vantagens deste tipo de descricao para a simulacao de fluidos.
Apos a discretizacao do domınio, e feita uma discretizacao numerica para modificar
operacoes de integracao ou derivacao das equacoes governantes de sua forma contınua para
sua representacao discreta. A discretizacao numerica e baseada na teoria de aproximacao de
funcoes e a sua precisao esta intimamente ligada ao modo como o domınio foi discretizado.
Em seguida, feitas ambas as discretizacoes numerica e do domınio, o conjunto de
equacoes originais das leis fısicas que regem a simulacao e convertido num conjunto de
equacoes algebricas ou equacoes diferenciais ordinarias ou parciais, que podem ser re-
solvidas utilizando-se rotinas numericas ja existentes, como por exemplo um esquema de
integracao como o Leapfrog [29, 5], que foi utilizado neste trabalho.
Finalmente, a ultima etapa para criar a simulacao e codificar e implementar em uma lin-
guagem de programacao todas as etapas anteriormente descritas, levando em consideracao
CAPITULO 3. METODO DE SIMULACAO 18
a precisao numerica, a performance, a robustez e a facilidade de uso.
A seguir, sera descrito em mais detalhes o metodo numerico lagrangeano utilizado na
implementacao deste trabalho.
3.1 Smoothed Particle Hydrodynamics (SPH)
Nesta secao serao explicadas as ideias basicas do SPH, como a representacao do fluido
discretizada aproximada por partıculas e a utilizacao de nucleos de suavizacao.
O SPH representa o modelo fısico do fluido atraves de um sistema de partıculas, que
e um conjunto finito de elementos. Cada partıcula se encontra numa posicao discreta do
espaco e contem propriedades como massa, densidade, pressao e velocidade.
A condicao inicial das partıculas (valor inicial de suas propriedades) pode ser variada
para se obter diferentes animacoes. No entanto, e importante para a estabilidade da simu-
lacao que a massa de todas as partıculas seja igual e constante durante cada simulacao. Ja
as posicoes iniciais dependem do formato geometrico do domınio. As partıculas podem ser
distribuıdas em um grid regular dentro do espaco do domınio ou em posicoes aleatorias.
Durante a simulacao, o domınio conta com condicoes de borda (ou condicoes de con-
torno) que definem como tratar partıculas que eventualmente saiam do domınio. Alem
disso, e importante notar que os fundamentos do SPH estao na teoria de interpolacao.
Assim, ele permite que quantidades de um campo definidas apenas em posicoes discretas
possam ser avaliadas em qualquer posicao do espaco. Para isso, o SPH distribuı essas
quantidades numa vizinhanca local de raio definido usando nucleos de suavizacao. Esses
nucleos sao funcoes matematicas utilizadas durante a atualizacao das propriedades das
partıculas em cada novo passo da simulacao e definem como cada partıcula interage com
as suas vizinhas.
CAPITULO 3. METODO DE SIMULACAO 19
O movimento do fluido e descrito pelo SPH atraves das equacoes de Navier-Stokes [23]:
�Dv
Dt= �
(∂v
∂t+ v ⋅ ∇v
)= −∇p+ �g + Δv, (3.1)
onde v e a velocidade, � e a densidade, p e a pressao e g e a forca da gravidade.
Para calcular a densidade, por exemplo, e utilizada a seguinte equacao:
⟨� (x)⟩ =N∑j=1
mjW (x− xj, ℎ) , (3.2)
onde N e o numero de partıculas, mj e a massa da partıcula j e W e o nucleo de
suavizacao utilizado pelo SPH para a interpolacao. A pressao e a viscosidade sao calculadas
de forma analoga a densidade. Entretanto, para cada propriedade da partıcula pode ser
escolhido um nucleo de suavizacao diferente, sempre buscando uma maior estabilidade na
simulacao.
3.2 Detalhes de Implementacao
O domınio utilizado tem o formato de um paralelepıpedo, podendo conter uma esfera fixa
em seu interior, que desvia o fluido criando interessantes animacoes. Ha tres tipos de
condicoes de contorno suportadas. A primeira funciona como uma caixa fechada, onde
as partıculas “ricocheteiam”em todas as paredes do domınio. Nas outras duas, para cada
partıcula que deixa o domınio pela lateral direita, e criada uma nova partıcula na parede
oposta com a mesma velocidade da que saiu. O primeiro caso e a condicao nao-periodica,
onde as novas partıculas aparecem em um lugar aleatorio da parede oposta. Ja no segundo,
a condicao periodica, as novas partıculas reaparecem em uma posicao equivalente a que
elas saıram.
Estruturas de dados adicionais podem ser adotadas para reduzir a complexidade dos al-
goritmos. Primeiramente, uma vez que os nucleos de suavizacao possuem suporte limitado,
dado pelo raio ℎ, pode-se usar uma malha regular (grid), com celulas (cubos) de lado ℎ, e
CAPITULO 3. METODO DE SIMULACAO 20
distribuir o conjunto de partıculas pela malha. Assim, dada uma partıcula i, as candidatas
a participarem com a mesma durante o calculo das quantidades em questao ou estarao na
mesma celula da partıcula i, ou estarao nas celulas vizinhas desta celula. Assim, o custo
computacional em um laco do esquema acima fica reduzido de O (n2) para O (nm), onde
n e o numero de partıculas e m e a quantidade media de partıculas, por celula, da malha
auxiliar (observe que n≫ m de maneira geral). A Figura 3.1 ilustra a estrutura de dados
citada acima.
Figura 3.1: Malha regular utilizada para acelerar os calculos.
CAPITULO 3. METODO DE SIMULACAO 21
A simulacao e inicializada de acordo com o Algoritmo 1. Posteriormente, e necessaria
a execucao de varios passos a cada iteracao do SPH, conforme descrito no Algoritmo 2.
Algoritmo 1 Inicializacao da simulacao.
1: Constroi dois grids regulares;
2: dx⇐ 1.4; {dx e o espacamento entre as partıculas.}
3: x⇐ y ⇐ z ⇐ dx÷ 2;
4: maxx ⇐ 48;
5: maxy ⇐ 20;
6: maxz ⇐ 24;
7: enquanto z < maxz faca
8: enquanto y < maxy faca
9: enquanto x < maxx faca
10: se partıcula fora da esfera fixa no interior do domınio entao
11: Cria partıcula na posicao (x, y, z);
12: Aloca partıcula no primeiro grid regular;
13: fim se
14: x⇐ x+ dx;
15: fim enquanto
16: y ⇐ y + dx;
17: fim enquanto
18: z ⇐ z + dx;
19: fim enquanto
20: tempo⇐ 0; {tempo que a simulacao esta rodando em milissegundos}
CAPITULO 3. METODO DE SIMULACAO 22
Algoritmo 2 Iteracao da simulacao.
1: enquanto simulando faca
2: tempo⇐ tempo+ 40; {avanca 40 milissegundos no tempo}
3: para todas as celulas do primeiro grid faca
4: se essa celula do grid nao estiver vazia entao
5: L⇐ Lista de partıculas vizinhas;
6: para P = cada partıcula contida nessa celula do grid faca
7: AtualizaPartıcula(P , L); {ver Algoritmo 3}
8: fim para
9: fim se
10: fim para
11: para todas as celulas do primeiro grid faca
12: se essa celula do grid nao estiver vazia entao
13: para P = cada partıcula contida nessa celula do grid faca
14: Realoca partıcula no segundo grid regular;
15: fim para
16: Limpa essa celula do primeiro grid;
17: fim se
18: fim para
19: Troca o primeiro grid com o segundo;
20: fim enquanto
CAPITULO 3. METODO DE SIMULACAO 23
O Algoritmo 3 demonstra como cada partıcula e atualizada. E nessa hora que os nucleos
de suavizacao descritos na secao 3.1 sao usados, e para que isso seja possıvel precisamos
montar uma lista de partıculas vizinhas a atual, que estejam dentro do raio de cada nucleo.
Em geral, o raio escolhido para todos os nucleos e 4, que tambem normalmente e igual ao
tamanho da lateral de cada cubo usado no grid em que as partıculas sao alocadas, pois
isso facilita a busca das vizinhas que farao diferenca significativa no calculo.
Algoritmo 3 Metodo AtualizaPartıcula (partıcula, lista de vizinhas).
1: P = partıcula;
2: Atualiza a densidade de P ;
3: Atualiza a pressao em P ;
4: Calcula a forca exercida pela pressao;
5: Calcula a forca exercida pela gravidade;
6: Calcula a forca exercida pela viscosidade;
7: Calcula a aceleracao de P somando as forcas que atuam sobre P ;
8: Atualiza a velocidade de P baseado na aceleracao de P ;
9: Atualiza a posicao de P baseado na velocidade de P ;
10: Trata das colisoes com a esfera e com a fronteira do domınio;
Capıtulo 4
Metodo de Renderizacao
Neste capıtulo serao descritos os dois modos de renderizacao presentes no software, que
sao o modo em tempo real e o modo em off-line.
4.1 Renderizacao em Tempo Real
Para renderizacao em tempo real, foi usado o jME (Java Monkey Engine), uma biblioteca
grafica livre e de codigo aberto, baseada em grafos de cena para ter alta performance na
renderizacao de jogos e simulacoes [19]. Tal biblioteca e implementada utilizando como
base o OpenGL, uma biblioteca grafica de mais baixo nıvel de abstracao. Desta forma,
o jME e capaz de fazer a renderizacao acessando os recursos de aceleracao de vıdeo das
placas graficas [26].
A seguir, serao descritos detalhes deste tipo de renderizacao, como a interface grafica
que e exibida aos usuarios e as varias formas de visualizacao disponıveis, tanto as que tem
como principal foco exibir o fluido ilustrativamente quanto as focadas na exibicao de dados
numericos da simulacao extraıdos a partir do modelo do fluido.
24
CAPITULO 4. METODO DE RENDERIZACAO 25
4.1.1 Interface Grafica com Usuario
A interface e ilustrada na Figura 4.1. Ela e composta por menus e por um painel de
controle que apresenta quatro telas. A primeira delas permite que sejam feitos ajustes nos
parametros numericos da simulacao, tais como o esquema numerico utilizado, parametros
do SPH, condicoes iniciais das partıculas e do domınio e condicoes de borda. Na segunda
pode ser feito o controle do fluxo da simulacao (inicia-la, pausa-la, etc). A terceira permite
fazer um ajuste fino nos dados que sao exibidos em tempo real e escolher o modo de
visualizacao do fluido desejado. A quarta tela serve para configurar os parametros da
renderizacao em off-line e tambem para iniciar e controlar a mesma.
Figura 4.1: Interface Grafica com Usuario e Painel de Controle.
CAPITULO 4. METODO DE RENDERIZACAO 26
4.1.2 Modos de Visualizacao do Fluido
A Figura 4.2 mostra os diversos modos que o fluido pode ser observado em tempo real. Os
tres primeiros dao destaque ao modelo computacional do fluido renderizando as partıculas
das seguintes formas: pontos, esferas ou esferas transparentes. O quarto modo busca
destacar de forma simplificada a superfıcie do fluido, utilizando para gerar a malha usada
na renderizacao um algoritmo oferecido pelo jME [19] chamado Marching Tetrahedron, que
e similar ao Marching Cubes discutido em [11].
(a) Pontos. (b) Esferas.
(c) Esferas transparentes. (d) Isosuperfıcie.
Figura 4.2: Diversos Modos de Visualizacao do Fluido.
CAPITULO 4. METODO DE RENDERIZACAO 27
4.1.3 Visualizando Dados do Modelo do Fluido
Como exemplificado pela Figura 4.3, dados numericos tanto de campos escalares quanto
vetoriais podem ser visualizados em tempo real. Dados escalares, como por exemplo a
densidade, sao exibidos atraves de um degrade de cores utilizado na hora de se renderizar
as partıculas. Outros dados como o gradiente de pressao, velocidade e aceleracao das
partıculas sao mostrados como pequenos vetores coloridos. Essas opcoes sao de grande
interesse pois permitem uma depuracao apurada do comportamento numerico do fluido.
(a) Densidade codificada em cores. (b) Vetores das forcas de pressao.
(c) Vetores de velocidade. (d) Vetores de aceleracao.
Figura 4.3: Dados do Modelo do Fluido sendo visualizados.
CAPITULO 4. METODO DE RENDERIZACAO 28
4.2 Renderizacao em Off-line
Para renderizacao em off-line, tambem foi utilizada uma biblioteca livre e de codigo aberto,
o PBRT, que implementa um sistema de renderizacao baseado em ray-tracing para a sıntese
de imagens realistas, usando modelos fısicos para interacao da luz com os objetos [27].
Neste trabalho, utilizamos um metodo de renderizacao que tem como base os metodos
classicos de tracado de raios (Whitted’s ray tracing) [37]. Nesses metodos, os dados de
entrada sao: (a) Posicao do observador; (b) Posicao e orientacao do plano de projecao e
da janela de visualizacao; (c) Geometria da cena; (d) Propriedades materiais dos objetos
da cena; (e) Propriedades das fontes de luz.
Com essas informacoes, aplica-se um modelo fısico para interacao entre a luz e os objetos
da cena, bem como algoritmos de visibilidade para resolver questoes de sombreamento e
superfıcies escondidas [32]. Conforme descrito em [27], a equacao basica do modelo fısico
tem a forma:
Lo (p, !o) = Le (p, !o) +
∫S2
Li (p, !i) f (p, !o, !i) d!i, (4.1)
onde Lo (p, !o) e a radiancia refletida no ponto p de uma superfıcie, na direcao !o,
Le (p, !o) e a radiancia emitida pelo objeto no ponto p, na direcao !o, Li (p, !i) e a radiancia
incidente na direcao !i e f e uma funcao que modela o espalhamento de luz da superfıcie no
ponto p. A integral no segundo membro da equacao (4.1) e tomada sobre a esfera unitaria
S2 centrada no ponto p, para computar a parcela de radiancia total refletida na direcao
!o.
Partindo desses elementos, para cada pixel da janela de visualizacao o algoritmo traca
um raio passando pelo pixel e pela posicao do observador. Este raio atua como um raio de
luz virtual, refletindo e refratando nos objetos da cena, ate um limite pre-estabelecido de
reflexoes. Uma vez terminado o tracado de um raio, efetua-se recursivamente o calculo da
radiancia total ao longo do raio. Nesta etapa a equacao (4.1) e resolvida para cada ponto
de intersecao encontrado, acumulando-se o resultado, segundo uma expressao do tipo:
CAPITULO 4. METODO DE RENDERIZACAO 29
Lo (pj, !o) = Le (pj, !o) +
∫S2
Li (pj, !i) f (pj, !o, !i) d!i, j = 1, 2, ..., N, (4.2)
onde N e o numero de pontos encontrados durante a etapa de tracado do raio (ver
Figura 4.4). Assim, temos as seguintes etapas:
1. Tracar um raio a partir da posicao do observador passando pelo pixel;
2. Intersecta-lo com os objetos da cena;
3. Calcular a radiancia ao longo do raio;
4. Atribuir a cor ao pixel.
Figura 4.4: Etapa de tracado do raio.
Algumas sequencias animadas com quadros gerados utilizando-se esta tecnica serao
mostrados nos Resultados, no Capıtulo 6.
Capıtulo 5
Metodologia de Desenvolvimento do
Aplicativo
A metodologia utilizada no desenvolvimento deste aplicativo se baseia no paradigma de
programacao orientado a objetos, bem como em padroes de projetos de software. Ja a
modelagem do software foi feita utilizando a linguagem UML (Unified Modelling Lan-
guage) [10].
Essas metodologias foram escolhidas por serem atuais e permitirem mapear facilmente
conceitos do mundo real no software, reutilizar solucoes para problemas de softwares recor-
rentes e tambem por oferecer a possibilidade de se produzir toda a documentacao seguindo
um modelo padronizado [10].
5.1 Modelagem do Software
A linguagem UML define um conjunto de notacoes graficas e diagramas que ajudam na
descricao e no projeto de sistemas de software, particularmente daqueles construıdos uti-
lizando o estilo orientado a objetos (OO). A importancia de se utilizar tais notacoes
padronizadas esta na comunicacao e no entendimento, ja que um diagrama bem feito
ajuda a transmitir ideias sobre um projeto de uma forma concisa, ajudando a lidar com a
30
CAPITULO 5. METODOLOGIA DE DESENVOLVIMENTO DO APLICATIVO 31
complexidade do modelo do software [10].
Sendo assim, o foco dos diagramas desenvolvidos para este trabalho esta na simpli-
cidade, permitindo uma descricao direta de como o software foi construıdo e de suas
funcionalidades. Para isto, foram confeccionados os diagramas mais interessantes para
ilustrar nosso aplicativo, que sao os diagramas de casos de uso, de classes e os diagramas
de sequencia das interacoes principais (inicializacao da aplicacao e do fluido, a atualizacao
do fluido no decorrer do tempo e a renderizacao off-line em paralelo) [10].
5.1.1 Diagrama de Casos de Uso
Os casos de uso sao uma tecnica para captar requisitos funcionais de um sistema, ou seja,
para descrever as interacoes tipicas entre os usuarios e o sistema, fornecendo uma narrativa
sobre como o sistema e utilizado [10].
Pode-se observar na Figura 5.1 que o nosso sistema e composto por dez casos de uso,
que serao descritos a seguir.
Figura 5.1: Diagrama de Casos de Uso.
CAPITULO 5. METODOLOGIA DE DESENVOLVIMENTO DO APLICATIVO 32
Configurar resolucao e se a simulacao sera aberta no modo tela cheia ou nao
Assim que o aplicativo e iniciado, o usuario precisa escolher se deseja utiliza-lo em tela
cheia ou apenas como uma janela comum na area de trabalho. Em ambos os casos, a
resolucao da imagem precisa ser definida.
Configurar parametros fısicos da simulacao
Atraves da interface grafica com o usuario (GUI) exibida pelo software, o usuario e capaz
de ajustar varios parametros fısicos do modelo do fluido, tais como: o esquema numerico
(solver) utilizado para solucionar as equacoes de Navier-Stokes, a condicao de fronteira do
domınio de simulacao, a velocidade inicial do fluido, o tamanho do domınio de simulacao,
dentre outros.
Configurar parametros da visualizacao em tempo real
Tambem e possıvel ajustar atraves da GUI as caracterısticas da renderizacao em tempo
real. Por exemplo, a representacao grafica das partıculas do modelo do fluido (pontos
ou esferas) e a visualizacao dos dados numericos da simulacao (gradientes de densidade,
pressao, velocidade, etc).
Configurar parametros para renderizacao em off-line
Alem disso, o usuario pode especificar os parametros utilizados no modo de renderizacao
com o PBRT, tais como as caracterısticas das fontes luminosas, a opacidade da superfıcie
do fluido, quantos quadros de animacao se deseja gerar, dentre outros.
Renderizar uma animacao em off-line
O usuario pode requisitar a renderizacao de um unico quadro ou de uma sequencia completa
em off-line. Em seguida, o aplicativo leva de alguns minutos a varias horas, de acordo com
o que for requisitado, para completar a tarefa. As imagens dos quadros que ja estao prontas
vao sendo salvas em disco.
CAPITULO 5. METODOLOGIA DE DESENVOLVIMENTO DO APLICATIVO 33
Ajustar disposicao dos elementos da GUI
A interface grafica do programa e configuravel e o usuario pode dispor os seus elementos
da forma mais conveniente para sua utilizacao.
Salvar parametros no disco
Tanto os parametros fısicos da simulacao quanto os parametros da renderizacao em off-line
podem ser gravados em disco, o que facilita a sua posterior reutilizacao.
Carregar parametros salvos no disco
O usuario pode utilizar separadamente os varios parametros de simulacao e renderizacao
salvos previamente. Isto permite a criacao de novos resultados, por exemplo, combinando-
se o comportamento fısico de um determinado fluido com as caracterısticas de renderizacao
da superfıcie livre de outro.
Mover a camera
O usuario pode posicionar a camera de forma a encontrar o angulo ideal para destacar o
comportamento desejado do fluido. E importante notar que ambos os modos de rende-
rizacao compartilham a mesma camera.
Controlar o fluxo da simulacao
O usuario pode executar a simulacao, pausa-la, reinicia-la ou ate mesmo requisitar o avanco
de um passo de simulacao no tempo.
CAPITULO 5. METODOLOGIA DE DESENVOLVIMENTO DO APLICATIVO 34
5.1.2 Diagrama de Classes
Este e um dos diagramas mais amplamente utilizados e permite ilustrar a hierarquia de
classes do software juntamente com os varios tipos de relacionamentos estaticos existentes
entre elas [10]. Na Figura 5.2 se encontra o diagrama de classes do nosso aplicativo. A
seguir, discutiremos as funcionalidades de cada classe.
Figura 5.2: Diagrama de Classes.
Classe Main
Esta classe e responsavel pela inicializacao do aplicativo, o que envolve a inicializacao
e configuracao da engine grafica utilizada e a criacao da janela e de outros recursos
necessarios, como por exemplo, um objeto da classe SimulationGameState e outro da
classe GuiGameState.
Classe SimulationGameState
Esta classe e responsavel pelo controle, atualizacao e renderizacao da simulacao em tempo
real. Para realizar tais tarefas, ela se comunica constantemente com a engine grafica. Du-
rante sua inicializacao, ela cria os objetos geometricos que serao utilizados para representar
o fluido (conjunto de pontos, conjunto de esferas e a isosuperfıcie para a superfıcie livre) e
tambem objetos auxiliares, que servem para depurar o comportamento do fluido, tais como
CAPITULO 5. METODOLOGIA DE DESENVOLVIMENTO DO APLICATIVO 35
vetores para visualizacao dos campos de velocidade e aceleracao e caixas para representar
os limites do domınio de simulacao e a malha utilizada para organizar as partıculas. Alem
disso, tambem e responsavel pela criacao do objeto ParticleSystem que representa o fluido.
Classe GuiGameState
Esta classe e responsavel pela criacao e gerenciamento da interface grafica com o usuario
e por inicializar os menus e o ControlPanel.
Classe ControlPanel
Um objeto da classe ControlPanel e criado pelo GuiGameState e representa e controla a
janela do painel de controle, que e utilizado pelo usuario para configurar os parametros de
simulacao e de renderizacao, para controlar o fluxo da simulacao e para iniciar o processo
de renderizacao em off-line.
Classe AbstractSettings
Esta classe abstrata serve de base para outras duas (SimulationSettings e RenderingSettings)
que sao responsaveis por armazenar dados de configuracao. Ela contem as funcionalidades
basicas para esta tarefa, como por exemplo metodos para a serializacao e leitura de objetos
e variaveis para arquivos de texto.
Classe SimulationSettings
Esta classe serve como interface para salvar e recuperar em disco todos os dados relativos
a simulacao, como por exemplo, os parametros relacionados as condicoes iniciais e os
parametros fısicos e numericos do fluido.
CAPITULO 5. METODOLOGIA DE DESENVOLVIMENTO DO APLICATIVO 36
Classe RenderingSettings
Esta classe serve como interface para salvar e recuperar em disco todos os dados relativos a
renderizacao em off-line, como por exemplo o tamanho dos quadros gerados, as condicoes
de iluminacao, posicao da camera, entre outros.
Classe ParticleSystem
Esta e a principal classe para a implementacao do SPH e representa o modelo fısico do
fluido. Ela cria as estruturas de dados que representam as partıculas do fluido e tambem
os solvers que serao utilizados para atualizar a posicao das mesmas e dar movimento ao
fluido. Alem disso, e capaz de exportar uma malha de densidades para ser renderizada
via isosuperfıcie. Coleta tambem estatısticas sobre o fluido, como a densidade e velocidade
media das partıculas.
Classe RegularSpatialSubdivision
Esta classe e responsavel pela subdivisao espacial utilizada para otimizar o calculo da
dinamica das partıculas. Ela representa uma malha 3d de celulas regulares (objetos do
tipo RegularCell) onde as partıculas podem ser alocadas. E utilizada para tornar mais
rapida a busca de partıculas vizinhas, que e necessaria para a aplicacao dos nucleos de
suavizacao feita pelos solvers.
Classe RegularCell
Representa uma unica celula da malha regular descrita acima. Esta classe contem uma
lista de partıculas que estao no interior da celula e tambem um vetor indicando a posicao
da celula no espaco.
CAPITULO 5. METODOLOGIA DE DESENVOLVIMENTO DO APLICATIVO 37
Classe Particle
Representa uma unica partıcula do fluido e contem tanto o estado atual da mesma quanto
o estado futuro enquanto o mesmo ainda esta sendo calculado. Esses estados sao represen-
tados por objetos do tipo ParticleState. Tambem armazena a densidade de repouso e as
forcas de pressao e viscosidade e a aceleracao aplicada na iteracao anterior.
Classe ParticleState
Guarda o estado de uma determinada partıcula em um dado momento. Esse estado e
composto por dois vetores (de posicao e de velocidade) e tambem pelos valores escalares
de densidade e pressao.
Classe SphSolverFactory
Esta classe e responsavel por abstrair a criacao dos varios tipos de solvers disponıveis. Ela
e utilizada pelo ParticleSystem e cria o solver que sera utilizado baseada nos parametros
passados pelo mesmo. Desta forma, e em conjunto com a classe AbstractSphSolver, novos
solvers implementando diferentes esquemas numericos podem facilmente ser acoplados a
aplicacao.
Classe AbstractSphSolver
A classe AbstractSphSolver define uma interface padrao que cada tipo de solver deve
implementar para poder ser utilizado pelo ParticleSystem. Alem disso, oferece uma im-
plementacao padrao para varias das funcoes que sao comuns a maioria dos solvers, como
por exemplo, o calculo da densidade em um determinado ponto do espaco, a aplicacao dos
nucleos de suavizacao e o tratamento basico das condicoes de fronteira.
CAPITULO 5. METODOLOGIA DE DESENVOLVIMENTO DO APLICATIVO 38
Classe DefaultSphSolver
Esta classe implementa o solver padrao, que utiliza o metodo de integracao leapfrog, com ou
sem memoria, para atualizar as partıculas. Sao calculadas a densidade, pressao, aceleracao
e velocidade de cada partıcula, levando em conta forcas de pressao, viscosidade e gravidade.
Classe AlternativeSphSolver
Esta classe implementa um solver alternativo que utiliza um metodo de primeira ordem.
Ele calcula diretamente a posicao seguinte da partıcula e tambem sua densidade e pressao.
Para isto, leva em conta as forcas derivadas da pressao e da gravidade.
Classe OfflineRenderingManager
Esta classe utiliza o padrao Singleton, ou seja, so pode existir uma unica instancia sua em
um dado momento do tempo. Ela e responsavel por iniciar e gerenciar todo o processo
de renderizacao em off-line, criando e sincronizando as varias threads que sao utilizadas
simultaneamente para realiza-lo.
Classe RenderingTask
Cada RenderingTask e responsavel por executar o processamento de um unico quadro
durante a renderizacao em off-line. Os varios RenderingTasks sao criados e alocados em
alguma thread disponıvel pelo OfflineRenderingManager.
Classe SceneDescriptionWriter
Um objeto SceneDescriptionWriter, que e acionado por uma RenderingTask, tem a funcao
de exportar a cena a ser renderizada para o formato de arquivo utilizado pelo PBRT.
Classe ProcessRunner
Um objeto do tipo ProcessRunner e criado por cada RenderingTask com o objetivo de efe-
tivamente executar o processo externo do PBRT para renderizar um determinado quadro.
CAPITULO 5. METODOLOGIA DE DESENVOLVIMENTO DO APLICATIVO 39
5.1.3 Diagramas de Sequencia
Este tipo de diagrama descreve as interacoes de um grupo de objetos em um determinado
cenario da aplicacao, ilustrando o comportamento dinamico e colaborativo dos mesmos
para realizar uma determinada tarefa [10].
A seguir, serao descritos os diagramas de sequencia dos principais cenarios do software.
Inicializacao da Aplicacao
O diagrama de sequencia que ilustra a inicializacao da aplicacao pode ser visto na Figura 5.3.
A classe Main comeca inicializando um objeto do tipo SimulationGameState, que cria os
objetos geometricos necessarios para a visualizacao dos dados numericos da simulacao. Em
seguida, a classe Main cria um objeto do tipo GuiGameState, que e responsavel por montar
a interface grafica com o usuario (GUI). Para isto, alem de criar uma barra de menus, e
criado um objeto ControlPanel, responsavel por exibir o painel de controle principal da
aplicacao. Este, por sua vez, cria um objeto SimulationSettings e outro RenderingSettings
que ficarao em sincronia com os dados exibidos e alterados pela interface. Apos isso, o
ControlPanel desencadeia o processo de inicializacao da simulacao, que por sua vez inicia-
liza o modelo do fluido. Este processo pode ser visto com mais detalhes na Figura 5.4. Em
seguida, a classe Main marca ambos SimulationGameState e GuiGameState como ativos,
para que estes comecem a ser atualizados e seus elementos renderizados na tela.
CAPITULO 5. METODOLOGIA DE DESENVOLVIMENTO DO APLICATIVO 40
Figura 5.3: Diagrama de Sequencia: Inicializacao da Aplicacao.
CAPITULO 5. METODOLOGIA DE DESENVOLVIMENTO DO APLICATIVO 41
Inicializacao do Fluido
Na Figura 5.4 esta descrita a sequencia para a inicializacao do fluido. Primeiramente e
criado um objeto ParticleSystem que representara o modelo do fluido. Este, por sua vez,
requisita que o SphSolverFactory crie um solver adequado para a simulacao que se deseja
realizar. Em seguida, cria um objeto RegularSpatialSubdivision que por sua vez monta
todas as celulas utilizadas para a subdivisao espacial. Finalmente, o ParticleSystem cria
as partıculas do fluido e as aloca na malha auxiliar, concluindo assim as etapas necessarias
para preparacao do modelo do fluido para a simulacao.
Figura 5.4: Diagrama de Sequencia: Inicializacao do Fluido.
CAPITULO 5. METODOLOGIA DE DESENVOLVIMENTO DO APLICATIVO 42
Atualizacao do Fluido
A Figura 5.5 descreve um passo da atualizacao do fluido no tempo. Este passo comeca com
o objeto SimulationGameState atualizando o modelo fısico do fluido. Para isto, ele comeca
varrendo a malha auxiliar e para cada celula da mesma, coleta as partıculas vizinhas.
Em seguida, ele requisita que o objeto do tipo Solver em uso no momento atualize cada
partıcula da celula sendo processada. Depois as partıculas sao realocadas na malha auxiliar
com base nas suas novas posicoes. Por ultimo, o SimulationGameState atualiza tanto os
objetos geometricos utilizados na renderizacao do fluido quanto os usados para visualizacao
dos campos vetoriais.
CAPITULO 5. METODOLOGIA DE DESENVOLVIMENTO DO APLICATIVO 43
Figura 5.5: Diagrama de Sequencia: Atualizacao do Fluido.
CAPITULO 5. METODOLOGIA DE DESENVOLVIMENTO DO APLICATIVO 44
Renderizacao em Off-line
Pode-se observar na Figura 5.6 o processo de renderizacao em off-line, que comeca com
uma requisicao feita pelo usuario atraves do ControlPanel. Este e responsavel por atualizar
o objeto RenderingSettings para que o mesmo reflita as configuracoes mais recentes feitas
pelo usuario atraves da interface. Em seguida, ele cria uma SceneDescriptionWriter e pede
para que o OfflineRenderingManager inicie a geracao da sequencia de imagens. Este ultimo
inicializa varios objetos RenderingTask, um para cada quadro a ser renderizado. Depois
disto, solicita para a classe ExecutorService a criacao de um grupo de threads (contendo
um thread para cada CPU disponıvel no sistema) que serao responsaveis pela renderi-
zacao. Em seguida, comeca a submeter RenderingTasks para os threads disponıveis. Cada
thread comeca requisitando que o SceneDescriptionWriter escreva a cena de um determi-
nado quadro em disco. Depois, inicializa um objeto ProcessRunner que sera responsavel
por executar o PBRT. Terminada a renderizacao, o SceneDescriptionWriter limpa os ar-
quivos que ja foram utilizados do disco e a RenderingTask e concluıda.
CAPITULO 5. METODOLOGIA DE DESENVOLVIMENTO DO APLICATIVO 45
Figura 5.6: Diagrama de Sequencia: Renderizacao em Off-line.
Capıtulo 6
Resultados
Os exemplos deste capıtulo foram simulados utilizando-se a Equacao (3.1) com os parame-
tros da Tabela 6.1. Em cada simulacao usou-se 4393 partıculas, com um domınio na forma
de paralelepıpedo que se estende do ponto p1 = (0, 0, 0) ate o ponto
p2 = (48, 20, 24) contendo uma esfera fixa (e rıgida) em seu interior. Em todos os ca-
sos exibidos, a condicao inicial e definida distribuindo-se partıculas uniformemente em
uma porcao do domınio, espacadas 1.4 unidades de medida em cada direcao coordenada.
A velocidade tem intensidade inicial que segue o perfil parabolico definido pela expressao:
vx = −(y − ymax
2
)2+ (3.5× ymax) (6.1)
onde y e a altura inicial de cada partıcula e ymax e a altura inicial maxima de qualquer
partıcula. A velocidade inicial tem vetor diretor v = (1, 0, 0), sendo portanto paralela ao
eixo x (ver Figura 6.1). A condicao de contorno utilizada foi a nao-periodica, conforme
descrito na secao 3.2.
46
CAPITULO 6. RESULTADOS 47
Parametros de simulacao Exemplo 1 Exemplo 2 Exemplo 3Coeficiente de pressao 10.0 10.0 10.0Coeficiente de gravidade −5.0 −5.0 −5.0Viscosidade 40.0 40.0 10.0Coeficiente de atrito 0.2 0.2 0.1Massa de cada partıcula 20.0 20.0 10.0
Tabela 6.1: Parametros utilizados nas simulacoes deste capıtulo.
Figura 6.1: Velocidade inicial das partıculas (em vermelho).
Na etapa de renderizacao, usou-se a classe “Direct Lighting” do PBRT, que implementa
o metodo descrito pela equacao (4.1), com os seguintes parametros para o fluido:
∙ Cor da superfıcie: r = 0.0, g = 0.0, b = 1.0;
∙ Coeficientes de reflexao especular: r = 1.0, g = 1.0, b = 1.0;
∙ Coeficientes de reflexao difusa: r = 0.1, g = 0.1, b = 0.1;
∙ Opacidade: 1.0 (totalmente opaco) para o primeiro exemplo e 0.28 (transparente)
para os demais exemplos.
CAPITULO 6. RESULTADOS 48
As paredes do domınio sao totalmente transparentes e a cor da esfera e branca (r = g =
b = 1.0) com material totalmente opaco. Ha duas fontes luminosas direcionais: uma esta a
45∘ em relacao ao eixo y girando no sentido horario; e outra, sob estas mesmas condicoes,
esta a 225∘. Ambas as fontes apontam para o centro da superfıcie do fluido.
A Figura 6.2 mostra uma sequencia de imagens obtida na primeira animacao. Neste
caso, usou-se uma viscosidade alta, o que resultou em comportamento similar ao de
“gelatina”. Uma vez que o fluido e totalmente opaco neste caso, nao ha efeitos de
transparencia. Contudo, ha efeitos de reflexao, particularmente, pode-se perceber o re-
flexo da esfera no fluido. Efeitos de sombra tambem podem ser observados, tanto do fluido
sobre ele mesmo quanto da esfera sobre o fluido.
t = 0s t = 2.5s t = 5s
t = 8s t = 16.5s t = 32s
Figura 6.2: Sequencia de imagens do primeiro exemplo de animacao. Os tempos estaomarcados em segundos.
CAPITULO 6. RESULTADOS 49
A Figura 6.3 mostra outra sequencia de quadros gerada pela aplicacao que foi desen-
volvida. Neste caso, o fluido e transparente e o fundo tem cor amarela (r = 1.0, g = 1.0, b =
0.0). O fluido continua viscoso e as fontes de luz estao na mesma posicao do caso anterior,
observando-se novamente efeitos de sombra. Os reflexos sao bem menos perceptıveis neste
caso em funcao da transparencia.
t = 0s t = 2.5s t = 5s
t = 8s t = 16.5s t = 32s
Figura 6.3: Sequencia de imagens do segundo exemplo de animacao. Os tempos estaomarcados em segundos.
CAPITULO 6. RESULTADOS 50
O ultimo exemplo mostra um fluido transparente, com viscosidade reduzida, utilizando
duas fontes extensas de iluminacao, ou seja, nao-pontuais. Neste caso, nota-se claramente
maior riqueza de detalhes, como efeitos de penumbra, que sao decorrentes desse tipo de
iluminacao (ver Figura 6.4).
t = 0s t = 2.5s t = 5s
t = 8s t = 16.5s t = 32s
Figura 6.4: Sequencia de imagens do terceiro exemplo de animacao. Os tempos estaomarcados em segundos.
Capıtulo 7
Conclusoes e Trabalhos Futuros
Neste trabalho, descrevemos um modelo para animacao de fluidos usando o SPH para a
simulacao e a biblioteca PBRT para a renderizacao. Na secao de resultados, demonstra-
mos a potencialidade do metodo para a animacao de fluidos com realismo tanto visual
quanto fısico. O metodo ainda e computacionalmente caro, particularmente em funcao da
biblioteca PBRT.
A solucao desenvolvida possibilita que artistas graficos manipulem de forma intuitiva
os varios parametros de simulacao e renderizacao necessarios para a geracao de animacoes
via dinamica computacional de fluidos.
A arquitetura do sistema foi desenvolvida visando a facilidade de manutencao e flexi-
bilidade, deixando o mesmo preparado para futuras extensoes. Por exemplo, e possıvel
acoplar novos solvers ou novas bibliotecas para renderizacao em off-line facilmente.
Nos trabalhos futuros, vamos otimizar tanto a etapa de renderizacao quanto a de simu-
lacao, com a implementacao de metodos customizados para geracao de efeitos visuais ainda
melhores.
51
Referencias
[1] N. Adabala e S. Manohar. Techniques for realistic visualization of fluids: A survey. Comput.Graph. Forum, 21(1):65–81, 2002.
[2] B. Ataie-Ashtiani, G. Shobeyri, e L. Farhadi. Modified incompressible sph method forsimulating free surface problems. Fluid Dynamics Research, In Press, Uncorrected Proof,2008.
[3] E. Azevedo. Computacao Grafica - Teoria e Pratica. Editora Campus, 2003.[4] M. Becker e M. Teschner. Weakly compressible sph for free surface flows. Em SCA ’07: Pro-
ceedings of the 2007 ACM SIGGRAPH/Eurographics symposium on Computer animation,pages 209–217, Aire-la-Ville, Switzerland, Switzerland, 2007. Eurographics Association.
[5] C.-W. Chiu, J.-H. Chuang, C.-C. Lin, e J.-B. Yu. Modeling highly-deformable liquid. EmInternational Computer Symposium, 2002.
[6] M. Desbrun e M. Cani-Gascuel. Active implicit surface for animation. Em GI ’98: Pro-ceedings of Graphics Interface 1998. Canadian Human-Computer Communications Society,1998.
[7] O. Deusen, D. S. Ebert, R. Fedkiw, F. K. Musgrave, P. Prusinkiewicz, D. Roble, J. Stam,e J. Tessendorf. The elements of nature: interactive and realistic techniques. Em ACMSIGGRAPH 2004 Course Notes, page 32, 2004.
[8] J. Fang, A. Parriaux, M. Rentschler, e C. Ancey. Improved sph methods for simulating freesurface flows of viscous fluids. Applied Numerical Mathematics, In Press, Corrected Proof,2008.
[9] N. Foster e D. Metaxas. Modeling the motion of a hot, turbulent gas. Em SIGGRAPH ’97:Proceedings of the 24th annual conference on Computer graphics and interactive techniques,pages 181–188, New York, NY, USA, 1997. ACM Press/Addison-Wesley Publishing Co.
[10] M. Fowler. UML Essencial: Um breve guia para a linguagem-padrao de modelagem deobjetos. Bookman, 2005. 3a edicao.
[11] G. A. Giraldi, A. L. A. JR., A. A. F. Oliveira, e R. A. Feijoo. Animacao de flui-dos via tecnicas de visualizacao cientıfica e mecanica computacional. Technical report,Laboratorio Nacional de Computacao Cientıfica (LNCC), Petropolis, RJ, Brasil, 2005.http://virtual01.lncc.br/˜giraldi/TechReport/Fluid-Animation2005.pdf.
[12] O. Genevaux, A. Habibi, e J. michel Dischler. Simulating fluid-solid interaction. Em inGraphics Interface, pages 31–38, 2003.
[13] B. Goetz, T. Peierls, J. Bloch, J. Bowbeer, D. Holmes, e D. Lea. Java Concurrency inPractice. Addison-Wesley Professional, May 2006.
[14] T. Harada, S. Koshizuka, e Y. Kawaguchi. Smoothed particle hydrodynamics on gpus. pages63–70, 2007.
52
REFERENCIAS 53
[15] P. S. Heckbert. Adaptive radiosity textures for bidirectional ray tracing. Em SIGGRAPH’90, pages 145–154, 1990.
[16] X. Y. Hu e N. A. Adams. A multi-phase sph method for macroscopic and mesoscopic flows.J. Comput. Phys., 213(2):844–861, 2006.
[17] A. Iglesias. Computer graphics for water modeling and rendering: a survey. Future Gener.Comput. Syst., 20(8):1355–1374, 2004.
[18] H. W. Jensen e P. H. Christensen. Efficient simulation of light transport in scences withparticipating media using photon maps. Em SIGGRAPH ’98, pages 311–320. ACM, 1998.
[19] jMonkeyEngine, February 2010. http://www.jmonkeyengine.com.[20] A. Khayyer, H. Gotoh, e S. Shao. Corrected incompressible sph method for accurate water-
surface tracking in breaking waves. Coastal Engineering, 55:236–250, March 2008. Issue3.
[21] P. Kipfer e R. Westermann. Realistic and interactive simulation of rivers. Em GI ’06:Proceedings of Graphics Interface 2006, pages 41–48. Canadian Human-Computer Commu-nications Society, 2006.
[22] G. R. Liu e M. B. Liu. Smoothed Particle Hydrodynamics: A Meshfree Particle Method.World Scientific Publishing Company, December 2003.
[23] M. Muller, D. Charypar, e M. Gross. Particle-based fluid simulation for interactive appli-cations. Em SCA ’03: Proceedings of the 2003 ACM SIGGRAPH/Eurographics symposiumon Computer animation, pages 154–159, Aire-la-Ville, Switzerland, Switzerland, 2003. Eu-rographics Association.
[24] M. Muller, S. Schirm, e M. Teschner. Interactive blood simulation for virtual surgery basedon smoothed particle hydrodynamics. Technol. Health Care, 12(1):25–31, 2004.
[25] M. Muller, B. Solenthaler, R. Keiser, e M. Gross. Particle-based fluid-fluid interaction. EmSCA ’05: Proceedings of the 2005 ACM SIGGRAPH/Eurographics symposium on Computeranimation, pages 237–244, New York, NY, USA, 2005. ACM.
[26] OpenGL, February 2010. http://www.opengl.org.[27] M. Pharr e G. Humphreys. Physically Based Rendering: From Theory to Implementation.
Morgan Kaufmann Publishers Inc., San Francisco, CA, USA, 2004.[28] S. Premoze, T. Tasdizen, J. Bigler, A. Lefohn, e R. T. Whitaker. Particle-based simulation
of fluids, 2003. EUROGRAPHICS.[29] W. H. Press, S. A. Teukolsky, W. T. Vetterling, e B. P. Flannery. Numerical Recipes in C:
The Art of Scientific Computing. Cambridge University Press, New York, NY, USA, 1992.[30] G. J. Pringle, S. P. Booth, H. M. P. Couchman, F. R. Pearce, e A. D. Simpson. Towards
a portable, fast parallel ap3m-sph code: Hydra mpi. Em Proceedings of the 8th EuropeanPVM/MPI Users’ Group Meeting on Recent Advances in Parallel Virtual Machine and Mes-sage Passing Interface, pages 360–369, London, UK, 2001. Springer-Verlag.
[31] RealFlow, February 2010. http://www.realflow.com.[32] D. F. Rogers. Procedural elements for computer graphics. McGraw-Hill, Inc., New York,
NY, USA, October 1997.[33] B. Solenthaler, J. Schlafli, e R. Pajarola. A unified particle model for fluid-solid interactions.
Computer Animation and Virtual Worlds, 18(1):69–82, 2007.[34] J. Stam. Stable fluids. Em SIGGRAPH ’99: Proceedings of the 26th annual conference on
Computer graphics and interactive techniques, pages 121–128, August 1999.[35] E. Veach e L. J. Guibas. Metropolis light transport. Em SIGGRAPH ’97, pages 65–76,
1997.
REFERENCIAS 54
[36] K. D. Vertanen. A parallel implementation of a fluid flow simulation usingsmoothed particle hydrodynamics. Technical report, Oregon State University, 1999.http://www.keithv.com/papers/parallel sph simulation.pdf.
[37] T. Whitted. An improved illumination model for shaded display. Commun. ACM, 23(6):343–349, 1980.
[38] P. Witting. Computational fluid dynamics in a traditional animation environment. EmSIGGRAPH ’99: Proceedings of the 26th annual conference on Computer graphics and in-teractive techniques, pages 129–136, New York, NY, USA, 1999. ACM Press/Addison-WesleyPublishing Co.
[39] A. V. Xavier. Animacao de fluidos via automatos celulares e sistemas de partıculas. Master’sthesis, Laboratorio Nacional de Computacao Cientıfica (LNCC), Petropolis, RJ, Brasil, 2006.