SlideShare uma empresa Scribd logo
1 de 54
Baixar para ler offline
UNIVERSIDADE EST´ACIO DE S´A
JO˜AO VICENTE PIRES DOS REIS FILHO
ANIMAC¸ ˜AO FOTO-REALISTA DE
FLUIDOS UTILIZANDO
M´ETODOS LAGRANGEANOS
Petr´opolis
2010
JO˜AO VICENTE PIRES DOS REIS FILHO
ANIMAC¸ ˜AO FOTO-REALISTA DE
FLUIDOS UTILIZANDO
M´ETODOS LAGRANGEANOS
Monografia apresentada `a Universidade Est´acio
de S´a como requisito parcial para a obten¸c˜ao do
grau de Bacharel em Sistemas de Informa¸c˜ao.
ORIENTADOR: Prof. D.Sc. Rodrigo Luis de Souza da Silva
Petr´opolis
2010
JO˜AO VICENTE PIRES DOS REIS FILHO
ANIMAC¸ ˜AO FOTO-REALISTA DE FLUIDOS UTILIZANDO
M´ETODOS LAGRANGEANOS
Monografia apresentada `a Universidade Est´acio
de S´a como requisito parcial para a obten¸c˜ao do
grau de Bacharel em Sistemas de Informa¸c˜ao.
Aprovada em 26 de fevereiro de 2010.
BANCA EXAMINADORA
Prof. D.Sc. Rodrigo Luis de Souza da Silva
Universidade Federal de Juiz de Fora
Prof. M.Sc. Rog´erio Albuquerque de Almeida
Universidade Est´acio de S´a
Dedico este trabalho `a minha fam´ılia.
★★★
Agradecimentos
Primeiramente, agrade¸co a Deus por este dia, aqui concluindo mais uma etapa de minha
vida acadˆemica.
Aos meus orientadores professores Rodrigo Luis de Souza da Silva e Gilson Antˆonio
Giraldi por toda paciˆencia, tolerˆancia, for¸ca e principalmente pelos conhecimentos e exem-
plos cient´ıficos e matem´aticos. As s´abias sugest˜oes que me deram ao longo do caminho que
trilhei, fizeram com que esse se tornasse mais suave e melhor desenvolvido.
Aos meus pais, n˜ao s´o pelo carinho e suporte incondicionais, mas tamb´em pela intui¸c˜ao
do meu pai ao comprar nosso primeiro computador, quando eu ainda era crian¸ca, o que
despertou em mim a curiosidade pela inform´atica.
Aos meus verdadeiros amigos, Ana, Andr´e, 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 direta
ou indireta, que porventura n˜ao foram citados, meus sinceros agradecimentos.
Resumo
Neste trabalho, ser´a apresentado um software para anima¸c˜ao computacional de fluidos.
Inicialmente, ser´a discutido o modelo matem´atico utilizado na simula¸c˜ao. Em seguida,
ser˜ao mostrados os dois modos de utiliza¸c˜ao do aplicativo criado: um em tempo real
para experimenta¸c˜ao dos parˆametros de anima¸c˜ao e outro em modo off-line com o obje-
tivo de alcan¸car um maior n´ıvel de realismo gr´afico. Aspectos de engenharia de software
tamb´em ser˜ao discutidos, tais como a metodologia de desenvolvimento utilizada e a etapa
de modelagem. Finalmente, ser˜ao apresentadas as conclus˜oes descrevendo a usabilidade e
potencialidade do aplicativo criado para gera¸c˜ao de anima¸c˜ao de fluidos.
Palavras-chave: Dinˆamica de Fluidos; Visualiza¸c˜ao Cient´ıfica; Renderiza¸c˜ao.
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.
Sum´ario
1 Introdu¸c˜ao 10
2 Trabalhos Relacionados 13
3 M´etodo de Simula¸c˜ao 16
3.1 Smoothed Particle Hydrodynamics (SPH) . . . . . . . . . . . . . . . . . . . 18
3.2 Detalhes de Implementa¸c˜ao . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4 M´etodo de Renderiza¸c˜ao 24
4.1 Renderiza¸c˜ao em Tempo Real . . . . . . . . . . . . . . . . . . . . . . . . . 24
4.1.1 Interface Gr´afica com Usu´ario . . . . . . . . . . . . . . . . . . . . . 25
4.1.2 Modos de Visualiza¸c˜ao do Fluido . . . . . . . . . . . . . . . . . . . 26
4.1.3 Visualizando Dados do Modelo do Fluido . . . . . . . . . . . . . . . 27
4.2 Renderiza¸c˜ao em Off-line . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
5 Metodologia de Desenvolvimento do Aplicativo 30
5.1 Modelagem do Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
5.1.1 Diagrama de Casos de Uso . . . . . . . . . . . . . . . . . . . . . . . 31
5.1.2 Diagrama de Classes . . . . . . . . . . . . . . . . . . . . . . . . . . 34
5.1.3 Diagramas de Sequˆencia . . . . . . . . . . . . . . . . . . . . . . . . 39
6 Resultados 46
7 Conclus˜oes e Trabalhos Futuros 51
Referˆencias 52
Lista de Ilustra¸c˜oes
3.1 Malha regular utilizada para acelerar os c´alculos. . . . . . . . . . . . . . . 20
4.1 Interface Gr´afica com Usu´ario e Painel de Controle. . . . . . . . . . . . . . 25
4.2 Diversos Modos de Visualiza¸c˜ao do Fluido. . . . . . . . . . . . . . . . . . . 26
4.3 Dados do Modelo do Fluido sendo visualizados. . . . . . . . . . . . . . . . 27
4.4 Etapa de tra¸cado do raio. . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
5.1 Diagrama de Casos de Uso. . . . . . . . . . . . . . . . . . . . . . . . . . . 31
5.2 Diagrama de Classes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
5.3 Diagrama de Sequˆencia: Inicializa¸c˜ao da Aplica¸c˜ao. . . . . . . . . . . . . . 40
5.4 Diagrama de Sequˆencia: Inicializa¸c˜ao do Fluido. . . . . . . . . . . . . . . . 41
5.5 Diagrama de Sequˆencia: Atualiza¸c˜ao do Fluido. . . . . . . . . . . . . . . . 43
5.6 Diagrama de Sequˆencia: Renderiza¸c˜ao em Off-line. . . . . . . . . . . . . . 45
6.1 Velocidade inicial das part´ıculas (em vermelho). . . . . . . . . . . . . . . . 47
6.2 Sequˆencia de imagens do primeiro exemplo de anima¸c˜ao. Os tempos est˜ao
marcados em segundos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
6.3 Sequˆencia de imagens do segundo exemplo de anima¸c˜ao. Os tempos est˜ao
marcados em segundos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
6.4 Sequˆencia de imagens do terceiro exemplo de anima¸c˜ao. Os tempos est˜ao
marcados em segundos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Cap´ıtulo 1
Introdu¸c˜ao
Nas ´ultimas trˆes d´ecadas, t´ecnicas e modelos em dinˆamica de fluidos computacional (DFC)
vˆem sendo aplicados com sucesso em computa¸c˜ao gr´afica e gera¸c˜ao de efeitos visuais. A
anima¸c˜ao 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 intera¸c˜ao de v´arios fenˆomenos
como a convec¸c˜ao, difus˜ao, turbulˆencia e tens˜ao superficial [23]. Al´em disso, a anima¸c˜ao
computacional de fluidos ´e um campo multidisciplinar, ou seja, n˜ao exige apenas conheci-
mentos sobre a f´ısica dos fenˆomenos, mas tamb´em sobre computa¸c˜ao gr´afica e visualiza¸c˜ao
cient´ıfica [39, 11].
As pesquisas em anima¸c˜ao de fluidos se dividem basicamente em trˆes etapas [39].
Primeiramente, temos a busca de novos modelos em DFC que sejam mais eficientes do
ponto de vista da computa¸c˜ao gr´afica. Esta etapa envolve tanto a pesquisa de novos mo-
delos f´ısicos quanto o ajuste de modelos j´a conhecidos, sem perder de vista o fato de que o
objetivo final ´e a gera¸c˜ao de efeitos visuais, e n˜ao a descri¸c˜ao de fenˆomenos naturais [7, 11].
Uma vez resolvidas numericamente as equa¸c˜oes de fluidos, passa-se a fase de renderi-
za¸c˜ao, onde t´ecnicas de computa¸c˜ao gr´afica s˜ao aplicadas sobre os campos gerados, com o
objetivo de criar efeitos visuais, tais como transparˆencia, imagens refletidas na superf´ıcie
de um l´ıquido, ou mesmo, efeitos especiais que incluem deforma¸c˜ao de paisagens, incˆendios,
10
CAP´ITULO 1. INTRODUC¸ ˜AO 11
etc [17, 27, 18, 35].
Finalmente, as t´ecnicas adotadas devem ser incorporadas a um software, com inter-
faces gr´aficas convenientes, o qual permita o uso destes recursos (modelos de fluidos e
computa¸c˜ao gr´afica) por artistas gr´aficos e animadores (ver [38], como exemplo).
Neste trabalho, para a simula¸c˜ao e modelagem dos fluidos foi utilizado o m´etodo SPH
(Smoothed Particle Hydrodynamics), juntamente com as equa¸c˜oes de Navier-Stokes [23, 11].
O SPH foi escolhido devido suas vantagens, como por exemplo o fato de n˜ao depender de
uma malha tridimensional [3] previamente definida. Isto permite criar cenas dinˆamicas,
com fronteiras vari´aveis 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 altera¸c˜oes ocorrem.
Foi constru´ıdo um software que desempenha duas fun¸c˜oes. Primeiro, oferece um modo
de simula¸c˜ao com renderiza¸c˜ao em tempo real, que permite a realiza¸c˜ao de testes e ajustes
dos diversos parˆametros num´ericos e de modelagem dos fluidos, como a press˜ao, viscosidade,
entre outros. Com isso, os artistas gr´aficos ser˜ao capazes de fazer os ajustes necess´arios
para obter a anima¸c˜ao que desejarem.
A renderiza¸c˜ao em tempo real ´e baseada em m´etodos tradicionais de scanline rendering
e em t´ecnicas simplificadas [3]. Por exemplo, as part´ıculas do fluido s˜ao representadas
por pequenas esferas coloridas. Tamb´em ´e poss´ıvel a visualiza¸c˜ao de dados num´ericos
da simula¸c˜ao, tais como o gradiente de press˜ao, velocidade e acelera¸c˜ao das part´ıculas,
representados por pequenos vetores coloridos em fun¸c˜ao da intensidade de cada campo.
Campos escalares (densidade, m´odulo da velocidade, etc.) s˜ao visualizados utilizando-se
uma escala de cores.
A segunda fun¸c˜ao ´e um modo de renderiza¸c˜ao em off-line que utiliza o PBRT (Physically-
Based Ray Tracer); uma biblioteca baseada em f´ısica para renderiza¸c˜ao foto-realista. Neste
caso, s˜ao utilizadas t´ecnicas baseadas em ray-tracing, que ´e um m´etodo que simula o tra-
jeto que os raios de luz percorrem desde as fontes luminosas, passando pelas reflex˜oes e
refra¸c˜oes nos diversos objetos da cena, at´e chegar `a lente da cˆamera virtual. Apesar do seu
alto custo computacional, essas t´ecnicas s˜ao capazes de criar imagens foto-realistas com
maior grau de detalhamento [27].
CAP´ITULO 1. INTRODUC¸ ˜AO 12
Para diminuir o custo de processamento da renderiza¸c˜ao em off-line e melhor utilizar os
recursos computacionais dispon´ıveis atualmente, foram utilizadas t´ecnicas de multithreading
para possibilitar a renderiza¸c˜ao de v´arios quadros da anima¸c˜ao em paralelo, utilizando to-
dos os n´ucleos de processamento oferecidos pelos processadores atuais [13].
Este trabalho est´a estruturado como segue. No cap´ıtulo 2 ´e feita uma breve revis˜ao
sobre alguns trabalhos relacionados. Em seguida apresenta-se o m´etodo para simula¸c˜ao de
fluidos que foi utilizado. No cap´ıtulo 4, s˜ao mostradas as t´ecnicas de renderiza¸c˜ao presentes
no aplicativo desenvolvido. Continuando, ´e discutida no cap´ıtulo 5 a metodologia utilizada
no desenvolvimento do aplicativo. Finalmente, no cap´ıtulo 6 s˜ao apresentados os resultados
obtidos e no cap´ıtulo 7 s˜ao expostas as conclus˜oes e trabalhos futuros.
Cap´ıtulo 2
Trabalhos Relacionados
Os diferentes m´etodos encontrados na literatura para anima¸c˜ao de fluidos, baseados em
modelos de DFC, s˜ao fundamentados nas equa¸c˜oes de Navier-Stokes, com t´ecnicas de
discretiza¸c˜ao baseadas em diferen¸cas finitas impl´ıcitas [34] e expl´ıcitas [9], bem como em
m´etodos lagrangeanos tais como o M´etodo das Caracter´ısticas [34], Smoothed Particle
Hydrodynamics (SPH) [6] e Moving-Particle Semi-Implicit (MPS) [28].
O m´etodo SPH ´e livre de malhas (assim como o MPS) e vem sendo aplicado com sucesso
em simula¸c˜oes de fluidos compress´ıveis, para a descri¸c˜ao da dinˆamica de materiais, estudo
de explos˜oes, fenˆomenos de transporte, dentre outras aplica¸c˜oes [22]. O SPH utiliza um
sistema de part´ıculas e n´ucleos de interpola¸c˜ao para a discretiza¸c˜ao das equa¸c˜oes de Navier-
Stokes. Implementa¸c˜oes deste m´etodo para arquiteturas paralelas foram desenvolvidas com
o objetivo de melhorar a performance do mesmo [36, 30]. Do ponto de vista da computa¸c˜ao
gr´afica, o fato do SPH n˜ao depender de uma malha previamente definida ´e uma vantagem,
se comparado com os m´etodos cl´assicos. As cenas em um filme s˜ao em geral dinˆamicas,
com fronteiras vari´aveis em fun¸c˜ao de novos objetos que entram na cena `a medida que esta
se desenvolve. Desta forma, m´etodos que n˜ao fazem uso de malhas, podem ser vantajosos
por evitar o custo extra de regerar a malha sempre que tais altera¸c˜oes ocorrem. Essas van-
tagens vˆem despertando o interesse dos pesquisadores em computa¸c˜ao gr´afica. Nesta ´area,
encontramos aplica¸c˜oes do SPH para simuladores em medicina [24], anima¸c˜ao de fluidos so-
13
CAP´ITULO 2. TRABALHOS RELACIONADOS 14
bre superf´ıcies de terrenos [21], intera¸c˜ao fluido-fluido [25] e fluido-s´olido [33, 12], simula¸c˜ao
de fluidos multi-fase [16], simula¸c˜ao de superf´ıcies livres [4, 8, 2, 20]. Al´em disso, imple-
menta¸c˜oes em GPU vˆem sendo exploradas para melhorar o desempenho computacional das
aplica¸c˜oes [14].
Por exemplo, no campo de sistemas de treinamento de cirurgias m´edicas, em [24] foi
desenvolvida uma t´ecnica baseada no SPH para a simula¸c˜ao interativa do sangue. J´a no
campo da simula¸c˜ao de fluxos superficiais sobre terrenos, em [21] foram estudadas t´ecnicas
baseadas no SPH parar criar simula¸c˜oes f´ısicas realistas de rios. Essas t´ecnicas permitem
que a simula¸c˜ao seja feita em tempo real e, portanto, usada em jogos e ambientes de
realidade virtual. No tema envolvendo intera¸c˜ao fluido-s´olido o trabalho [33] descreve um
m´etodo baseado em SPH para simula¸c˜ao de l´ıquidos e s´olidos deform´aveis e sua intera¸c˜ao.
O modelo descrito por esse trabalho tamb´em pode ser utilizado para simula¸c˜ao de fluidos
multi-fase (l´ıquido-s´olido), como tamb´em demonstrado em [16]. A ´area de simula¸c˜ao de
superf´ıcies livres ´e importante para a anima¸c˜ao de cenas envolvendo mares, rios, inun-
da¸c˜oes, dentre outras. Podemos entender como superf´ıcie livre a regi˜ao do fluido que n˜ao
est´a 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 m´etodo SPH para
fluidos incompress´ıveis utilizado para anima¸c˜ao de ondas do mar. O m´etodo utiliza termos
de corre¸c˜ao, derivados de formula¸c˜oes variacionais, para garantir a incompressibilidade de
fluido.
Finalmente, t´ecnicas de renderiza¸c˜ao precisam ser utilizadas para garantir o n´ıvel de
realismo ou efeito visual desejado. A renderiza¸c˜ao foto real´ıstica pode ser feita atrav´es de
v´arios algoritmos, incluindo path tracing, bidirectional path tracing [15], Metropolis light
transport [35] e photon mapping [18]. Artigos de revis˜ao interessantes nessa ´area podem
ser encontrados em [1, 17].
Como um exemplo de um software j´a em uso na ´area de anima¸c˜ao computacional de
fluidos, pode ser citado o Realflow [31]. No entanto, ´e um aplicativo comercial cujo c´odigo
´e fechado, o que implica em custos para obten¸c˜ao de licen¸ca e limita¸c˜oes para incorporar
novas funcionalidades. Portanto, uma motiva¸c˜ao para desenvolvimento do aplicativo des-
CAP´ITULO 2. TRABALHOS RELACIONADOS 15
crito neste texto ´e oferecer uma alternativa de c´odigo aberto, que seja extens´ıvel a novas
funcionalidades.
O foco do presente trabalho ´e a gera¸c˜ao de anima¸c˜oes de fluidos realistas tanto do ponto
de vista f´ısico quanto de renderiza¸c˜ao. Assim, nosso trabalho envolve superf´ıcies livres e
t´ecnicas de ilumina¸c˜ao global. Al´em disso, estamos tamb´em interessados na anima¸c˜ao de
cenas envolvendo intera¸c˜ao fluido-solido.
Cap´ıtulo 3
M´etodo de Simula¸c˜ao
Este cap´ıtulo come¸ca com uma breve descri¸c˜ao do papel das simula¸c˜oes num´ericas em
computadores e dos procedimentos utilizados para resolver tais simula¸c˜oes, descrevendo
quais s˜ao as principais etapas de resolu¸c˜ao e como elas foram importantes na escolha do
m´etodo utilizado neste trabalho.
Com a ajuda do crescente poder computacional, as simula¸c˜oes num´ericas vˆem ganhando
destaque tanto na resolu¸c˜ao de problemas pr´aticos complexos da engenharia e ciˆencia
quanto na aproxima¸c˜ao dos mesmos criando representa¸c˜oes virtuais para outros fins, como
o entretenimento e a ilustra¸c˜ao gr´afica. A simula¸c˜ao num´erica traduz os aspectos mais
importantes de um problema f´ısico para uma descri¸c˜ao matem´atica discreta, que pode ser
usada pra recriar e resolver problemas e fenˆomenos do mundo real no computador.
Para se criar uma solu¸c˜ao para esse tipo de simula¸c˜ao, alguns passos s˜ao necess´arios.
Primeiramente modelos matem´aticos, possivelmente com algumas simplifica¸c˜oes, s˜ao cria-
dos para representar o fenˆomeno real observado. Geralmente esses modelos s˜ao expressos
atrav´es de equa¸c˜oes governantes com condi¸c˜oes iniciais e condi¸c˜oes de borda apropriadas.
As equa¸c˜oes governantes podem ser um conjunto de equa¸c˜oes diferenciais ordin´arias, de
equa¸c˜oes diferenciais parciais, de equa¸c˜oes de integra¸c˜ao ou de equa¸c˜oes em quaisquer ou-
tras formas, mas que sejam representa¸c˜oes de leis da f´ısica. As condi¸c˜oes de borda e iniciais
s˜ao necess´arias para se determinar o valor das vari´aveis do campo de simula¸c˜ao no espa¸co
16
CAP´ITULO 3. M´ETODO DE SIMULAC¸ ˜AO 17
e no tempo. [22]
Em seguida, para resolver numericamente as equa¸c˜oes governantes, ´e necess´ario a uti-
liza¸c˜ao de um m´etodo para a discretiza¸c˜ao do dom´ınio do problema. Em outras palavras,
´e preciso representar um problema do mundo real que ocorre em um espa¸co cont´ınuo de
uma forma discretizada, ou seja, com um n´umero finito de componentes, de maneira que o
computador seja capaz de guardar os dados da simula¸c˜ao em sua mem´oria e os processar.
Essa representa¸c˜ao ´e conhecida como o modelo computacional do problema a ser simulado
e ´e utilizada para as aproxima¸c˜oes num´ericas.
H´a dois tipos de descri¸c˜oes principais que podem ser usados na cria¸c˜ao deste modelo
computacional: a Euleriana e a Lagrangeana. Do ponto de vista das equa¸c˜oes governantes,
a descri¸c˜ao Euleriana ´e uma descri¸c˜ao espacial e ´e tipicamente representada pelo m´etodo das
diferen¸cas finitas [22]. Ela subdivide a geometria do dom´ınio em regi˜oes fixas (cubos, por
exemplo) e calcula os valores num´ericos atrav´es do tempo sempre nessas mesmas regi˜oes. J´a
a Lagrangeana ´e uma descri¸c˜ao material geralmente representada pelo m´etodo de elementos
finitos [22]. Neste caso, s˜ao distribu´ıdos pelo dom´ınio inicial do problema pontos de aferi¸c˜ao
dos valores num´ericos, que s˜ao mut´aveis no tempo, podendo acompanhar de forma mais
flex´ıvel eventuais mudan¸cas no formato geom´etrico do dom´ınio do problema, o que ´e uma
das grandes vantagens deste tipo de descri¸c˜ao para a simula¸c˜ao de fluidos.
Ap´os a discretiza¸c˜ao do dom´ınio, ´e feita uma discretiza¸c˜ao num´erica para modificar
opera¸c˜oes de integra¸c˜ao ou deriva¸c˜ao das equa¸c˜oes governantes de sua forma cont´ınua para
sua representa¸c˜ao discreta. A discretiza¸c˜ao num´erica ´e baseada na teoria de aproxima¸c˜ao de
fun¸c˜oes e a sua precis˜ao est´a intimamente ligada ao modo como o dom´ınio foi discretizado.
Em seguida, feitas ambas as discretiza¸c˜oes num´erica e do dom´ınio, o conjunto de
equa¸c˜oes originais das leis f´ısicas que regem a simula¸c˜ao ´e convertido num conjunto de
equa¸c˜oes alg´ebricas ou equa¸c˜oes diferenciais ordin´arias ou parciais, que podem ser re-
solvidas utilizando-se rotinas num´ericas j´a existentes, como por exemplo um esquema de
integra¸c˜ao como o Leapfrog [29, 5], que foi utilizado neste trabalho.
Finalmente, a ´ultima etapa para criar a simula¸c˜ao ´e codificar e implementar em uma lin-
guagem de programa¸c˜ao todas as etapas anteriormente descritas, levando em considera¸c˜ao
CAP´ITULO 3. M´ETODO DE SIMULAC¸ ˜AO 18
a precis˜ao num´erica, a performance, a robustez e a facilidade de uso.
A seguir, ser´a descrito em mais detalhes o m´etodo num´erico lagrangeano utilizado na
implementa¸c˜ao deste trabalho.
3.1 Smoothed Particle Hydrodynamics (SPH)
Nesta se¸c˜ao ser˜ao explicadas as ideias b´asicas do SPH, como a representa¸c˜ao do fluido
discretizada aproximada por part´ıculas e a utiliza¸c˜ao de n´ucleos de suaviza¸c˜ao.
O SPH representa o modelo f´ısico do fluido atrav´es de um sistema de part´ıculas, que
´e um conjunto finito de elementos. Cada part´ıcula se encontra numa posi¸c˜ao discreta do
espa¸co e cont´em propriedades como massa, densidade, press˜ao e velocidade.
A condi¸c˜ao inicial das part´ıculas (valor inicial de suas propriedades) pode ser variada
para se obter diferentes anima¸c˜oes. No entanto, ´e importante para a estabilidade da simu-
la¸c˜ao que a massa de todas as part´ıculas seja igual e constante durante cada simula¸c˜ao. J´a
as posi¸c˜oes iniciais dependem do formato geom´etrico do dom´ınio. As part´ıculas podem ser
distribu´ıdas em um grid regular dentro do espa¸co do dom´ınio ou em posi¸c˜oes aleat´orias.
Durante a simula¸c˜ao, o dom´ınio conta com condi¸c˜oes de borda (ou condi¸c˜oes de con-
torno) que definem como tratar part´ıculas que eventualmente saiam do dom´ınio. Al´em
disso, ´e importante notar que os fundamentos do SPH est˜ao na teoria de interpola¸c˜ao.
Assim, ele permite que quantidades de um campo definidas apenas em posi¸c˜oes discretas
possam ser avaliadas em qualquer posi¸c˜ao do espa¸co. Para isso, o SPH distribu´ı essas
quantidades numa vizinhan¸ca local de raio definido usando n´ucleos de suaviza¸c˜ao. Esses
n´ucleos s˜ao fun¸c˜oes matem´aticas utilizadas durante a atualiza¸c˜ao das propriedades das
part´ıculas em cada novo passo da simula¸c˜ao e definem como cada part´ıcula interage com
as suas vizinhas.
CAP´ITULO 3. M´ETODO DE SIMULAC¸ ˜AO 19
O movimento do fluido ´e descrito pelo SPH atrav´es das equa¸c˜oes de Navier-Stokes [23]:
𝜌
𝐷⃗𝑣
𝐷𝑡
= 𝜌
(
∂⃗𝑣
∂𝑡
+ ⃗𝑣 ⋅ ⃗∇⃗𝑣
)
= −⃗∇𝑝 + 𝜌⃗𝑔 + Δ⃗𝑣, (3.1)
onde ⃗𝑣 ´e a velocidade, 𝜌 ´e a densidade, 𝑝 ´e a press˜ao e ⃗𝑔 ´e a for¸ca da gravidade.
Para calcular a densidade, por exemplo, ´e utilizada a seguinte equa¸c˜ao:
⟨𝜌 (𝑥)⟩ =
𝑁∑
𝑗=1
𝑚𝑗𝑊 (𝑥 − 𝑥𝑗, ℎ) , (3.2)
onde 𝑁 ´e o n´umero de part´ıculas, 𝑚𝑗 ´e a massa da part´ıcula 𝑗 e 𝑊 ´e o n´ucleo de
suaviza¸c˜ao utilizado pelo SPH para a interpola¸c˜ao. A press˜ao e a viscosidade s˜ao calculadas
de forma an´aloga a densidade. Entretanto, para cada propriedade da part´ıcula pode ser
escolhido um n´ucleo de suaviza¸c˜ao diferente, sempre buscando uma maior estabilidade na
simula¸c˜ao.
3.2 Detalhes de Implementa¸c˜ao
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 anima¸c˜oes. H´a trˆes tipos de
condi¸c˜oes 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 condi¸c˜ao n˜ao-peri´odica,
onde as novas part´ıculas aparecem em um lugar aleat´orio da parede oposta. J´a no segundo,
a condi¸c˜ao peri´odica, as novas part´ıculas reaparecem em uma posi¸c˜ao 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 n´ucleos de suaviza¸c˜ao possuem suporte limitado,
dado pelo raio ℎ, pode-se usar uma malha regular (grid), com c´elulas (cubos) de lado ℎ, e
CAP´ITULO 3. M´ETODO DE SIMULAC¸ ˜AO 20
distribuir o conjunto de part´ıculas pela malha. Assim, dada uma part´ıcula 𝑖, as candidatas
a participarem com a mesma durante o c´alculo das quantidades em quest˜ao ou estar˜ao na
mesma c´elula da part´ıcula 𝑖, ou estar˜ao nas c´elulas vizinhas desta c´elula. Assim, o custo
computacional em um la¸co do esquema acima fica reduzido de 𝒪 (𝑛2
) para 𝒪 (𝑛𝑚), onde
𝑛 ´e o n´umero de part´ıculas e 𝑚 ´e a quantidade m´edia de part´ıculas, por c´elula, da malha
auxiliar (observe que 𝑛 ≫ 𝑚 de maneira geral). A Figura 3.1 ilustra a estrutura de dados
citada acima.
Figura 3.1: Malha regular utilizada para acelerar os c´alculos.
CAP´ITULO 3. M´ETODO DE SIMULAC¸ ˜AO 21
A simula¸c˜ao ´e inicializada de acordo com o Algoritmo 1. Posteriormente, ´e necess´aria
a execu¸c˜ao de v´arios passos a cada itera¸c˜ao do SPH, conforme descrito no Algoritmo 2.
Algoritmo 1 Inicializa¸c˜ao da simula¸c˜ao.
1: Constr´oi dois grids regulares;
2: 𝑑𝑥 ⇐ 1.4; {𝑑𝑥 ´e o espa¸camento entre as part´ıculas.}
3: 𝑥 ⇐ 𝑦 ⇐ 𝑧 ⇐ 𝑑𝑥 ÷ 2;
4: 𝑚𝑎𝑥𝑥 ⇐ 48;
5: 𝑚𝑎𝑥𝑦 ⇐ 20;
6: 𝑚𝑎𝑥𝑧 ⇐ 24;
7: enquanto 𝑧 < 𝑚𝑎𝑥𝑧 fa¸ca
8: enquanto 𝑦 < 𝑚𝑎𝑥𝑦 fa¸ca
9: enquanto 𝑥 < 𝑚𝑎𝑥𝑥 fa¸ca
10: se part´ıcula fora da esfera fixa no interior do dom´ınio ent˜ao
11: Cria part´ıcula na posi¸c˜ao (𝑥, 𝑦, 𝑧);
12: Aloca part´ıcula no primeiro grid regular;
13: fim se
14: 𝑥 ⇐ 𝑥 + 𝑑𝑥;
15: fim enquanto
16: 𝑦 ⇐ 𝑦 + 𝑑𝑥;
17: fim enquanto
18: 𝑧 ⇐ 𝑧 + 𝑑𝑥;
19: fim enquanto
20: 𝑡𝑒𝑚𝑝𝑜 ⇐ 0; {tempo que a simula¸c˜ao est´a rodando em milissegundos}
CAP´ITULO 3. M´ETODO DE SIMULAC¸ ˜AO 22
Algoritmo 2 Itera¸c˜ao da simula¸c˜ao.
1: enquanto simulando fa¸ca
2: 𝑡𝑒𝑚𝑝𝑜 ⇐ 𝑡𝑒𝑚𝑝𝑜 + 40; {avan¸ca 40 milissegundos no tempo}
3: para todas as c´elulas do primeiro grid fa¸ca
4: se essa c´elula do grid n˜ao estiver vazia ent˜ao
5: 𝐿 ⇐ Lista de part´ıculas vizinhas;
6: para 𝑃 = cada part´ıcula contida nessa c´elula do grid fa¸ca
7: AtualizaPart´ıcula(𝑃, 𝐿); {ver Algoritmo 3}
8: fim para
9: fim se
10: fim para
11: para todas as c´elulas do primeiro grid fa¸ca
12: se essa c´elula do grid n˜ao estiver vazia ent˜ao
13: para 𝑃 = cada part´ıcula contida nessa c´elula do grid fa¸ca
14: Realoca part´ıcula no segundo grid regular;
15: fim para
16: Limpa essa c´elula do primeiro grid;
17: fim se
18: fim para
19: Troca o primeiro grid com o segundo;
20: fim enquanto
CAP´ITULO 3. M´ETODO DE SIMULAC¸ ˜AO 23
O Algoritmo 3 demonstra como cada part´ıcula ´e atualizada. ´E nessa hora que os n´ucleos
de suaviza¸c˜ao descritos na se¸c˜ao 3.1 s˜ao 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 n´ucleo.
Em geral, o raio escolhido para todos os n´ucleos ´e 4, que tamb´em normalmente ´e igual ao
tamanho da lateral de cada cubo usado no grid em que as part´ıculas s˜ao alocadas, pois
isso facilita a busca das vizinhas que far˜ao diferen¸ca significativa no c´alculo.
Algoritmo 3 M´etodo AtualizaPart´ıcula (part´ıcula, lista de vizinhas).
1: 𝑃 = part´ıcula;
2: Atualiza a densidade de 𝑃;
3: Atualiza a press˜ao em 𝑃;
4: Calcula a for¸ca exercida pela press˜ao;
5: Calcula a for¸ca exercida pela gravidade;
6: Calcula a for¸ca exercida pela viscosidade;
7: Calcula a acelera¸c˜ao de 𝑃 somando as for¸cas que atuam sobre 𝑃;
8: Atualiza a velocidade de 𝑃 baseado na acelera¸c˜ao de 𝑃;
9: Atualiza a posi¸c˜ao de 𝑃 baseado na velocidade de 𝑃;
10: Trata das colis˜oes com a esfera e com a fronteira do dom´ınio;
Cap´ıtulo 4
M´etodo de Renderiza¸c˜ao
Neste cap´ıtulo ser˜ao descritos os dois modos de renderiza¸c˜ao presentes no software, que
s˜ao o modo em tempo real e o modo em off-line.
4.1 Renderiza¸c˜ao em Tempo Real
Para renderiza¸c˜ao em tempo real, foi usado o jME (Java Monkey Engine), uma biblioteca
gr´afica livre e de c´odigo aberto, baseada em grafos de cena para ter alta performance na
renderiza¸c˜ao de jogos e simula¸c˜oes [19]. Tal biblioteca ´e implementada utilizando como
base o OpenGL, uma biblioteca gr´afica de mais baixo n´ıvel de abstra¸c˜ao. Desta forma,
o jME ´e capaz de fazer a renderiza¸c˜ao acessando os recursos de acelera¸c˜ao de v´ıdeo das
placas gr´aficas [26].
A seguir, ser˜ao descritos detalhes deste tipo de renderiza¸c˜ao, como a interface gr´afica
que ´e exibida aos usu´arios e as v´arias formas de visualiza¸c˜ao dispon´ıveis, tanto as que tˆem
como principal foco exibir o fluido ilustrativamente quanto as focadas na exibi¸c˜ao de dados
num´ericos da simula¸c˜ao extra´ıdos a partir do modelo do fluido.
24
CAP´ITULO 4. M´ETODO DE RENDERIZAC¸ ˜AO 25
4.1.1 Interface Gr´afica com Usu´ario
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
parˆametros num´ericos da simula¸c˜ao, tais como o esquema num´erico utilizado, parˆametros
do SPH, condi¸c˜oes iniciais das part´ıculas e do dom´ınio e condi¸c˜oes de borda. Na segunda
pode ser feito o controle do fluxo da simula¸c˜ao (inici´a-la, paus´a-la, etc). A terceira permite
fazer um ajuste fino nos dados que s˜ao exibidos em tempo real e escolher o modo de
visualiza¸c˜ao do fluido desejado. A quarta tela serve para configurar os parˆametros da
renderiza¸c˜ao em off-line e tamb´em para iniciar e controlar a mesma.
Figura 4.1: Interface Gr´afica com Usu´ario e Painel de Controle.
CAP´ITULO 4. M´ETODO DE RENDERIZAC¸ ˜AO 26
4.1.2 Modos de Visualiza¸c˜ao do Fluido
A Figura 4.2 mostra os diversos modos que o fluido pode ser observado em tempo real. Os
trˆes primeiros d˜ao 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 renderiza¸c˜ao 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 Visualiza¸c˜ao do Fluido.
CAP´ITULO 4. M´ETODO DE RENDERIZAC¸ ˜AO 27
4.1.3 Visualizando Dados do Modelo do Fluido
Como exemplificado pela Figura 4.3, dados num´ericos tanto de campos escalares quanto
vetoriais podem ser visualizados em tempo real. Dados escalares, como por exemplo a
densidade, s˜ao exibidos atrav´es de um degrade de cores utilizado na hora de se renderizar
as part´ıculas. Outros dados como o gradiente de press˜ao, velocidade e acelera¸c˜ao das
part´ıculas s˜ao mostrados como pequenos vetores coloridos. Essas op¸c˜oes s˜ao de grande
interesse pois permitem uma depura¸c˜ao apurada do comportamento num´erico do fluido.
(a) Densidade codificada em cores. (b) Vetores das for¸cas de press˜ao.
(c) Vetores de velocidade. (d) Vetores de acelera¸c˜ao.
Figura 4.3: Dados do Modelo do Fluido sendo visualizados.
CAP´ITULO 4. M´ETODO DE RENDERIZAC¸ ˜AO 28
4.2 Renderiza¸c˜ao em Off-line
Para renderiza¸c˜ao em off-line, tamb´em foi utilizada uma biblioteca livre e de c´odigo aberto,
o PBRT, que implementa um sistema de renderiza¸c˜ao baseado em ray-tracing para a s´ıntese
de imagens realistas, usando modelos f´ısicos para intera¸c˜ao da luz com os objetos [27].
Neste trabalho, utilizamos um m´etodo de renderiza¸c˜ao que tem como base os m´etodos
cl´assicos de tra¸cado de raios (Whitted’s ray tracing) [37]. Nesses m´etodos, os dados de
entrada s˜ao: (a) Posi¸c˜ao do observador; (b) Posi¸c˜ao e orienta¸c˜ao do plano de proje¸c˜ao e
da janela de visualiza¸c˜ao; (c) Geometria da cena; (d) Propriedades materiais dos objetos
da cena; (e) Propriedades das fontes de luz.
Com essas informa¸c˜oes, aplica-se um modelo f´ısico para intera¸c˜ao entre a luz e os objetos
da cena, bem como algoritmos de visibilidade para resolver quest˜oes de sombreamento e
superf´ıcies escondidas [32]. Conforme descrito em [27], a equa¸c˜ao b´asica do modelo f´ısico
tem a forma:
𝐿𝑜 (𝑝, 𝜔𝑜) = 𝐿𝑒 (𝑝, 𝜔𝑜) +
∫
𝑆2
𝐿𝑖 (𝑝, 𝜔𝑖) 𝑓 (𝑝, 𝜔𝑜, 𝜔𝑖) 𝑑𝜔𝑖, (4.1)
onde 𝐿𝑜 (𝑝, 𝜔𝑜) ´e a radiˆancia refletida no ponto 𝑝 de uma superf´ıcie, na dire¸c˜ao 𝜔𝑜,
𝐿𝑒 (𝑝, 𝜔𝑜) ´e a radiˆancia emitida pelo objeto no ponto 𝑝, na dire¸c˜ao 𝜔𝑜, 𝐿𝑖 (𝑝, 𝜔𝑖) ´e a radiˆancia
incidente na dire¸c˜ao 𝜔𝑖 e 𝑓 ´e uma fun¸c˜ao que modela o espalhamento de luz da superf´ıcie no
ponto 𝑝. A integral no segundo membro da equa¸c˜ao (4.1) ´e tomada sobre a esfera unit´aria
𝑆2
centrada no ponto 𝑝, para computar a parcela de radiˆancia total refletida na dire¸c˜ao
𝜔𝑜.
Partindo desses elementos, para cada pixel da janela de visualiza¸c˜ao o algoritmo tra¸ca
um raio passando pelo pixel e pela posi¸c˜ao do observador. Este raio atua como um raio de
luz virtual, refletindo e refratando nos objetos da cena, at´e um limite pr´e-estabelecido de
reflex˜oes. Uma vez terminado o tra¸cado de um raio, efetua-se recursivamente o c´alculo da
radiˆancia total ao longo do raio. Nesta etapa a equa¸c˜ao (4.1) ´e resolvida para cada ponto
de interse¸c˜ao encontrado, acumulando-se o resultado, segundo uma express˜ao do tipo:
CAP´ITULO 4. M´ETODO DE RENDERIZAC¸ ˜AO 29
𝐿𝑜 (𝑝𝑗, 𝜔𝑜) = 𝐿𝑒 (𝑝𝑗, 𝜔𝑜) +
∫
𝑆2
𝐿𝑖 (𝑝𝑗, 𝜔𝑖) 𝑓 (𝑝𝑗, 𝜔𝑜, 𝜔𝑖) 𝑑𝜔𝑖, 𝑗 = 1, 2, ..., 𝑁, (4.2)
onde 𝑁 ´e o n´umero de pontos encontrados durante a etapa de tra¸cado do raio (ver
Figura 4.4). Assim, temos as seguintes etapas:
1. Tra¸car um raio a partir da posi¸c˜ao do observador passando pelo pixel;
2. Intersect´a-lo com os objetos da cena;
3. Calcular a radiˆancia ao longo do raio;
4. Atribuir a cor ao pixel.
Figura 4.4: Etapa de tra¸cado do raio.
Algumas sequˆencias animadas com quadros gerados utilizando-se esta t´ecnica ser˜ao
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
programa¸c˜ao orientado a objetos, bem como em padr˜oes de projetos de software. J´a 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 solu¸c˜oes para problemas de softwares recor-
rentes e tamb´em por oferecer a possibilidade de se produzir toda a documenta¸c˜ao seguindo
um modelo padronizado [10].
5.1 Modelagem do Software
A linguagem UML define um conjunto de nota¸c˜oes gr´aficas e diagramas que ajudam na
descri¸c˜ao e no projeto de sistemas de software, particularmente daqueles constru´ıdos uti-
lizando o estilo orientado a objetos (OO). A importˆancia de se utilizar tais nota¸c˜oes
padronizadas est´a na comunica¸c˜ao e no entendimento, j´a que um diagrama bem feito
ajuda a transmitir ideias sobre um projeto de uma forma concisa, ajudando a lidar com a
30
CAP´ITULO 5. METODOLOGIA DE DESENVOLVIMENTO DO APLICATIVO 31
complexidade do modelo do software [10].
Sendo assim, o foco dos diagramas desenvolvidos para este trabalho est´a na simpli-
cidade, permitindo uma descri¸c˜ao 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 s˜ao os diagramas de casos de uso, de classes e os diagramas
de sequˆencia das intera¸c˜oes principais (inicializa¸c˜ao da aplica¸c˜ao e do fluido, a atualiza¸c˜ao
do fluido no decorrer do tempo e a renderiza¸c˜ao off-line em paralelo) [10].
5.1.1 Diagrama de Casos de Uso
Os casos de uso s˜ao uma t´ecnica para captar requisitos funcionais de um sistema, ou seja,
para descrever as intera¸c˜oes tipicas entre os usu´arios 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 ser˜ao descritos a seguir.
Figura 5.1: Diagrama de Casos de Uso.
CAP´ITULO 5. METODOLOGIA DE DESENVOLVIMENTO DO APLICATIVO 32
Configurar resolu¸c˜ao e se a simula¸c˜ao ser´a aberta no modo tela cheia ou n˜ao
Assim que o aplicativo ´e iniciado, o usu´ario precisa escolher se deseja utiliz´a-lo em tela
cheia ou apenas como uma janela comum na ´area de trabalho. Em ambos os casos, a
resolu¸c˜ao da imagem precisa ser definida.
Configurar parˆametros f´ısicos da simula¸c˜ao
Atrav´es da interface gr´afica com o usu´ario (GUI) exibida pelo software, o usu´ario ´e capaz
de ajustar v´arios parˆametros f´ısicos do modelo do fluido, tais como: o esquema num´erico
(solver) utilizado para solucionar as equa¸c˜oes de Navier-Stokes, a condi¸c˜ao de fronteira do
dom´ınio de simula¸c˜ao, a velocidade inicial do fluido, o tamanho do dom´ınio de simula¸c˜ao,
dentre outros.
Configurar parˆametros da visualiza¸c˜ao em tempo real
Tamb´em ´e poss´ıvel ajustar atrav´es da GUI as caracter´ısticas da renderiza¸c˜ao em tempo
real. Por exemplo, a representa¸c˜ao gr´afica das part´ıculas do modelo do fluido (pontos
ou esferas) e a visualiza¸c˜ao dos dados num´ericos da simula¸c˜ao (gradientes de densidade,
press˜ao, velocidade, etc).
Configurar parˆametros para renderiza¸c˜ao em off-line
Al´em disso, o usu´ario pode especificar os parˆametros utilizados no modo de renderiza¸c˜ao
com o PBRT, tais como as caracter´ısticas das fontes luminosas, a opacidade da superf´ıcie
do fluido, quantos quadros de anima¸c˜ao se deseja gerar, dentre outros.
Renderizar uma anima¸c˜ao em off-line
O usu´ario pode requisitar a renderiza¸c˜ao de um ´unico quadro ou de uma sequˆencia completa
em off-line. Em seguida, o aplicativo leva de alguns minutos a v´arias horas, de acordo com
o que for requisitado, para completar a tarefa. As imagens dos quadros que j´a est˜ao prontas
v˜ao sendo salvas em disco.
CAP´ITULO 5. METODOLOGIA DE DESENVOLVIMENTO DO APLICATIVO 33
Ajustar disposi¸c˜ao dos elementos da GUI
A interface gr´afica do programa ´e configur´avel e o usu´ario pode dispor os seus elementos
da forma mais conveniente para sua utiliza¸c˜ao.
Salvar parˆametros no disco
Tanto os parˆametros f´ısicos da simula¸c˜ao quanto os parˆametros da renderiza¸c˜ao em off-line
podem ser gravados em disco, o que facilita a sua posterior reutiliza¸c˜ao.
Carregar parˆametros salvos no disco
O usu´ario pode utilizar separadamente os v´arios parˆametros de simula¸c˜ao e renderiza¸c˜ao
salvos previamente. Isto permite a cria¸c˜ao de novos resultados, por exemplo, combinando-
se o comportamento f´ısico de um determinado fluido com as caracter´ısticas de renderiza¸c˜ao
da superf´ıcie livre de outro.
Mover a cˆamera
O usu´ario pode posicionar a cˆamera de forma a encontrar o ˆangulo ideal para destacar o
comportamento desejado do fluido. ´E importante notar que ambos os modos de rende-
riza¸c˜ao compartilham a mesma cˆamera.
Controlar o fluxo da simula¸c˜ao
O usu´ario pode executar a simula¸c˜ao, paus´a-la, reinici´a-la ou at´e mesmo requisitar o avan¸co
de um passo de simula¸c˜ao no tempo.
CAP´ITULO 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 v´arios tipos de relacionamentos est´aticos 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 respons´avel pela inicializa¸c˜ao do aplicativo, o que envolve a inicializa¸c˜ao
e configura¸c˜ao da engine gr´afica utilizada e a cria¸c˜ao da janela e de outros recursos
necess´arios, como por exemplo, um objeto da classe SimulationGameState e outro da
classe GuiGameState.
Classe SimulationGameState
Esta classe ´e respons´avel pelo controle, atualiza¸c˜ao e renderiza¸c˜ao da simula¸c˜ao em tempo
real. Para realizar tais tarefas, ela se comunica constantemente com a engine gr´afica. Du-
rante sua inicializa¸c˜ao, ela cria os objetos geom´etricos que ser˜ao utilizados para representar
o fluido (conjunto de pontos, conjunto de esferas e a isosuperf´ıcie para a superf´ıcie livre) e
tamb´em objetos auxiliares, que servem para depurar o comportamento do fluido, tais como
CAP´ITULO 5. METODOLOGIA DE DESENVOLVIMENTO DO APLICATIVO 35
vetores para visualiza¸c˜ao dos campos de velocidade e acelera¸c˜ao e caixas para representar
os limites do dom´ınio de simula¸c˜ao e a malha utilizada para organizar as part´ıculas. Al´em
disso, tamb´em ´e respons´avel pela cria¸c˜ao do objeto ParticleSystem que representa o fluido.
Classe GuiGameState
Esta classe ´e respons´avel pela cria¸c˜ao e gerenciamento da interface gr´afica com o usu´ario
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 usu´ario para configurar os parˆametros de
simula¸c˜ao e de renderiza¸c˜ao, para controlar o fluxo da simula¸c˜ao e para iniciar o processo
de renderiza¸c˜ao em off-line.
Classe AbstractSettings
Esta classe abstrata serve de base para outras duas (SimulationSettings e RenderingSettings)
que s˜ao respons´aveis por armazenar dados de configura¸c˜ao. Ela cont´em as funcionalidades
b´asicas para esta tarefa, como por exemplo m´etodos para a serializa¸c˜ao e leitura de objetos
e vari´aveis para arquivos de texto.
Classe SimulationSettings
Esta classe serve como interface para salvar e recuperar em disco todos os dados relativos
a simula¸c˜ao, como por exemplo, os parˆametros relacionados `as condi¸c˜oes iniciais e os
parˆametros f´ısicos e num´ericos do fluido.
CAP´ITULO 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
renderiza¸c˜ao em off-line, como por exemplo o tamanho dos quadros gerados, as condi¸c˜oes
de ilumina¸c˜ao, posi¸c˜ao da cˆamera, entre outros.
Classe ParticleSystem
Esta ´e a principal classe para a implementa¸c˜ao do SPH e representa o modelo f´ısico do
fluido. Ela cria as estruturas de dados que representam as part´ıculas do fluido e tamb´em
os solvers que ser˜ao utilizados para atualizar a posi¸c˜ao das mesmas e dar movimento ao
fluido. Al´em disso, ´e capaz de exportar uma malha de densidades para ser renderizada
via isosuperf´ıcie. Coleta tamb´em estat´ısticas sobre o fluido, como a densidade e velocidade
m´edia das part´ıculas.
Classe RegularSpatialSubdivision
Esta classe ´e respons´avel pela subdivis˜ao espacial utilizada para otimizar o calculo da
dinˆamica das part´ıculas. Ela representa uma malha 3d de c´elulas regulares (objetos do
tipo RegularCell) onde as part´ıculas podem ser alocadas. ´E utilizada para tornar mais
r´apida a busca de part´ıculas vizinhas, que ´e necess´aria para a aplica¸c˜ao dos n´ucleos de
suaviza¸c˜ao feita pelos solvers.
Classe RegularCell
Representa uma ´unica c´elula da malha regular descrita acima. Esta classe cont´em uma
lista de part´ıculas que est˜ao no interior da c´elula e tamb´em um vetor indicando a posi¸c˜ao
da c´elula no espa¸co.
CAP´ITULO 5. METODOLOGIA DE DESENVOLVIMENTO DO APLICATIVO 37
Classe Particle
Representa uma ´unica part´ıcula do fluido e cont´em tanto o estado atual da mesma quanto
o estado futuro enquanto o mesmo ainda est´a sendo calculado. Esses estados s˜ao represen-
tados por objetos do tipo ParticleState. Tamb´em armazena a densidade de repouso e as
for¸cas de press˜ao e viscosidade e a acelera¸c˜ao aplicada na itera¸c˜ao anterior.
Classe ParticleState
Guarda o estado de uma determinada part´ıcula em um dado momento. Esse estado ´e
composto por dois vetores (de posi¸c˜ao e de velocidade) e tamb´em pelos valores escalares
de densidade e press˜ao.
Classe SphSolverFactory
Esta classe ´e respons´avel por abstrair a cria¸c˜ao dos v´arios tipos de solvers dispon´ıveis. Ela
´e utilizada pelo ParticleSystem e cria o solver que ser´a utilizado baseada nos parˆametros
passados pelo mesmo. Desta forma, e em conjunto com a classe AbstractSphSolver, novos
solvers implementando diferentes esquemas num´ericos podem facilmente ser acoplados `a
aplica¸c˜ao.
Classe AbstractSphSolver
A classe AbstractSphSolver define uma interface padr˜ao que cada tipo de solver deve
implementar para poder ser utilizado pelo ParticleSystem. Al´em disso, oferece uma im-
plementa¸c˜ao padr˜ao para v´arias das fun¸c˜oes que s˜ao comuns `a maioria dos solvers, como
por exemplo, o c´alculo da densidade em um determinado ponto do espa¸co, a aplica¸c˜ao dos
n´ucleos de suaviza¸c˜ao e o tratamento b´asico das condi¸c˜oes de fronteira.
CAP´ITULO 5. METODOLOGIA DE DESENVOLVIMENTO DO APLICATIVO 38
Classe DefaultSphSolver
Esta classe implementa o solver padr˜ao, que utiliza o m´etodo de integra¸c˜ao leapfrog, com ou
sem mem´oria, para atualizar as part´ıculas. S˜ao calculadas a densidade, press˜ao, acelera¸c˜ao
e velocidade de cada part´ıcula, levando em conta for¸cas de press˜ao, viscosidade e gravidade.
Classe AlternativeSphSolver
Esta classe implementa um solver alternativo que utiliza um m´etodo de primeira ordem.
Ele calcula diretamente a posi¸c˜ao seguinte da part´ıcula e tamb´em sua densidade e press˜ao.
Para isto, leva em conta as for¸cas derivadas da press˜ao e da gravidade.
Classe OfflineRenderingManager
Esta classe utiliza o padr˜ao Singleton, ou seja, s´o pode existir uma ´unica instˆancia sua em
um dado momento do tempo. Ela ´e respons´avel por iniciar e gerenciar todo o processo
de renderiza¸c˜ao em off-line, criando e sincronizando as v´arias threads que s˜ao utilizadas
simultaneamente para realiz´a-lo.
Classe RenderingTask
Cada RenderingTask ´e respons´avel por executar o processamento de um ´unico quadro
durante a renderiza¸c˜ao em off-line. Os v´arios RenderingTasks s˜ao criados e alocados em
alguma thread dispon´ıvel pelo OfflineRenderingManager.
Classe SceneDescriptionWriter
Um objeto SceneDescriptionWriter, que ´e acionado por uma RenderingTask, tem a fun¸c˜ao
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.
CAP´ITULO 5. METODOLOGIA DE DESENVOLVIMENTO DO APLICATIVO 39
5.1.3 Diagramas de Sequˆencia
Este tipo de diagrama descreve as intera¸c˜oes de um grupo de objetos em um determinado
cen´ario da aplica¸c˜ao, ilustrando o comportamento dinˆamico e colaborativo dos mesmos
para realizar uma determinada tarefa [10].
A seguir, ser˜ao descritos os diagramas de sequˆencia dos principais cen´arios do software.
Inicializa¸c˜ao da Aplica¸c˜ao
O diagrama de sequˆencia que ilustra a inicializa¸c˜ao da aplica¸c˜ao pode ser visto na Figura 5.3.
A classe Main come¸ca inicializando um objeto do tipo SimulationGameState, que cria os
objetos geom´etricos necess´arios para a visualiza¸c˜ao dos dados num´ericos da simula¸c˜ao. Em
seguida, a classe Main cria um objeto do tipo GuiGameState, que ´e respons´avel por montar
a interface gr´afica com o usu´ario (GUI). Para isto, al´em de criar uma barra de menus, ´e
criado um objeto ControlPanel, respons´avel por exibir o painel de controle principal da
aplica¸c˜ao. Este, por sua vez, cria um objeto SimulationSettings e outro RenderingSettings
que ficar˜ao em sincronia com os dados exibidos e alterados pela interface. Ap´os isso, o
ControlPanel desencadeia o processo de inicializa¸c˜ao da simula¸c˜ao, 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.
CAP´ITULO 5. METODOLOGIA DE DESENVOLVIMENTO DO APLICATIVO 40
Figura 5.3: Diagrama de Sequˆencia: Inicializa¸c˜ao da Aplica¸c˜ao.
CAP´ITULO 5. METODOLOGIA DE DESENVOLVIMENTO DO APLICATIVO 41
Inicializa¸c˜ao do Fluido
Na Figura 5.4 est´a descrita a sequˆencia para a inicializa¸c˜ao do fluido. Primeiramente ´e
criado um objeto ParticleSystem que representar´a o modelo do fluido. Este, por sua vez,
requisita que o SphSolverFactory crie um solver adequado para a simula¸c˜ao que se deseja
realizar. Em seguida, cria um objeto RegularSpatialSubdivision que por sua vez monta
todas as c´elulas utilizadas para a subdivis˜ao espacial. Finalmente, o ParticleSystem cria
as part´ıculas do fluido e as aloca na malha auxiliar, concluindo assim as etapas necess´arias
para prepara¸c˜ao do modelo do fluido para a simula¸c˜ao.
Figura 5.4: Diagrama de Sequˆencia: Inicializa¸c˜ao do Fluido.
CAP´ITULO 5. METODOLOGIA DE DESENVOLVIMENTO DO APLICATIVO 42
Atualiza¸c˜ao do Fluido
A Figura 5.5 descreve um passo da atualiza¸c˜ao do fluido no tempo. Este passo come¸ca com
o objeto SimulationGameState atualizando o modelo f´ısico do fluido. Para isto, ele come¸ca
varrendo a malha auxiliar e para cada c´elula 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 c´elula sendo processada. Depois as part´ıculas s˜ao realocadas na malha auxiliar
com base nas suas novas posi¸c˜oes. Por ´ultimo, o SimulationGameState atualiza tanto os
objetos geom´etricos utilizados na renderiza¸c˜ao do fluido quanto os usados para visualiza¸c˜ao
dos campos vetoriais.
CAP´ITULO 5. METODOLOGIA DE DESENVOLVIMENTO DO APLICATIVO 43
Figura 5.5: Diagrama de Sequˆencia: Atualiza¸c˜ao do Fluido.
CAP´ITULO 5. METODOLOGIA DE DESENVOLVIMENTO DO APLICATIVO 44
Renderiza¸c˜ao em Off-line
Pode-se observar na Figura 5.6 o processo de renderiza¸c˜ao em off-line, que come¸ca com
uma requisi¸c˜ao feita pelo usu´ario atrav´es do ControlPanel. Este ´e respons´avel por atualizar
o objeto RenderingSettings para que o mesmo reflita as configura¸c˜oes mais recentes feitas
pelo usu´ario atrav´es da interface. Em seguida, ele cria uma SceneDescriptionWriter e pede
para que o OfflineRenderingManager inicie a gera¸c˜ao da sequˆencia de imagens. Este ´ultimo
inicializa v´arios objetos RenderingTask, um para cada quadro a ser renderizado. Depois
disto, solicita para a classe ExecutorService a cria¸c˜ao de um grupo de threads (contendo
um thread para cada CPU dispon´ıvel no sistema) que ser˜ao respons´aveis pela renderi-
za¸c˜ao. Em seguida, come¸ca a submeter RenderingTasks para os threads dispon´ıveis. Cada
thread come¸ca requisitando que o SceneDescriptionWriter escreva a cena de um determi-
nado quadro em disco. Depois, inicializa um objeto ProcessRunner que ser´a respons´avel
por executar o PBRT. Terminada a renderiza¸c˜ao, o SceneDescriptionWriter limpa os ar-
quivos que j´a foram utilizados do disco e a RenderingTask ´e conclu´ıda.
CAP´ITULO 5. METODOLOGIA DE DESENVOLVIMENTO DO APLICATIVO 45
Figura 5.6: Diagrama de Sequˆencia: Renderiza¸c˜ao em Off-line.
Cap´ıtulo 6
Resultados
Os exemplos deste cap´ıtulo foram simulados utilizando-se a Equa¸c˜ao (3.1) com os parˆame-
tros da Tabela 6.1. Em cada simula¸c˜ao usou-se 4393 part´ıculas, com um dom´ınio na forma
de paralelep´ıpedo que se estende do ponto 𝑝1 = (0, 0, 0) at´e o ponto
𝑝2 = (48, 20, 24) contendo uma esfera fixa (e r´ıgida) em seu interior. Em todos os ca-
sos exibidos, a condi¸c˜ao inicial ´e definida distribuindo-se part´ıculas uniformemente em
uma por¸c˜ao do dom´ınio, espa¸cadas 1.4 unidades de medida em cada dire¸c˜ao coordenada.
A velocidade tem intensidade inicial que segue o perfil parab´olico definido pela express˜ao:
𝑣𝑥 = −
(
𝑦 −
𝑦𝑚𝑎𝑥
2
)2
+ (3.5 × 𝑦𝑚𝑎𝑥) (6.1)
onde 𝑦 ´e a altura inicial de cada part´ıcula e 𝑦𝑚𝑎𝑥 ´e a altura inicial m´axima de qualquer
part´ıcula. A velocidade inicial tem vetor diretor ⃗𝑣 = (1, 0, 0), sendo portanto paralela ao
eixo 𝑥 (ver Figura 6.1). A condi¸c˜ao de contorno utilizada foi a n˜ao-peri´odica, conforme
descrito na se¸c˜ao 3.2.
46
CAP´ITULO 6. RESULTADOS 47
Parˆametros de simula¸c˜ao Exemplo 1 Exemplo 2 Exemplo 3
Coeficiente de press˜ao 10.0 10.0 10.0
Coeficiente de gravidade −5.0 −5.0 −5.0
Viscosidade 40.0 40.0 10.0
Coeficiente de atrito 0.2 0.2 0.1
Massa de cada part´ıcula 20.0 20.0 10.0
Tabela 6.1: Parˆametros utilizados nas simula¸c˜oes deste cap´ıtulo.
Figura 6.1: Velocidade inicial das part´ıculas (em vermelho).
Na etapa de renderiza¸c˜ao, usou-se a classe “Direct Lighting” do PBRT, que implementa
o m´etodo descrito pela equa¸c˜ao (4.1), com os seguintes parˆametros para o fluido:
∙ Cor da superf´ıcie: 𝑟 = 0.0, 𝑔 = 0.0, 𝑏 = 1.0;
∙ Coeficientes de reflex˜ao especular: 𝑟 = 1.0, 𝑔 = 1.0, 𝑏 = 1.0;
∙ Coeficientes de reflex˜ao difusa: 𝑟 = 0.1, 𝑔 = 0.1, 𝑏 = 0.1;
∙ Opacidade: 1.0 (totalmente opaco) para o primeiro exemplo e 0.28 (transparente)
para os demais exemplos.
CAP´ITULO 6. RESULTADOS 48
As paredes do dom´ınio s˜ao totalmente transparentes e a cor da esfera ´e branca (𝑟 = 𝑔 =
𝑏 = 1.0) com material totalmente opaco. H´a duas fontes luminosas direcionais: uma est´a a
45∘
em rela¸c˜ao ao eixo 𝑦 girando no sentido hor´ario; e outra, sob estas mesmas condi¸c˜oes,
est´a a 225∘
. Ambas as fontes apontam para o centro da superf´ıcie do fluido.
A Figura 6.2 mostra uma sequˆencia de imagens obtida na primeira anima¸c˜ao. 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, n˜ao h´a efeitos de
transparˆencia. Contudo, h´a efeitos de reflex˜ao, particularmente, pode-se perceber o re-
flexo da esfera no fluido. Efeitos de sombra tamb´em podem ser observados, tanto do fluido
sobre ele mesmo quanto da esfera sobre o fluido.
𝑡 = 0𝑠 𝑡 = 2.5𝑠 𝑡 = 5𝑠
𝑡 = 8𝑠 𝑡 = 16.5𝑠 𝑡 = 32𝑠
Figura 6.2: Sequˆencia de imagens do primeiro exemplo de anima¸c˜ao. Os tempos est˜ao
marcados em segundos.
CAP´ITULO 6. RESULTADOS 49
A Figura 6.3 mostra outra sequˆencia de quadros gerada pela aplica¸c˜ao que foi desen-
volvida. Neste caso, o fluido ´e transparente e o fundo tem cor amarela (𝑟 = 1.0, 𝑔 = 1.0, 𝑏 =
0.0). O fluido continua viscoso e as fontes de luz est˜ao na mesma posi¸c˜ao do caso anterior,
observando-se novamente efeitos de sombra. Os reflexos s˜ao bem menos percept´ıveis neste
caso em fun¸c˜ao da transparˆencia.
𝑡 = 0𝑠 𝑡 = 2.5𝑠 𝑡 = 5𝑠
𝑡 = 8𝑠 𝑡 = 16.5𝑠 𝑡 = 32𝑠
Figura 6.3: Sequˆencia de imagens do segundo exemplo de anima¸c˜ao. Os tempos est˜ao
marcados em segundos.
CAP´ITULO 6. RESULTADOS 50
O ´ultimo exemplo mostra um fluido transparente, com viscosidade reduzida, utilizando
duas fontes extensas de ilumina¸c˜ao, ou seja, n˜ao-pontuais. Neste caso, nota-se claramente
maior riqueza de detalhes, como efeitos de penumbra, que s˜ao decorrentes desse tipo de
ilumina¸c˜ao (ver Figura 6.4).
𝑡 = 0𝑠 𝑡 = 2.5𝑠 𝑡 = 5𝑠
𝑡 = 8𝑠 𝑡 = 16.5𝑠 𝑡 = 32𝑠
Figura 6.4: Sequˆencia de imagens do terceiro exemplo de anima¸c˜ao. Os tempos est˜ao
marcados em segundos.
Cap´ıtulo 7
Conclus˜oes e Trabalhos Futuros
Neste trabalho, descrevemos um modelo para anima¸c˜ao de fluidos usando o SPH para a
simula¸c˜ao e a biblioteca PBRT para a renderiza¸c˜ao. Na se¸c˜ao de resultados, demonstra-
mos a potencialidade do m´etodo para a anima¸c˜ao de fluidos com realismo tanto visual
quanto f´ısico. O m´etodo ainda ´e computacionalmente caro, particularmente em fun¸c˜ao da
biblioteca PBRT.
A solu¸c˜ao desenvolvida possibilita que artistas gr´aficos manipulem de forma intuitiva
os v´arios parˆametros de simula¸c˜ao e renderiza¸c˜ao necess´arios para a gera¸c˜ao de anima¸c˜oes
via dinˆamica computacional de fluidos.
A arquitetura do sistema foi desenvolvida visando a facilidade de manuten¸c˜ao e flexi-
bilidade, deixando o mesmo preparado para futuras extens˜oes. Por exemplo, ´e poss´ıvel
acoplar novos solvers ou novas bibliotecas para renderiza¸c˜ao em off-line facilmente.
Nos trabalhos futuros, vamos otimizar tanto a etapa de renderiza¸c˜ao quanto a de simu-
la¸c˜ao, com a implementa¸c˜ao de m´etodos customizados para gera¸c˜ao de efeitos visuais ainda
melhores.
51
Referˆencias
[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 for
simulating free surface problems. Fluid Dynamics Research, In Press, Uncorrected Proof,
2008.
[3] E. Azevedo. Computa¸c˜ao Gr´afica - Teoria e Pr´atica. 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. Em
International 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 ACM
SIGGRAPH 2004 Course Notes, page 32, 2004.
[8] J. Fang, A. Parriaux, M. Rentschler, e C. Ancey. Improved sph methods for simulating free
surface 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-padr˜ao de modelagem de
objetos. Bookman, 2005. 3a edi¸c˜ao.
[11] G. A. Giraldi, A. L. A. JR., A. A. F. Oliveira, e R. A. Feij´oo. Anima¸c˜ao de flui-
dos via t´ecnicas de visualiza¸c˜ao cient´ıfica e mecˆanica computacional. Technical report,
Laborat´orio Nacional de Computa¸c˜ao Cient´ıfica (LNCC), Petr´opolis, RJ, Brasil, 2005.
http://virtual01.lncc.br/˜giraldi/TechReport/Fluid-Animation2005.pdf.
[12] O. G´enevaux, A. Habibi, e J. michel Dischler. Simulating fluid-solid interaction. Em in
Graphics Interface, pages 31–38, 2003.
[13] B. Goetz, T. Peierls, J. Bloch, J. Bowbeer, D. Holmes, e D. Lea. Java Concurrency in
Practice. Addison-Wesley Professional, May 2006.
[14] T. Harada, S. Koshizuka, e Y. Kawaguchi. Smoothed particle hydrodynamics on gpus. pages
63–70, 2007.
52
REFERˆENCIAS 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 with
participating 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. Issue
3.
[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. M¨uller, D. Charypar, e M. Gross. Particle-based fluid simulation for interactive appli-
cations. Em SCA ’03: Proceedings of the 2003 ACM SIGGRAPH/Eurographics symposium
on Computer animation, pages 154–159, Aire-la-Ville, Switzerland, Switzerland, 2003. Eu-
rographics Association.
[24] M. M¨uller, S. Schirm, e M. Teschner. Interactive blood simulation for virtual surgery based
on smoothed particle hydrodynamics. Technol. Health Care, 12(1):25–31, 2004.
[25] M. M¨uller, B. Solenthaler, R. Keiser, e M. Gross. Particle-based fluid-fluid interaction. Em
SCA ’05: Proceedings of the 2005 ACM SIGGRAPH/Eurographics symposium on Computer
animation, 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 European
PVM/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. Schl¨afli, 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.
REFERˆENCIAS 54
[36] K. D. Vertanen. A parallel implementation of a fluid flow simulation using
smoothed 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. Em
SIGGRAPH ’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-Wesley
Publishing Co.
[39] A. V. Xavier. Anima¸c˜ao de fluidos via autˆomatos celulares e sistemas de part´ıculas. Master’s
thesis, Laborat´orio Nacional de Computa¸c˜ao Cient´ıfica (LNCC), Petr´opolis, RJ, Brasil, 2006.

Mais conteúdo relacionado

Mais procurados

MODELAGEM E IMPLEMENTAÇÃO DE UM VISUALIZADOR PARA SIMULAÇÕES COMPUTACIONAIS D...
MODELAGEM E IMPLEMENTAÇÃO DE UM VISUALIZADOR PARA SIMULAÇÕES COMPUTACIONAIS D...MODELAGEM E IMPLEMENTAÇÃO DE UM VISUALIZADOR PARA SIMULAÇÕES COMPUTACIONAIS D...
MODELAGEM E IMPLEMENTAÇÃO DE UM VISUALIZADOR PARA SIMULAÇÕES COMPUTACIONAIS D...Jesimar Arantes
 
Agc 04-linguagem de desenho paramétrico
Agc 04-linguagem de desenho paramétricoAgc 04-linguagem de desenho paramétrico
Agc 04-linguagem de desenho paramétricoAnderson Ricardo Cunha
 
Apostila Geoprocessamento Aplicado Geologia
Apostila Geoprocessamento Aplicado GeologiaApostila Geoprocessamento Aplicado Geologia
Apostila Geoprocessamento Aplicado GeologiaLeonardo Vigário
 
Processos de fabricação: Estudo avançados sobre a prototipagem rápida
Processos de fabricação: Estudo avançados sobre a prototipagem rápidaProcessos de fabricação: Estudo avançados sobre a prototipagem rápida
Processos de fabricação: Estudo avançados sobre a prototipagem rápidaRafael Lial
 
tccfinal
tccfinaltccfinal
tccfinalrjunkes
 
Programacao Orientada A Objetos (Java)
Programacao Orientada A Objetos (Java)Programacao Orientada A Objetos (Java)
Programacao Orientada A Objetos (Java)Robson Silva Espig
 
Costa; maicon moreno da cidades panorâmicas
Costa; maicon moreno da   cidades panorâmicasCosta; maicon moreno da   cidades panorâmicas
Costa; maicon moreno da cidades panorâmicasAcervo_DAC
 

Mais procurados (13)

Treino redes2003
Treino redes2003Treino redes2003
Treino redes2003
 
MODELAGEM E IMPLEMENTAÇÃO DE UM VISUALIZADOR PARA SIMULAÇÕES COMPUTACIONAIS D...
MODELAGEM E IMPLEMENTAÇÃO DE UM VISUALIZADOR PARA SIMULAÇÕES COMPUTACIONAIS D...MODELAGEM E IMPLEMENTAÇÃO DE UM VISUALIZADOR PARA SIMULAÇÕES COMPUTACIONAIS D...
MODELAGEM E IMPLEMENTAÇÃO DE UM VISUALIZADOR PARA SIMULAÇÕES COMPUTACIONAIS D...
 
Agc 04-linguagem de desenho paramétrico
Agc 04-linguagem de desenho paramétricoAgc 04-linguagem de desenho paramétrico
Agc 04-linguagem de desenho paramétrico
 
Agc 01-comandos e funções
Agc 01-comandos e funçõesAgc 01-comandos e funções
Agc 01-comandos e funções
 
Apostila Geoprocessamento Aplicado Geologia
Apostila Geoprocessamento Aplicado GeologiaApostila Geoprocessamento Aplicado Geologia
Apostila Geoprocessamento Aplicado Geologia
 
Processos de fabricação: Estudo avançados sobre a prototipagem rápida
Processos de fabricação: Estudo avançados sobre a prototipagem rápidaProcessos de fabricação: Estudo avançados sobre a prototipagem rápida
Processos de fabricação: Estudo avançados sobre a prototipagem rápida
 
tccfinal
tccfinaltccfinal
tccfinal
 
2014 Monografia Final
2014 Monografia Final2014 Monografia Final
2014 Monografia Final
 
Programacao Orientada A Objetos (Java)
Programacao Orientada A Objetos (Java)Programacao Orientada A Objetos (Java)
Programacao Orientada A Objetos (Java)
 
Costa; maicon moreno da cidades panorâmicas
Costa; maicon moreno da   cidades panorâmicasCosta; maicon moreno da   cidades panorâmicas
Costa; maicon moreno da cidades panorâmicas
 
Manual de portugol
Manual de portugolManual de portugol
Manual de portugol
 
Apostila Powerpoint
Apostila PowerpointApostila Powerpoint
Apostila Powerpoint
 
Estrutura de dados
Estrutura de dadosEstrutura de dados
Estrutura de dados
 

Destaque

Olujumu Oladipo Patrick
Olujumu Oladipo PatrickOlujumu Oladipo Patrick
Olujumu Oladipo PatrickFapin
 
Blooms taxonomy thomasjones
Blooms taxonomy thomasjonesBlooms taxonomy thomasjones
Blooms taxonomy thomasjonesAndrew Gunn
 
Tren transiberiano
Tren transiberianoTren transiberiano
Tren transiberianoArpon Files
 
Ο πολιτισμός της αναγέννησης
Ο πολιτισμός της αναγέννησηςΟ πολιτισμός της αναγέννησης
Ο πολιτισμός της αναγέννησηςan kar
 
Matthew Gaiser Mindsumo Shower Winning Entry
Matthew Gaiser Mindsumo Shower Winning EntryMatthew Gaiser Mindsumo Shower Winning Entry
Matthew Gaiser Mindsumo Shower Winning EntryMatthew Gaiser
 
Indica: The quiz of india prelims
Indica: The quiz of india prelimsIndica: The quiz of india prelims
Indica: The quiz of india prelimsAmitabh Sharma
 
"Golden Time Management Quotes-" Time is Precious!
"Golden Time Management Quotes-" Time is Precious!"Golden Time Management Quotes-" Time is Precious!
"Golden Time Management Quotes-" Time is Precious!Shyama Shankar
 
Indian villages Strength and weakness
Indian villages Strength and weaknessIndian villages Strength and weakness
Indian villages Strength and weaknessPrudhvi Thota
 
тренды избирательных кампаний
тренды избирательных кампанийтренды избирательных кампаний
тренды избирательных кампанийAndrey Ponomarev
 
ZeitzeugenInterview
ZeitzeugenInterviewZeitzeugenInterview
ZeitzeugenInterviewguest895e453
 

Destaque (12)

Olujumu Oladipo Patrick
Olujumu Oladipo PatrickOlujumu Oladipo Patrick
Olujumu Oladipo Patrick
 
Topología
TopologíaTopología
Topología
 
Edwards
EdwardsEdwards
Edwards
 
Blooms taxonomy thomasjones
Blooms taxonomy thomasjonesBlooms taxonomy thomasjones
Blooms taxonomy thomasjones
 
Tren transiberiano
Tren transiberianoTren transiberiano
Tren transiberiano
 
Ο πολιτισμός της αναγέννησης
Ο πολιτισμός της αναγέννησηςΟ πολιτισμός της αναγέννησης
Ο πολιτισμός της αναγέννησης
 
Matthew Gaiser Mindsumo Shower Winning Entry
Matthew Gaiser Mindsumo Shower Winning EntryMatthew Gaiser Mindsumo Shower Winning Entry
Matthew Gaiser Mindsumo Shower Winning Entry
 
Indica: The quiz of india prelims
Indica: The quiz of india prelimsIndica: The quiz of india prelims
Indica: The quiz of india prelims
 
"Golden Time Management Quotes-" Time is Precious!
"Golden Time Management Quotes-" Time is Precious!"Golden Time Management Quotes-" Time is Precious!
"Golden Time Management Quotes-" Time is Precious!
 
Indian villages Strength and weakness
Indian villages Strength and weaknessIndian villages Strength and weakness
Indian villages Strength and weakness
 
тренды избирательных кампаний
тренды избирательных кампанийтренды избирательных кампаний
тренды избирательных кампаний
 
ZeitzeugenInterview
ZeitzeugenInterviewZeitzeugenInterview
ZeitzeugenInterview
 

Semelhante a Animação foto-realista de fluidos utilizando métodos Lagrangeanos

Modelagem de Ambientes de Computação Ubíqua Utilizando Simulação
Modelagem de Ambientes de Computação Ubíqua Utilizando SimulaçãoModelagem de Ambientes de Computação Ubíqua Utilizando Simulação
Modelagem de Ambientes de Computação Ubíqua Utilizando SimulaçãoJurmir Canal Neto
 
Desenvolvimento de um software para análise de escoamentos internos em dutos ...
Desenvolvimento de um software para análise de escoamentos internos em dutos ...Desenvolvimento de um software para análise de escoamentos internos em dutos ...
Desenvolvimento de um software para análise de escoamentos internos em dutos ...Marco Túlio Pereira Silveira
 
Dissertação de Mestrado - Planejamento para Serviços Web Semânticos
Dissertação de Mestrado - Planejamento para Serviços Web SemânticosDissertação de Mestrado - Planejamento para Serviços Web Semânticos
Dissertação de Mestrado - Planejamento para Serviços Web SemânticosJuliana Chahoud
 
Troca de contexto segura em sistemas operacionais embarcados utilizando técni...
Troca de contexto segura em sistemas operacionais embarcados utilizando técni...Troca de contexto segura em sistemas operacionais embarcados utilizando técni...
Troca de contexto segura em sistemas operacionais embarcados utilizando técni...Rodrigo Almeida
 
Aplicac3a7c3a3o da-abordagem-gqm-para-a-definic3a7c3a3o-de-um-processo-de-eng...
Aplicac3a7c3a3o da-abordagem-gqm-para-a-definic3a7c3a3o-de-um-processo-de-eng...Aplicac3a7c3a3o da-abordagem-gqm-para-a-definic3a7c3a3o-de-um-processo-de-eng...
Aplicac3a7c3a3o da-abordagem-gqm-para-a-definic3a7c3a3o-de-um-processo-de-eng...JADSON SANTOS
 
Comparação de Tecnologias para Web - JBoss Seam e Ruby on Rails
Comparação de Tecnologias para Web - JBoss Seam e Ruby on RailsComparação de Tecnologias para Web - JBoss Seam e Ruby on Rails
Comparação de Tecnologias para Web - JBoss Seam e Ruby on RailsMawcor
 
Virtualizacao de Servidores: Um comparativo entre VMware e Xen
Virtualizacao de Servidores: Um comparativo entre VMware e XenVirtualizacao de Servidores: Um comparativo entre VMware e Xen
Virtualizacao de Servidores: Um comparativo entre VMware e XenAlan Brumate
 
Desenvolvimento de um Sistema de Controle para Quadrirrotores
Desenvolvimento de um Sistema de Controle para Quadrirrotores Desenvolvimento de um Sistema de Controle para Quadrirrotores
Desenvolvimento de um Sistema de Controle para Quadrirrotores UmbertoXavierdaSilva
 
Implementation of a Participatory Sensing Solution to Collect Data About Pave...
Implementation of a Participatory Sensing Solution to Collect Data About Pave...Implementation of a Participatory Sensing Solution to Collect Data About Pave...
Implementation of a Participatory Sensing Solution to Collect Data About Pave...Eduardo Carrara de Araujo
 
TCC - Engenharia de Software Baseada em Componentes
TCC - Engenharia de Software Baseada em ComponentesTCC - Engenharia de Software Baseada em Componentes
TCC - Engenharia de Software Baseada em ComponentesJuliano Tiago Rinaldi
 
Desenvolvimento de sites responsivos utilizando o framework Bootstrap com apl...
Desenvolvimento de sites responsivos utilizando o framework Bootstrap com apl...Desenvolvimento de sites responsivos utilizando o framework Bootstrap com apl...
Desenvolvimento de sites responsivos utilizando o framework Bootstrap com apl...joselialcosta
 
Investigação de Predição de Fluxos em Redes de Computadores
Investigação de Predição de Fluxos em Redes de ComputadoresInvestigação de Predição de Fluxos em Redes de Computadores
Investigação de Predição de Fluxos em Redes de ComputadoresOrlando Junior
 
Plano de projeto: Bichos do Campus na Web
Plano de projeto: Bichos do Campus na WebPlano de projeto: Bichos do Campus na Web
Plano de projeto: Bichos do Campus na WebJorge Roberto
 
Interface gráfico para gestão de uma agência de viagens
Interface gráfico para gestão de uma agência de viagensInterface gráfico para gestão de uma agência de viagens
Interface gráfico para gestão de uma agência de viagenspjclima
 

Semelhante a Animação foto-realista de fluidos utilizando métodos Lagrangeanos (20)

Tese de mestrado
Tese de mestradoTese de mestrado
Tese de mestrado
 
Modelagem de Ambientes de Computação Ubíqua Utilizando Simulação
Modelagem de Ambientes de Computação Ubíqua Utilizando SimulaçãoModelagem de Ambientes de Computação Ubíqua Utilizando Simulação
Modelagem de Ambientes de Computação Ubíqua Utilizando Simulação
 
Desenvolvimento de um software para análise de escoamentos internos em dutos ...
Desenvolvimento de um software para análise de escoamentos internos em dutos ...Desenvolvimento de um software para análise de escoamentos internos em dutos ...
Desenvolvimento de um software para análise de escoamentos internos em dutos ...
 
PDI - Notas De Aula
PDI - Notas De AulaPDI - Notas De Aula
PDI - Notas De Aula
 
Dissertacao
DissertacaoDissertacao
Dissertacao
 
Dissertação de Mestrado - Planejamento para Serviços Web Semânticos
Dissertação de Mestrado - Planejamento para Serviços Web SemânticosDissertação de Mestrado - Planejamento para Serviços Web Semânticos
Dissertação de Mestrado - Planejamento para Serviços Web Semânticos
 
Troca de contexto segura em sistemas operacionais embarcados utilizando técni...
Troca de contexto segura em sistemas operacionais embarcados utilizando técni...Troca de contexto segura em sistemas operacionais embarcados utilizando técni...
Troca de contexto segura em sistemas operacionais embarcados utilizando técni...
 
Aplicac3a7c3a3o da-abordagem-gqm-para-a-definic3a7c3a3o-de-um-processo-de-eng...
Aplicac3a7c3a3o da-abordagem-gqm-para-a-definic3a7c3a3o-de-um-processo-de-eng...Aplicac3a7c3a3o da-abordagem-gqm-para-a-definic3a7c3a3o-de-um-processo-de-eng...
Aplicac3a7c3a3o da-abordagem-gqm-para-a-definic3a7c3a3o-de-um-processo-de-eng...
 
Comparação de Tecnologias para Web - JBoss Seam e Ruby on Rails
Comparação de Tecnologias para Web - JBoss Seam e Ruby on RailsComparação de Tecnologias para Web - JBoss Seam e Ruby on Rails
Comparação de Tecnologias para Web - JBoss Seam e Ruby on Rails
 
Virtualizacao de Servidores: Um comparativo entre VMware e Xen
Virtualizacao de Servidores: Um comparativo entre VMware e XenVirtualizacao de Servidores: Um comparativo entre VMware e Xen
Virtualizacao de Servidores: Um comparativo entre VMware e Xen
 
Desenvolvimento de um Sistema de Controle para Quadrirrotores
Desenvolvimento de um Sistema de Controle para Quadrirrotores Desenvolvimento de um Sistema de Controle para Quadrirrotores
Desenvolvimento de um Sistema de Controle para Quadrirrotores
 
Implementation of a Participatory Sensing Solution to Collect Data About Pave...
Implementation of a Participatory Sensing Solution to Collect Data About Pave...Implementation of a Participatory Sensing Solution to Collect Data About Pave...
Implementation of a Participatory Sensing Solution to Collect Data About Pave...
 
TCC - Engenharia de Software Baseada em Componentes
TCC - Engenharia de Software Baseada em ComponentesTCC - Engenharia de Software Baseada em Componentes
TCC - Engenharia de Software Baseada em Componentes
 
Desenvolvimento de sites responsivos utilizando o framework Bootstrap com apl...
Desenvolvimento de sites responsivos utilizando o framework Bootstrap com apl...Desenvolvimento de sites responsivos utilizando o framework Bootstrap com apl...
Desenvolvimento de sites responsivos utilizando o framework Bootstrap com apl...
 
Dm ivo costa_2009_ant
Dm ivo costa_2009_antDm ivo costa_2009_ant
Dm ivo costa_2009_ant
 
Investigação de Predição de Fluxos em Redes de Computadores
Investigação de Predição de Fluxos em Redes de ComputadoresInvestigação de Predição de Fluxos em Redes de Computadores
Investigação de Predição de Fluxos em Redes de Computadores
 
Tese marinho
Tese marinhoTese marinho
Tese marinho
 
Plano de projeto: Bichos do Campus na Web
Plano de projeto: Bichos do Campus na WebPlano de projeto: Bichos do Campus na Web
Plano de projeto: Bichos do Campus na Web
 
Ct java vi_2010_16
Ct java vi_2010_16Ct java vi_2010_16
Ct java vi_2010_16
 
Interface gráfico para gestão de uma agência de viagens
Interface gráfico para gestão de uma agência de viagensInterface gráfico para gestão de uma agência de viagens
Interface gráfico para gestão de uma agência de viagens
 

Animação foto-realista de fluidos utilizando métodos Lagrangeanos

  • 1. UNIVERSIDADE EST´ACIO DE S´A JO˜AO VICENTE PIRES DOS REIS FILHO ANIMAC¸ ˜AO FOTO-REALISTA DE FLUIDOS UTILIZANDO M´ETODOS LAGRANGEANOS Petr´opolis 2010
  • 2. JO˜AO VICENTE PIRES DOS REIS FILHO ANIMAC¸ ˜AO FOTO-REALISTA DE FLUIDOS UTILIZANDO M´ETODOS LAGRANGEANOS Monografia apresentada `a Universidade Est´acio de S´a como requisito parcial para a obten¸c˜ao do grau de Bacharel em Sistemas de Informa¸c˜ao. ORIENTADOR: Prof. D.Sc. Rodrigo Luis de Souza da Silva Petr´opolis 2010
  • 3. JO˜AO VICENTE PIRES DOS REIS FILHO ANIMAC¸ ˜AO FOTO-REALISTA DE FLUIDOS UTILIZANDO M´ETODOS LAGRANGEANOS Monografia apresentada `a Universidade Est´acio de S´a como requisito parcial para a obten¸c˜ao do grau de Bacharel em Sistemas de Informa¸c˜ao. Aprovada em 26 de fevereiro de 2010. BANCA EXAMINADORA Prof. D.Sc. Rodrigo Luis de Souza da Silva Universidade Federal de Juiz de Fora Prof. M.Sc. Rog´erio Albuquerque de Almeida Universidade Est´acio de S´a
  • 4. Dedico este trabalho `a minha fam´ılia. ★★★
  • 5. Agradecimentos Primeiramente, agrade¸co a Deus por este dia, aqui concluindo mais uma etapa de minha vida acadˆemica. Aos meus orientadores professores Rodrigo Luis de Souza da Silva e Gilson Antˆonio Giraldi por toda paciˆencia, tolerˆancia, for¸ca e principalmente pelos conhecimentos e exem- plos cient´ıficos e matem´aticos. As s´abias sugest˜oes que me deram ao longo do caminho que trilhei, fizeram com que esse se tornasse mais suave e melhor desenvolvido. Aos meus pais, n˜ao s´o pelo carinho e suporte incondicionais, mas tamb´em pela intui¸c˜ao do meu pai ao comprar nosso primeiro computador, quando eu ainda era crian¸ca, o que despertou em mim a curiosidade pela inform´atica. Aos meus verdadeiros amigos, Ana, Andr´e, 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 direta ou indireta, que porventura n˜ao foram citados, meus sinceros agradecimentos.
  • 6. Resumo Neste trabalho, ser´a apresentado um software para anima¸c˜ao computacional de fluidos. Inicialmente, ser´a discutido o modelo matem´atico utilizado na simula¸c˜ao. Em seguida, ser˜ao mostrados os dois modos de utiliza¸c˜ao do aplicativo criado: um em tempo real para experimenta¸c˜ao dos parˆametros de anima¸c˜ao e outro em modo off-line com o obje- tivo de alcan¸car um maior n´ıvel de realismo gr´afico. Aspectos de engenharia de software tamb´em ser˜ao discutidos, tais como a metodologia de desenvolvimento utilizada e a etapa de modelagem. Finalmente, ser˜ao apresentadas as conclus˜oes descrevendo a usabilidade e potencialidade do aplicativo criado para gera¸c˜ao de anima¸c˜ao de fluidos. Palavras-chave: Dinˆamica de Fluidos; Visualiza¸c˜ao Cient´ıfica; Renderiza¸c˜ao.
  • 7. 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.
  • 8. Sum´ario 1 Introdu¸c˜ao 10 2 Trabalhos Relacionados 13 3 M´etodo de Simula¸c˜ao 16 3.1 Smoothed Particle Hydrodynamics (SPH) . . . . . . . . . . . . . . . . . . . 18 3.2 Detalhes de Implementa¸c˜ao . . . . . . . . . . . . . . . . . . . . . . . . . . 19 4 M´etodo de Renderiza¸c˜ao 24 4.1 Renderiza¸c˜ao em Tempo Real . . . . . . . . . . . . . . . . . . . . . . . . . 24 4.1.1 Interface Gr´afica com Usu´ario . . . . . . . . . . . . . . . . . . . . . 25 4.1.2 Modos de Visualiza¸c˜ao do Fluido . . . . . . . . . . . . . . . . . . . 26 4.1.3 Visualizando Dados do Modelo do Fluido . . . . . . . . . . . . . . . 27 4.2 Renderiza¸c˜ao em Off-line . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 5 Metodologia de Desenvolvimento do Aplicativo 30 5.1 Modelagem do Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 5.1.1 Diagrama de Casos de Uso . . . . . . . . . . . . . . . . . . . . . . . 31 5.1.2 Diagrama de Classes . . . . . . . . . . . . . . . . . . . . . . . . . . 34 5.1.3 Diagramas de Sequˆencia . . . . . . . . . . . . . . . . . . . . . . . . 39 6 Resultados 46 7 Conclus˜oes e Trabalhos Futuros 51 Referˆencias 52
  • 9. Lista de Ilustra¸c˜oes 3.1 Malha regular utilizada para acelerar os c´alculos. . . . . . . . . . . . . . . 20 4.1 Interface Gr´afica com Usu´ario e Painel de Controle. . . . . . . . . . . . . . 25 4.2 Diversos Modos de Visualiza¸c˜ao do Fluido. . . . . . . . . . . . . . . . . . . 26 4.3 Dados do Modelo do Fluido sendo visualizados. . . . . . . . . . . . . . . . 27 4.4 Etapa de tra¸cado do raio. . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 5.1 Diagrama de Casos de Uso. . . . . . . . . . . . . . . . . . . . . . . . . . . 31 5.2 Diagrama de Classes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 5.3 Diagrama de Sequˆencia: Inicializa¸c˜ao da Aplica¸c˜ao. . . . . . . . . . . . . . 40 5.4 Diagrama de Sequˆencia: Inicializa¸c˜ao do Fluido. . . . . . . . . . . . . . . . 41 5.5 Diagrama de Sequˆencia: Atualiza¸c˜ao do Fluido. . . . . . . . . . . . . . . . 43 5.6 Diagrama de Sequˆencia: Renderiza¸c˜ao em Off-line. . . . . . . . . . . . . . 45 6.1 Velocidade inicial das part´ıculas (em vermelho). . . . . . . . . . . . . . . . 47 6.2 Sequˆencia de imagens do primeiro exemplo de anima¸c˜ao. Os tempos est˜ao marcados em segundos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 6.3 Sequˆencia de imagens do segundo exemplo de anima¸c˜ao. Os tempos est˜ao marcados em segundos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 6.4 Sequˆencia de imagens do terceiro exemplo de anima¸c˜ao. Os tempos est˜ao marcados em segundos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
  • 10. Cap´ıtulo 1 Introdu¸c˜ao Nas ´ultimas trˆes d´ecadas, t´ecnicas e modelos em dinˆamica de fluidos computacional (DFC) vˆem sendo aplicados com sucesso em computa¸c˜ao gr´afica e gera¸c˜ao de efeitos visuais. A anima¸c˜ao 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 intera¸c˜ao de v´arios fenˆomenos como a convec¸c˜ao, difus˜ao, turbulˆencia e tens˜ao superficial [23]. Al´em disso, a anima¸c˜ao computacional de fluidos ´e um campo multidisciplinar, ou seja, n˜ao exige apenas conheci- mentos sobre a f´ısica dos fenˆomenos, mas tamb´em sobre computa¸c˜ao gr´afica e visualiza¸c˜ao cient´ıfica [39, 11]. As pesquisas em anima¸c˜ao de fluidos se dividem basicamente em trˆes etapas [39]. Primeiramente, temos a busca de novos modelos em DFC que sejam mais eficientes do ponto de vista da computa¸c˜ao gr´afica. Esta etapa envolve tanto a pesquisa de novos mo- delos f´ısicos quanto o ajuste de modelos j´a conhecidos, sem perder de vista o fato de que o objetivo final ´e a gera¸c˜ao de efeitos visuais, e n˜ao a descri¸c˜ao de fenˆomenos naturais [7, 11]. Uma vez resolvidas numericamente as equa¸c˜oes de fluidos, passa-se a fase de renderi- za¸c˜ao, onde t´ecnicas de computa¸c˜ao gr´afica s˜ao aplicadas sobre os campos gerados, com o objetivo de criar efeitos visuais, tais como transparˆencia, imagens refletidas na superf´ıcie de um l´ıquido, ou mesmo, efeitos especiais que incluem deforma¸c˜ao de paisagens, incˆendios, 10
  • 11. CAP´ITULO 1. INTRODUC¸ ˜AO 11 etc [17, 27, 18, 35]. Finalmente, as t´ecnicas adotadas devem ser incorporadas a um software, com inter- faces gr´aficas convenientes, o qual permita o uso destes recursos (modelos de fluidos e computa¸c˜ao gr´afica) por artistas gr´aficos e animadores (ver [38], como exemplo). Neste trabalho, para a simula¸c˜ao e modelagem dos fluidos foi utilizado o m´etodo SPH (Smoothed Particle Hydrodynamics), juntamente com as equa¸c˜oes de Navier-Stokes [23, 11]. O SPH foi escolhido devido suas vantagens, como por exemplo o fato de n˜ao depender de uma malha tridimensional [3] previamente definida. Isto permite criar cenas dinˆamicas, com fronteiras vari´aveis 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 altera¸c˜oes ocorrem. Foi constru´ıdo um software que desempenha duas fun¸c˜oes. Primeiro, oferece um modo de simula¸c˜ao com renderiza¸c˜ao em tempo real, que permite a realiza¸c˜ao de testes e ajustes dos diversos parˆametros num´ericos e de modelagem dos fluidos, como a press˜ao, viscosidade, entre outros. Com isso, os artistas gr´aficos ser˜ao capazes de fazer os ajustes necess´arios para obter a anima¸c˜ao que desejarem. A renderiza¸c˜ao em tempo real ´e baseada em m´etodos tradicionais de scanline rendering e em t´ecnicas simplificadas [3]. Por exemplo, as part´ıculas do fluido s˜ao representadas por pequenas esferas coloridas. Tamb´em ´e poss´ıvel a visualiza¸c˜ao de dados num´ericos da simula¸c˜ao, tais como o gradiente de press˜ao, velocidade e acelera¸c˜ao das part´ıculas, representados por pequenos vetores coloridos em fun¸c˜ao da intensidade de cada campo. Campos escalares (densidade, m´odulo da velocidade, etc.) s˜ao visualizados utilizando-se uma escala de cores. A segunda fun¸c˜ao ´e um modo de renderiza¸c˜ao em off-line que utiliza o PBRT (Physically- Based Ray Tracer); uma biblioteca baseada em f´ısica para renderiza¸c˜ao foto-realista. Neste caso, s˜ao utilizadas t´ecnicas baseadas em ray-tracing, que ´e um m´etodo que simula o tra- jeto que os raios de luz percorrem desde as fontes luminosas, passando pelas reflex˜oes e refra¸c˜oes nos diversos objetos da cena, at´e chegar `a lente da cˆamera virtual. Apesar do seu alto custo computacional, essas t´ecnicas s˜ao capazes de criar imagens foto-realistas com maior grau de detalhamento [27].
  • 12. CAP´ITULO 1. INTRODUC¸ ˜AO 12 Para diminuir o custo de processamento da renderiza¸c˜ao em off-line e melhor utilizar os recursos computacionais dispon´ıveis atualmente, foram utilizadas t´ecnicas de multithreading para possibilitar a renderiza¸c˜ao de v´arios quadros da anima¸c˜ao em paralelo, utilizando to- dos os n´ucleos de processamento oferecidos pelos processadores atuais [13]. Este trabalho est´a estruturado como segue. No cap´ıtulo 2 ´e feita uma breve revis˜ao sobre alguns trabalhos relacionados. Em seguida apresenta-se o m´etodo para simula¸c˜ao de fluidos que foi utilizado. No cap´ıtulo 4, s˜ao mostradas as t´ecnicas de renderiza¸c˜ao presentes no aplicativo desenvolvido. Continuando, ´e discutida no cap´ıtulo 5 a metodologia utilizada no desenvolvimento do aplicativo. Finalmente, no cap´ıtulo 6 s˜ao apresentados os resultados obtidos e no cap´ıtulo 7 s˜ao expostas as conclus˜oes e trabalhos futuros.
  • 13. Cap´ıtulo 2 Trabalhos Relacionados Os diferentes m´etodos encontrados na literatura para anima¸c˜ao de fluidos, baseados em modelos de DFC, s˜ao fundamentados nas equa¸c˜oes de Navier-Stokes, com t´ecnicas de discretiza¸c˜ao baseadas em diferen¸cas finitas impl´ıcitas [34] e expl´ıcitas [9], bem como em m´etodos lagrangeanos tais como o M´etodo das Caracter´ısticas [34], Smoothed Particle Hydrodynamics (SPH) [6] e Moving-Particle Semi-Implicit (MPS) [28]. O m´etodo SPH ´e livre de malhas (assim como o MPS) e vem sendo aplicado com sucesso em simula¸c˜oes de fluidos compress´ıveis, para a descri¸c˜ao da dinˆamica de materiais, estudo de explos˜oes, fenˆomenos de transporte, dentre outras aplica¸c˜oes [22]. O SPH utiliza um sistema de part´ıculas e n´ucleos de interpola¸c˜ao para a discretiza¸c˜ao das equa¸c˜oes de Navier- Stokes. Implementa¸c˜oes deste m´etodo para arquiteturas paralelas foram desenvolvidas com o objetivo de melhorar a performance do mesmo [36, 30]. Do ponto de vista da computa¸c˜ao gr´afica, o fato do SPH n˜ao depender de uma malha previamente definida ´e uma vantagem, se comparado com os m´etodos cl´assicos. As cenas em um filme s˜ao em geral dinˆamicas, com fronteiras vari´aveis em fun¸c˜ao de novos objetos que entram na cena `a medida que esta se desenvolve. Desta forma, m´etodos que n˜ao fazem uso de malhas, podem ser vantajosos por evitar o custo extra de regerar a malha sempre que tais altera¸c˜oes ocorrem. Essas van- tagens vˆem despertando o interesse dos pesquisadores em computa¸c˜ao gr´afica. Nesta ´area, encontramos aplica¸c˜oes do SPH para simuladores em medicina [24], anima¸c˜ao de fluidos so- 13
  • 14. CAP´ITULO 2. TRABALHOS RELACIONADOS 14 bre superf´ıcies de terrenos [21], intera¸c˜ao fluido-fluido [25] e fluido-s´olido [33, 12], simula¸c˜ao de fluidos multi-fase [16], simula¸c˜ao de superf´ıcies livres [4, 8, 2, 20]. Al´em disso, imple- menta¸c˜oes em GPU vˆem sendo exploradas para melhorar o desempenho computacional das aplica¸c˜oes [14]. Por exemplo, no campo de sistemas de treinamento de cirurgias m´edicas, em [24] foi desenvolvida uma t´ecnica baseada no SPH para a simula¸c˜ao interativa do sangue. J´a no campo da simula¸c˜ao de fluxos superficiais sobre terrenos, em [21] foram estudadas t´ecnicas baseadas no SPH parar criar simula¸c˜oes f´ısicas realistas de rios. Essas t´ecnicas permitem que a simula¸c˜ao seja feita em tempo real e, portanto, usada em jogos e ambientes de realidade virtual. No tema envolvendo intera¸c˜ao fluido-s´olido o trabalho [33] descreve um m´etodo baseado em SPH para simula¸c˜ao de l´ıquidos e s´olidos deform´aveis e sua intera¸c˜ao. O modelo descrito por esse trabalho tamb´em pode ser utilizado para simula¸c˜ao de fluidos multi-fase (l´ıquido-s´olido), como tamb´em demonstrado em [16]. A ´area de simula¸c˜ao de superf´ıcies livres ´e importante para a anima¸c˜ao de cenas envolvendo mares, rios, inun- da¸c˜oes, dentre outras. Podemos entender como superf´ıcie livre a regi˜ao do fluido que n˜ao est´a 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 m´etodo SPH para fluidos incompress´ıveis utilizado para anima¸c˜ao de ondas do mar. O m´etodo utiliza termos de corre¸c˜ao, derivados de formula¸c˜oes variacionais, para garantir a incompressibilidade de fluido. Finalmente, t´ecnicas de renderiza¸c˜ao precisam ser utilizadas para garantir o n´ıvel de realismo ou efeito visual desejado. A renderiza¸c˜ao foto real´ıstica pode ser feita atrav´es de v´arios algoritmos, incluindo path tracing, bidirectional path tracing [15], Metropolis light transport [35] e photon mapping [18]. Artigos de revis˜ao interessantes nessa ´area podem ser encontrados em [1, 17]. Como um exemplo de um software j´a em uso na ´area de anima¸c˜ao computacional de fluidos, pode ser citado o Realflow [31]. No entanto, ´e um aplicativo comercial cujo c´odigo ´e fechado, o que implica em custos para obten¸c˜ao de licen¸ca e limita¸c˜oes para incorporar novas funcionalidades. Portanto, uma motiva¸c˜ao para desenvolvimento do aplicativo des-
  • 15. CAP´ITULO 2. TRABALHOS RELACIONADOS 15 crito neste texto ´e oferecer uma alternativa de c´odigo aberto, que seja extens´ıvel a novas funcionalidades. O foco do presente trabalho ´e a gera¸c˜ao de anima¸c˜oes de fluidos realistas tanto do ponto de vista f´ısico quanto de renderiza¸c˜ao. Assim, nosso trabalho envolve superf´ıcies livres e t´ecnicas de ilumina¸c˜ao global. Al´em disso, estamos tamb´em interessados na anima¸c˜ao de cenas envolvendo intera¸c˜ao fluido-solido.
  • 16. Cap´ıtulo 3 M´etodo de Simula¸c˜ao Este cap´ıtulo come¸ca com uma breve descri¸c˜ao do papel das simula¸c˜oes num´ericas em computadores e dos procedimentos utilizados para resolver tais simula¸c˜oes, descrevendo quais s˜ao as principais etapas de resolu¸c˜ao e como elas foram importantes na escolha do m´etodo utilizado neste trabalho. Com a ajuda do crescente poder computacional, as simula¸c˜oes num´ericas vˆem ganhando destaque tanto na resolu¸c˜ao de problemas pr´aticos complexos da engenharia e ciˆencia quanto na aproxima¸c˜ao dos mesmos criando representa¸c˜oes virtuais para outros fins, como o entretenimento e a ilustra¸c˜ao gr´afica. A simula¸c˜ao num´erica traduz os aspectos mais importantes de um problema f´ısico para uma descri¸c˜ao matem´atica discreta, que pode ser usada pra recriar e resolver problemas e fenˆomenos do mundo real no computador. Para se criar uma solu¸c˜ao para esse tipo de simula¸c˜ao, alguns passos s˜ao necess´arios. Primeiramente modelos matem´aticos, possivelmente com algumas simplifica¸c˜oes, s˜ao cria- dos para representar o fenˆomeno real observado. Geralmente esses modelos s˜ao expressos atrav´es de equa¸c˜oes governantes com condi¸c˜oes iniciais e condi¸c˜oes de borda apropriadas. As equa¸c˜oes governantes podem ser um conjunto de equa¸c˜oes diferenciais ordin´arias, de equa¸c˜oes diferenciais parciais, de equa¸c˜oes de integra¸c˜ao ou de equa¸c˜oes em quaisquer ou- tras formas, mas que sejam representa¸c˜oes de leis da f´ısica. As condi¸c˜oes de borda e iniciais s˜ao necess´arias para se determinar o valor das vari´aveis do campo de simula¸c˜ao no espa¸co 16
  • 17. CAP´ITULO 3. M´ETODO DE SIMULAC¸ ˜AO 17 e no tempo. [22] Em seguida, para resolver numericamente as equa¸c˜oes governantes, ´e necess´ario a uti- liza¸c˜ao de um m´etodo para a discretiza¸c˜ao do dom´ınio do problema. Em outras palavras, ´e preciso representar um problema do mundo real que ocorre em um espa¸co cont´ınuo de uma forma discretizada, ou seja, com um n´umero finito de componentes, de maneira que o computador seja capaz de guardar os dados da simula¸c˜ao em sua mem´oria e os processar. Essa representa¸c˜ao ´e conhecida como o modelo computacional do problema a ser simulado e ´e utilizada para as aproxima¸c˜oes num´ericas. H´a dois tipos de descri¸c˜oes principais que podem ser usados na cria¸c˜ao deste modelo computacional: a Euleriana e a Lagrangeana. Do ponto de vista das equa¸c˜oes governantes, a descri¸c˜ao Euleriana ´e uma descri¸c˜ao espacial e ´e tipicamente representada pelo m´etodo das diferen¸cas finitas [22]. Ela subdivide a geometria do dom´ınio em regi˜oes fixas (cubos, por exemplo) e calcula os valores num´ericos atrav´es do tempo sempre nessas mesmas regi˜oes. J´a a Lagrangeana ´e uma descri¸c˜ao material geralmente representada pelo m´etodo de elementos finitos [22]. Neste caso, s˜ao distribu´ıdos pelo dom´ınio inicial do problema pontos de aferi¸c˜ao dos valores num´ericos, que s˜ao mut´aveis no tempo, podendo acompanhar de forma mais flex´ıvel eventuais mudan¸cas no formato geom´etrico do dom´ınio do problema, o que ´e uma das grandes vantagens deste tipo de descri¸c˜ao para a simula¸c˜ao de fluidos. Ap´os a discretiza¸c˜ao do dom´ınio, ´e feita uma discretiza¸c˜ao num´erica para modificar opera¸c˜oes de integra¸c˜ao ou deriva¸c˜ao das equa¸c˜oes governantes de sua forma cont´ınua para sua representa¸c˜ao discreta. A discretiza¸c˜ao num´erica ´e baseada na teoria de aproxima¸c˜ao de fun¸c˜oes e a sua precis˜ao est´a intimamente ligada ao modo como o dom´ınio foi discretizado. Em seguida, feitas ambas as discretiza¸c˜oes num´erica e do dom´ınio, o conjunto de equa¸c˜oes originais das leis f´ısicas que regem a simula¸c˜ao ´e convertido num conjunto de equa¸c˜oes alg´ebricas ou equa¸c˜oes diferenciais ordin´arias ou parciais, que podem ser re- solvidas utilizando-se rotinas num´ericas j´a existentes, como por exemplo um esquema de integra¸c˜ao como o Leapfrog [29, 5], que foi utilizado neste trabalho. Finalmente, a ´ultima etapa para criar a simula¸c˜ao ´e codificar e implementar em uma lin- guagem de programa¸c˜ao todas as etapas anteriormente descritas, levando em considera¸c˜ao
  • 18. CAP´ITULO 3. M´ETODO DE SIMULAC¸ ˜AO 18 a precis˜ao num´erica, a performance, a robustez e a facilidade de uso. A seguir, ser´a descrito em mais detalhes o m´etodo num´erico lagrangeano utilizado na implementa¸c˜ao deste trabalho. 3.1 Smoothed Particle Hydrodynamics (SPH) Nesta se¸c˜ao ser˜ao explicadas as ideias b´asicas do SPH, como a representa¸c˜ao do fluido discretizada aproximada por part´ıculas e a utiliza¸c˜ao de n´ucleos de suaviza¸c˜ao. O SPH representa o modelo f´ısico do fluido atrav´es de um sistema de part´ıculas, que ´e um conjunto finito de elementos. Cada part´ıcula se encontra numa posi¸c˜ao discreta do espa¸co e cont´em propriedades como massa, densidade, press˜ao e velocidade. A condi¸c˜ao inicial das part´ıculas (valor inicial de suas propriedades) pode ser variada para se obter diferentes anima¸c˜oes. No entanto, ´e importante para a estabilidade da simu- la¸c˜ao que a massa de todas as part´ıculas seja igual e constante durante cada simula¸c˜ao. J´a as posi¸c˜oes iniciais dependem do formato geom´etrico do dom´ınio. As part´ıculas podem ser distribu´ıdas em um grid regular dentro do espa¸co do dom´ınio ou em posi¸c˜oes aleat´orias. Durante a simula¸c˜ao, o dom´ınio conta com condi¸c˜oes de borda (ou condi¸c˜oes de con- torno) que definem como tratar part´ıculas que eventualmente saiam do dom´ınio. Al´em disso, ´e importante notar que os fundamentos do SPH est˜ao na teoria de interpola¸c˜ao. Assim, ele permite que quantidades de um campo definidas apenas em posi¸c˜oes discretas possam ser avaliadas em qualquer posi¸c˜ao do espa¸co. Para isso, o SPH distribu´ı essas quantidades numa vizinhan¸ca local de raio definido usando n´ucleos de suaviza¸c˜ao. Esses n´ucleos s˜ao fun¸c˜oes matem´aticas utilizadas durante a atualiza¸c˜ao das propriedades das part´ıculas em cada novo passo da simula¸c˜ao e definem como cada part´ıcula interage com as suas vizinhas.
  • 19. CAP´ITULO 3. M´ETODO DE SIMULAC¸ ˜AO 19 O movimento do fluido ´e descrito pelo SPH atrav´es das equa¸c˜oes de Navier-Stokes [23]: 𝜌 𝐷⃗𝑣 𝐷𝑡 = 𝜌 ( ∂⃗𝑣 ∂𝑡 + ⃗𝑣 ⋅ ⃗∇⃗𝑣 ) = −⃗∇𝑝 + 𝜌⃗𝑔 + Δ⃗𝑣, (3.1) onde ⃗𝑣 ´e a velocidade, 𝜌 ´e a densidade, 𝑝 ´e a press˜ao e ⃗𝑔 ´e a for¸ca da gravidade. Para calcular a densidade, por exemplo, ´e utilizada a seguinte equa¸c˜ao: ⟨𝜌 (𝑥)⟩ = 𝑁∑ 𝑗=1 𝑚𝑗𝑊 (𝑥 − 𝑥𝑗, ℎ) , (3.2) onde 𝑁 ´e o n´umero de part´ıculas, 𝑚𝑗 ´e a massa da part´ıcula 𝑗 e 𝑊 ´e o n´ucleo de suaviza¸c˜ao utilizado pelo SPH para a interpola¸c˜ao. A press˜ao e a viscosidade s˜ao calculadas de forma an´aloga a densidade. Entretanto, para cada propriedade da part´ıcula pode ser escolhido um n´ucleo de suaviza¸c˜ao diferente, sempre buscando uma maior estabilidade na simula¸c˜ao. 3.2 Detalhes de Implementa¸c˜ao 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 anima¸c˜oes. H´a trˆes tipos de condi¸c˜oes 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 condi¸c˜ao n˜ao-peri´odica, onde as novas part´ıculas aparecem em um lugar aleat´orio da parede oposta. J´a no segundo, a condi¸c˜ao peri´odica, as novas part´ıculas reaparecem em uma posi¸c˜ao 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 n´ucleos de suaviza¸c˜ao possuem suporte limitado, dado pelo raio ℎ, pode-se usar uma malha regular (grid), com c´elulas (cubos) de lado ℎ, e
  • 20. CAP´ITULO 3. M´ETODO DE SIMULAC¸ ˜AO 20 distribuir o conjunto de part´ıculas pela malha. Assim, dada uma part´ıcula 𝑖, as candidatas a participarem com a mesma durante o c´alculo das quantidades em quest˜ao ou estar˜ao na mesma c´elula da part´ıcula 𝑖, ou estar˜ao nas c´elulas vizinhas desta c´elula. Assim, o custo computacional em um la¸co do esquema acima fica reduzido de 𝒪 (𝑛2 ) para 𝒪 (𝑛𝑚), onde 𝑛 ´e o n´umero de part´ıculas e 𝑚 ´e a quantidade m´edia de part´ıculas, por c´elula, da malha auxiliar (observe que 𝑛 ≫ 𝑚 de maneira geral). A Figura 3.1 ilustra a estrutura de dados citada acima. Figura 3.1: Malha regular utilizada para acelerar os c´alculos.
  • 21. CAP´ITULO 3. M´ETODO DE SIMULAC¸ ˜AO 21 A simula¸c˜ao ´e inicializada de acordo com o Algoritmo 1. Posteriormente, ´e necess´aria a execu¸c˜ao de v´arios passos a cada itera¸c˜ao do SPH, conforme descrito no Algoritmo 2. Algoritmo 1 Inicializa¸c˜ao da simula¸c˜ao. 1: Constr´oi dois grids regulares; 2: 𝑑𝑥 ⇐ 1.4; {𝑑𝑥 ´e o espa¸camento entre as part´ıculas.} 3: 𝑥 ⇐ 𝑦 ⇐ 𝑧 ⇐ 𝑑𝑥 ÷ 2; 4: 𝑚𝑎𝑥𝑥 ⇐ 48; 5: 𝑚𝑎𝑥𝑦 ⇐ 20; 6: 𝑚𝑎𝑥𝑧 ⇐ 24; 7: enquanto 𝑧 < 𝑚𝑎𝑥𝑧 fa¸ca 8: enquanto 𝑦 < 𝑚𝑎𝑥𝑦 fa¸ca 9: enquanto 𝑥 < 𝑚𝑎𝑥𝑥 fa¸ca 10: se part´ıcula fora da esfera fixa no interior do dom´ınio ent˜ao 11: Cria part´ıcula na posi¸c˜ao (𝑥, 𝑦, 𝑧); 12: Aloca part´ıcula no primeiro grid regular; 13: fim se 14: 𝑥 ⇐ 𝑥 + 𝑑𝑥; 15: fim enquanto 16: 𝑦 ⇐ 𝑦 + 𝑑𝑥; 17: fim enquanto 18: 𝑧 ⇐ 𝑧 + 𝑑𝑥; 19: fim enquanto 20: 𝑡𝑒𝑚𝑝𝑜 ⇐ 0; {tempo que a simula¸c˜ao est´a rodando em milissegundos}
  • 22. CAP´ITULO 3. M´ETODO DE SIMULAC¸ ˜AO 22 Algoritmo 2 Itera¸c˜ao da simula¸c˜ao. 1: enquanto simulando fa¸ca 2: 𝑡𝑒𝑚𝑝𝑜 ⇐ 𝑡𝑒𝑚𝑝𝑜 + 40; {avan¸ca 40 milissegundos no tempo} 3: para todas as c´elulas do primeiro grid fa¸ca 4: se essa c´elula do grid n˜ao estiver vazia ent˜ao 5: 𝐿 ⇐ Lista de part´ıculas vizinhas; 6: para 𝑃 = cada part´ıcula contida nessa c´elula do grid fa¸ca 7: AtualizaPart´ıcula(𝑃, 𝐿); {ver Algoritmo 3} 8: fim para 9: fim se 10: fim para 11: para todas as c´elulas do primeiro grid fa¸ca 12: se essa c´elula do grid n˜ao estiver vazia ent˜ao 13: para 𝑃 = cada part´ıcula contida nessa c´elula do grid fa¸ca 14: Realoca part´ıcula no segundo grid regular; 15: fim para 16: Limpa essa c´elula do primeiro grid; 17: fim se 18: fim para 19: Troca o primeiro grid com o segundo; 20: fim enquanto
  • 23. CAP´ITULO 3. M´ETODO DE SIMULAC¸ ˜AO 23 O Algoritmo 3 demonstra como cada part´ıcula ´e atualizada. ´E nessa hora que os n´ucleos de suaviza¸c˜ao descritos na se¸c˜ao 3.1 s˜ao 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 n´ucleo. Em geral, o raio escolhido para todos os n´ucleos ´e 4, que tamb´em normalmente ´e igual ao tamanho da lateral de cada cubo usado no grid em que as part´ıculas s˜ao alocadas, pois isso facilita a busca das vizinhas que far˜ao diferen¸ca significativa no c´alculo. Algoritmo 3 M´etodo AtualizaPart´ıcula (part´ıcula, lista de vizinhas). 1: 𝑃 = part´ıcula; 2: Atualiza a densidade de 𝑃; 3: Atualiza a press˜ao em 𝑃; 4: Calcula a for¸ca exercida pela press˜ao; 5: Calcula a for¸ca exercida pela gravidade; 6: Calcula a for¸ca exercida pela viscosidade; 7: Calcula a acelera¸c˜ao de 𝑃 somando as for¸cas que atuam sobre 𝑃; 8: Atualiza a velocidade de 𝑃 baseado na acelera¸c˜ao de 𝑃; 9: Atualiza a posi¸c˜ao de 𝑃 baseado na velocidade de 𝑃; 10: Trata das colis˜oes com a esfera e com a fronteira do dom´ınio;
  • 24. Cap´ıtulo 4 M´etodo de Renderiza¸c˜ao Neste cap´ıtulo ser˜ao descritos os dois modos de renderiza¸c˜ao presentes no software, que s˜ao o modo em tempo real e o modo em off-line. 4.1 Renderiza¸c˜ao em Tempo Real Para renderiza¸c˜ao em tempo real, foi usado o jME (Java Monkey Engine), uma biblioteca gr´afica livre e de c´odigo aberto, baseada em grafos de cena para ter alta performance na renderiza¸c˜ao de jogos e simula¸c˜oes [19]. Tal biblioteca ´e implementada utilizando como base o OpenGL, uma biblioteca gr´afica de mais baixo n´ıvel de abstra¸c˜ao. Desta forma, o jME ´e capaz de fazer a renderiza¸c˜ao acessando os recursos de acelera¸c˜ao de v´ıdeo das placas gr´aficas [26]. A seguir, ser˜ao descritos detalhes deste tipo de renderiza¸c˜ao, como a interface gr´afica que ´e exibida aos usu´arios e as v´arias formas de visualiza¸c˜ao dispon´ıveis, tanto as que tˆem como principal foco exibir o fluido ilustrativamente quanto as focadas na exibi¸c˜ao de dados num´ericos da simula¸c˜ao extra´ıdos a partir do modelo do fluido. 24
  • 25. CAP´ITULO 4. M´ETODO DE RENDERIZAC¸ ˜AO 25 4.1.1 Interface Gr´afica com Usu´ario 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 parˆametros num´ericos da simula¸c˜ao, tais como o esquema num´erico utilizado, parˆametros do SPH, condi¸c˜oes iniciais das part´ıculas e do dom´ınio e condi¸c˜oes de borda. Na segunda pode ser feito o controle do fluxo da simula¸c˜ao (inici´a-la, paus´a-la, etc). A terceira permite fazer um ajuste fino nos dados que s˜ao exibidos em tempo real e escolher o modo de visualiza¸c˜ao do fluido desejado. A quarta tela serve para configurar os parˆametros da renderiza¸c˜ao em off-line e tamb´em para iniciar e controlar a mesma. Figura 4.1: Interface Gr´afica com Usu´ario e Painel de Controle.
  • 26. CAP´ITULO 4. M´ETODO DE RENDERIZAC¸ ˜AO 26 4.1.2 Modos de Visualiza¸c˜ao do Fluido A Figura 4.2 mostra os diversos modos que o fluido pode ser observado em tempo real. Os trˆes primeiros d˜ao 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 renderiza¸c˜ao 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 Visualiza¸c˜ao do Fluido.
  • 27. CAP´ITULO 4. M´ETODO DE RENDERIZAC¸ ˜AO 27 4.1.3 Visualizando Dados do Modelo do Fluido Como exemplificado pela Figura 4.3, dados num´ericos tanto de campos escalares quanto vetoriais podem ser visualizados em tempo real. Dados escalares, como por exemplo a densidade, s˜ao exibidos atrav´es de um degrade de cores utilizado na hora de se renderizar as part´ıculas. Outros dados como o gradiente de press˜ao, velocidade e acelera¸c˜ao das part´ıculas s˜ao mostrados como pequenos vetores coloridos. Essas op¸c˜oes s˜ao de grande interesse pois permitem uma depura¸c˜ao apurada do comportamento num´erico do fluido. (a) Densidade codificada em cores. (b) Vetores das for¸cas de press˜ao. (c) Vetores de velocidade. (d) Vetores de acelera¸c˜ao. Figura 4.3: Dados do Modelo do Fluido sendo visualizados.
  • 28. CAP´ITULO 4. M´ETODO DE RENDERIZAC¸ ˜AO 28 4.2 Renderiza¸c˜ao em Off-line Para renderiza¸c˜ao em off-line, tamb´em foi utilizada uma biblioteca livre e de c´odigo aberto, o PBRT, que implementa um sistema de renderiza¸c˜ao baseado em ray-tracing para a s´ıntese de imagens realistas, usando modelos f´ısicos para intera¸c˜ao da luz com os objetos [27]. Neste trabalho, utilizamos um m´etodo de renderiza¸c˜ao que tem como base os m´etodos cl´assicos de tra¸cado de raios (Whitted’s ray tracing) [37]. Nesses m´etodos, os dados de entrada s˜ao: (a) Posi¸c˜ao do observador; (b) Posi¸c˜ao e orienta¸c˜ao do plano de proje¸c˜ao e da janela de visualiza¸c˜ao; (c) Geometria da cena; (d) Propriedades materiais dos objetos da cena; (e) Propriedades das fontes de luz. Com essas informa¸c˜oes, aplica-se um modelo f´ısico para intera¸c˜ao entre a luz e os objetos da cena, bem como algoritmos de visibilidade para resolver quest˜oes de sombreamento e superf´ıcies escondidas [32]. Conforme descrito em [27], a equa¸c˜ao b´asica do modelo f´ısico tem a forma: 𝐿𝑜 (𝑝, 𝜔𝑜) = 𝐿𝑒 (𝑝, 𝜔𝑜) + ∫ 𝑆2 𝐿𝑖 (𝑝, 𝜔𝑖) 𝑓 (𝑝, 𝜔𝑜, 𝜔𝑖) 𝑑𝜔𝑖, (4.1) onde 𝐿𝑜 (𝑝, 𝜔𝑜) ´e a radiˆancia refletida no ponto 𝑝 de uma superf´ıcie, na dire¸c˜ao 𝜔𝑜, 𝐿𝑒 (𝑝, 𝜔𝑜) ´e a radiˆancia emitida pelo objeto no ponto 𝑝, na dire¸c˜ao 𝜔𝑜, 𝐿𝑖 (𝑝, 𝜔𝑖) ´e a radiˆancia incidente na dire¸c˜ao 𝜔𝑖 e 𝑓 ´e uma fun¸c˜ao que modela o espalhamento de luz da superf´ıcie no ponto 𝑝. A integral no segundo membro da equa¸c˜ao (4.1) ´e tomada sobre a esfera unit´aria 𝑆2 centrada no ponto 𝑝, para computar a parcela de radiˆancia total refletida na dire¸c˜ao 𝜔𝑜. Partindo desses elementos, para cada pixel da janela de visualiza¸c˜ao o algoritmo tra¸ca um raio passando pelo pixel e pela posi¸c˜ao do observador. Este raio atua como um raio de luz virtual, refletindo e refratando nos objetos da cena, at´e um limite pr´e-estabelecido de reflex˜oes. Uma vez terminado o tra¸cado de um raio, efetua-se recursivamente o c´alculo da radiˆancia total ao longo do raio. Nesta etapa a equa¸c˜ao (4.1) ´e resolvida para cada ponto de interse¸c˜ao encontrado, acumulando-se o resultado, segundo uma express˜ao do tipo:
  • 29. CAP´ITULO 4. M´ETODO DE RENDERIZAC¸ ˜AO 29 𝐿𝑜 (𝑝𝑗, 𝜔𝑜) = 𝐿𝑒 (𝑝𝑗, 𝜔𝑜) + ∫ 𝑆2 𝐿𝑖 (𝑝𝑗, 𝜔𝑖) 𝑓 (𝑝𝑗, 𝜔𝑜, 𝜔𝑖) 𝑑𝜔𝑖, 𝑗 = 1, 2, ..., 𝑁, (4.2) onde 𝑁 ´e o n´umero de pontos encontrados durante a etapa de tra¸cado do raio (ver Figura 4.4). Assim, temos as seguintes etapas: 1. Tra¸car um raio a partir da posi¸c˜ao do observador passando pelo pixel; 2. Intersect´a-lo com os objetos da cena; 3. Calcular a radiˆancia ao longo do raio; 4. Atribuir a cor ao pixel. Figura 4.4: Etapa de tra¸cado do raio. Algumas sequˆencias animadas com quadros gerados utilizando-se esta t´ecnica ser˜ao mostrados nos Resultados, no Cap´ıtulo 6.
  • 30. Cap´ıtulo 5 Metodologia de Desenvolvimento do Aplicativo A metodologia utilizada no desenvolvimento deste aplicativo se baseia no paradigma de programa¸c˜ao orientado a objetos, bem como em padr˜oes de projetos de software. J´a 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 solu¸c˜oes para problemas de softwares recor- rentes e tamb´em por oferecer a possibilidade de se produzir toda a documenta¸c˜ao seguindo um modelo padronizado [10]. 5.1 Modelagem do Software A linguagem UML define um conjunto de nota¸c˜oes gr´aficas e diagramas que ajudam na descri¸c˜ao e no projeto de sistemas de software, particularmente daqueles constru´ıdos uti- lizando o estilo orientado a objetos (OO). A importˆancia de se utilizar tais nota¸c˜oes padronizadas est´a na comunica¸c˜ao e no entendimento, j´a que um diagrama bem feito ajuda a transmitir ideias sobre um projeto de uma forma concisa, ajudando a lidar com a 30
  • 31. CAP´ITULO 5. METODOLOGIA DE DESENVOLVIMENTO DO APLICATIVO 31 complexidade do modelo do software [10]. Sendo assim, o foco dos diagramas desenvolvidos para este trabalho est´a na simpli- cidade, permitindo uma descri¸c˜ao 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 s˜ao os diagramas de casos de uso, de classes e os diagramas de sequˆencia das intera¸c˜oes principais (inicializa¸c˜ao da aplica¸c˜ao e do fluido, a atualiza¸c˜ao do fluido no decorrer do tempo e a renderiza¸c˜ao off-line em paralelo) [10]. 5.1.1 Diagrama de Casos de Uso Os casos de uso s˜ao uma t´ecnica para captar requisitos funcionais de um sistema, ou seja, para descrever as intera¸c˜oes tipicas entre os usu´arios 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 ser˜ao descritos a seguir. Figura 5.1: Diagrama de Casos de Uso.
  • 32. CAP´ITULO 5. METODOLOGIA DE DESENVOLVIMENTO DO APLICATIVO 32 Configurar resolu¸c˜ao e se a simula¸c˜ao ser´a aberta no modo tela cheia ou n˜ao Assim que o aplicativo ´e iniciado, o usu´ario precisa escolher se deseja utiliz´a-lo em tela cheia ou apenas como uma janela comum na ´area de trabalho. Em ambos os casos, a resolu¸c˜ao da imagem precisa ser definida. Configurar parˆametros f´ısicos da simula¸c˜ao Atrav´es da interface gr´afica com o usu´ario (GUI) exibida pelo software, o usu´ario ´e capaz de ajustar v´arios parˆametros f´ısicos do modelo do fluido, tais como: o esquema num´erico (solver) utilizado para solucionar as equa¸c˜oes de Navier-Stokes, a condi¸c˜ao de fronteira do dom´ınio de simula¸c˜ao, a velocidade inicial do fluido, o tamanho do dom´ınio de simula¸c˜ao, dentre outros. Configurar parˆametros da visualiza¸c˜ao em tempo real Tamb´em ´e poss´ıvel ajustar atrav´es da GUI as caracter´ısticas da renderiza¸c˜ao em tempo real. Por exemplo, a representa¸c˜ao gr´afica das part´ıculas do modelo do fluido (pontos ou esferas) e a visualiza¸c˜ao dos dados num´ericos da simula¸c˜ao (gradientes de densidade, press˜ao, velocidade, etc). Configurar parˆametros para renderiza¸c˜ao em off-line Al´em disso, o usu´ario pode especificar os parˆametros utilizados no modo de renderiza¸c˜ao com o PBRT, tais como as caracter´ısticas das fontes luminosas, a opacidade da superf´ıcie do fluido, quantos quadros de anima¸c˜ao se deseja gerar, dentre outros. Renderizar uma anima¸c˜ao em off-line O usu´ario pode requisitar a renderiza¸c˜ao de um ´unico quadro ou de uma sequˆencia completa em off-line. Em seguida, o aplicativo leva de alguns minutos a v´arias horas, de acordo com o que for requisitado, para completar a tarefa. As imagens dos quadros que j´a est˜ao prontas v˜ao sendo salvas em disco.
  • 33. CAP´ITULO 5. METODOLOGIA DE DESENVOLVIMENTO DO APLICATIVO 33 Ajustar disposi¸c˜ao dos elementos da GUI A interface gr´afica do programa ´e configur´avel e o usu´ario pode dispor os seus elementos da forma mais conveniente para sua utiliza¸c˜ao. Salvar parˆametros no disco Tanto os parˆametros f´ısicos da simula¸c˜ao quanto os parˆametros da renderiza¸c˜ao em off-line podem ser gravados em disco, o que facilita a sua posterior reutiliza¸c˜ao. Carregar parˆametros salvos no disco O usu´ario pode utilizar separadamente os v´arios parˆametros de simula¸c˜ao e renderiza¸c˜ao salvos previamente. Isto permite a cria¸c˜ao de novos resultados, por exemplo, combinando- se o comportamento f´ısico de um determinado fluido com as caracter´ısticas de renderiza¸c˜ao da superf´ıcie livre de outro. Mover a cˆamera O usu´ario pode posicionar a cˆamera de forma a encontrar o ˆangulo ideal para destacar o comportamento desejado do fluido. ´E importante notar que ambos os modos de rende- riza¸c˜ao compartilham a mesma cˆamera. Controlar o fluxo da simula¸c˜ao O usu´ario pode executar a simula¸c˜ao, paus´a-la, reinici´a-la ou at´e mesmo requisitar o avan¸co de um passo de simula¸c˜ao no tempo.
  • 34. CAP´ITULO 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 v´arios tipos de relacionamentos est´aticos 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 respons´avel pela inicializa¸c˜ao do aplicativo, o que envolve a inicializa¸c˜ao e configura¸c˜ao da engine gr´afica utilizada e a cria¸c˜ao da janela e de outros recursos necess´arios, como por exemplo, um objeto da classe SimulationGameState e outro da classe GuiGameState. Classe SimulationGameState Esta classe ´e respons´avel pelo controle, atualiza¸c˜ao e renderiza¸c˜ao da simula¸c˜ao em tempo real. Para realizar tais tarefas, ela se comunica constantemente com a engine gr´afica. Du- rante sua inicializa¸c˜ao, ela cria os objetos geom´etricos que ser˜ao utilizados para representar o fluido (conjunto de pontos, conjunto de esferas e a isosuperf´ıcie para a superf´ıcie livre) e tamb´em objetos auxiliares, que servem para depurar o comportamento do fluido, tais como
  • 35. CAP´ITULO 5. METODOLOGIA DE DESENVOLVIMENTO DO APLICATIVO 35 vetores para visualiza¸c˜ao dos campos de velocidade e acelera¸c˜ao e caixas para representar os limites do dom´ınio de simula¸c˜ao e a malha utilizada para organizar as part´ıculas. Al´em disso, tamb´em ´e respons´avel pela cria¸c˜ao do objeto ParticleSystem que representa o fluido. Classe GuiGameState Esta classe ´e respons´avel pela cria¸c˜ao e gerenciamento da interface gr´afica com o usu´ario 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 usu´ario para configurar os parˆametros de simula¸c˜ao e de renderiza¸c˜ao, para controlar o fluxo da simula¸c˜ao e para iniciar o processo de renderiza¸c˜ao em off-line. Classe AbstractSettings Esta classe abstrata serve de base para outras duas (SimulationSettings e RenderingSettings) que s˜ao respons´aveis por armazenar dados de configura¸c˜ao. Ela cont´em as funcionalidades b´asicas para esta tarefa, como por exemplo m´etodos para a serializa¸c˜ao e leitura de objetos e vari´aveis para arquivos de texto. Classe SimulationSettings Esta classe serve como interface para salvar e recuperar em disco todos os dados relativos a simula¸c˜ao, como por exemplo, os parˆametros relacionados `as condi¸c˜oes iniciais e os parˆametros f´ısicos e num´ericos do fluido.
  • 36. CAP´ITULO 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 renderiza¸c˜ao em off-line, como por exemplo o tamanho dos quadros gerados, as condi¸c˜oes de ilumina¸c˜ao, posi¸c˜ao da cˆamera, entre outros. Classe ParticleSystem Esta ´e a principal classe para a implementa¸c˜ao do SPH e representa o modelo f´ısico do fluido. Ela cria as estruturas de dados que representam as part´ıculas do fluido e tamb´em os solvers que ser˜ao utilizados para atualizar a posi¸c˜ao das mesmas e dar movimento ao fluido. Al´em disso, ´e capaz de exportar uma malha de densidades para ser renderizada via isosuperf´ıcie. Coleta tamb´em estat´ısticas sobre o fluido, como a densidade e velocidade m´edia das part´ıculas. Classe RegularSpatialSubdivision Esta classe ´e respons´avel pela subdivis˜ao espacial utilizada para otimizar o calculo da dinˆamica das part´ıculas. Ela representa uma malha 3d de c´elulas regulares (objetos do tipo RegularCell) onde as part´ıculas podem ser alocadas. ´E utilizada para tornar mais r´apida a busca de part´ıculas vizinhas, que ´e necess´aria para a aplica¸c˜ao dos n´ucleos de suaviza¸c˜ao feita pelos solvers. Classe RegularCell Representa uma ´unica c´elula da malha regular descrita acima. Esta classe cont´em uma lista de part´ıculas que est˜ao no interior da c´elula e tamb´em um vetor indicando a posi¸c˜ao da c´elula no espa¸co.
  • 37. CAP´ITULO 5. METODOLOGIA DE DESENVOLVIMENTO DO APLICATIVO 37 Classe Particle Representa uma ´unica part´ıcula do fluido e cont´em tanto o estado atual da mesma quanto o estado futuro enquanto o mesmo ainda est´a sendo calculado. Esses estados s˜ao represen- tados por objetos do tipo ParticleState. Tamb´em armazena a densidade de repouso e as for¸cas de press˜ao e viscosidade e a acelera¸c˜ao aplicada na itera¸c˜ao anterior. Classe ParticleState Guarda o estado de uma determinada part´ıcula em um dado momento. Esse estado ´e composto por dois vetores (de posi¸c˜ao e de velocidade) e tamb´em pelos valores escalares de densidade e press˜ao. Classe SphSolverFactory Esta classe ´e respons´avel por abstrair a cria¸c˜ao dos v´arios tipos de solvers dispon´ıveis. Ela ´e utilizada pelo ParticleSystem e cria o solver que ser´a utilizado baseada nos parˆametros passados pelo mesmo. Desta forma, e em conjunto com a classe AbstractSphSolver, novos solvers implementando diferentes esquemas num´ericos podem facilmente ser acoplados `a aplica¸c˜ao. Classe AbstractSphSolver A classe AbstractSphSolver define uma interface padr˜ao que cada tipo de solver deve implementar para poder ser utilizado pelo ParticleSystem. Al´em disso, oferece uma im- plementa¸c˜ao padr˜ao para v´arias das fun¸c˜oes que s˜ao comuns `a maioria dos solvers, como por exemplo, o c´alculo da densidade em um determinado ponto do espa¸co, a aplica¸c˜ao dos n´ucleos de suaviza¸c˜ao e o tratamento b´asico das condi¸c˜oes de fronteira.
  • 38. CAP´ITULO 5. METODOLOGIA DE DESENVOLVIMENTO DO APLICATIVO 38 Classe DefaultSphSolver Esta classe implementa o solver padr˜ao, que utiliza o m´etodo de integra¸c˜ao leapfrog, com ou sem mem´oria, para atualizar as part´ıculas. S˜ao calculadas a densidade, press˜ao, acelera¸c˜ao e velocidade de cada part´ıcula, levando em conta for¸cas de press˜ao, viscosidade e gravidade. Classe AlternativeSphSolver Esta classe implementa um solver alternativo que utiliza um m´etodo de primeira ordem. Ele calcula diretamente a posi¸c˜ao seguinte da part´ıcula e tamb´em sua densidade e press˜ao. Para isto, leva em conta as for¸cas derivadas da press˜ao e da gravidade. Classe OfflineRenderingManager Esta classe utiliza o padr˜ao Singleton, ou seja, s´o pode existir uma ´unica instˆancia sua em um dado momento do tempo. Ela ´e respons´avel por iniciar e gerenciar todo o processo de renderiza¸c˜ao em off-line, criando e sincronizando as v´arias threads que s˜ao utilizadas simultaneamente para realiz´a-lo. Classe RenderingTask Cada RenderingTask ´e respons´avel por executar o processamento de um ´unico quadro durante a renderiza¸c˜ao em off-line. Os v´arios RenderingTasks s˜ao criados e alocados em alguma thread dispon´ıvel pelo OfflineRenderingManager. Classe SceneDescriptionWriter Um objeto SceneDescriptionWriter, que ´e acionado por uma RenderingTask, tem a fun¸c˜ao 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.
  • 39. CAP´ITULO 5. METODOLOGIA DE DESENVOLVIMENTO DO APLICATIVO 39 5.1.3 Diagramas de Sequˆencia Este tipo de diagrama descreve as intera¸c˜oes de um grupo de objetos em um determinado cen´ario da aplica¸c˜ao, ilustrando o comportamento dinˆamico e colaborativo dos mesmos para realizar uma determinada tarefa [10]. A seguir, ser˜ao descritos os diagramas de sequˆencia dos principais cen´arios do software. Inicializa¸c˜ao da Aplica¸c˜ao O diagrama de sequˆencia que ilustra a inicializa¸c˜ao da aplica¸c˜ao pode ser visto na Figura 5.3. A classe Main come¸ca inicializando um objeto do tipo SimulationGameState, que cria os objetos geom´etricos necess´arios para a visualiza¸c˜ao dos dados num´ericos da simula¸c˜ao. Em seguida, a classe Main cria um objeto do tipo GuiGameState, que ´e respons´avel por montar a interface gr´afica com o usu´ario (GUI). Para isto, al´em de criar uma barra de menus, ´e criado um objeto ControlPanel, respons´avel por exibir o painel de controle principal da aplica¸c˜ao. Este, por sua vez, cria um objeto SimulationSettings e outro RenderingSettings que ficar˜ao em sincronia com os dados exibidos e alterados pela interface. Ap´os isso, o ControlPanel desencadeia o processo de inicializa¸c˜ao da simula¸c˜ao, 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.
  • 40. CAP´ITULO 5. METODOLOGIA DE DESENVOLVIMENTO DO APLICATIVO 40 Figura 5.3: Diagrama de Sequˆencia: Inicializa¸c˜ao da Aplica¸c˜ao.
  • 41. CAP´ITULO 5. METODOLOGIA DE DESENVOLVIMENTO DO APLICATIVO 41 Inicializa¸c˜ao do Fluido Na Figura 5.4 est´a descrita a sequˆencia para a inicializa¸c˜ao do fluido. Primeiramente ´e criado um objeto ParticleSystem que representar´a o modelo do fluido. Este, por sua vez, requisita que o SphSolverFactory crie um solver adequado para a simula¸c˜ao que se deseja realizar. Em seguida, cria um objeto RegularSpatialSubdivision que por sua vez monta todas as c´elulas utilizadas para a subdivis˜ao espacial. Finalmente, o ParticleSystem cria as part´ıculas do fluido e as aloca na malha auxiliar, concluindo assim as etapas necess´arias para prepara¸c˜ao do modelo do fluido para a simula¸c˜ao. Figura 5.4: Diagrama de Sequˆencia: Inicializa¸c˜ao do Fluido.
  • 42. CAP´ITULO 5. METODOLOGIA DE DESENVOLVIMENTO DO APLICATIVO 42 Atualiza¸c˜ao do Fluido A Figura 5.5 descreve um passo da atualiza¸c˜ao do fluido no tempo. Este passo come¸ca com o objeto SimulationGameState atualizando o modelo f´ısico do fluido. Para isto, ele come¸ca varrendo a malha auxiliar e para cada c´elula 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 c´elula sendo processada. Depois as part´ıculas s˜ao realocadas na malha auxiliar com base nas suas novas posi¸c˜oes. Por ´ultimo, o SimulationGameState atualiza tanto os objetos geom´etricos utilizados na renderiza¸c˜ao do fluido quanto os usados para visualiza¸c˜ao dos campos vetoriais.
  • 43. CAP´ITULO 5. METODOLOGIA DE DESENVOLVIMENTO DO APLICATIVO 43 Figura 5.5: Diagrama de Sequˆencia: Atualiza¸c˜ao do Fluido.
  • 44. CAP´ITULO 5. METODOLOGIA DE DESENVOLVIMENTO DO APLICATIVO 44 Renderiza¸c˜ao em Off-line Pode-se observar na Figura 5.6 o processo de renderiza¸c˜ao em off-line, que come¸ca com uma requisi¸c˜ao feita pelo usu´ario atrav´es do ControlPanel. Este ´e respons´avel por atualizar o objeto RenderingSettings para que o mesmo reflita as configura¸c˜oes mais recentes feitas pelo usu´ario atrav´es da interface. Em seguida, ele cria uma SceneDescriptionWriter e pede para que o OfflineRenderingManager inicie a gera¸c˜ao da sequˆencia de imagens. Este ´ultimo inicializa v´arios objetos RenderingTask, um para cada quadro a ser renderizado. Depois disto, solicita para a classe ExecutorService a cria¸c˜ao de um grupo de threads (contendo um thread para cada CPU dispon´ıvel no sistema) que ser˜ao respons´aveis pela renderi- za¸c˜ao. Em seguida, come¸ca a submeter RenderingTasks para os threads dispon´ıveis. Cada thread come¸ca requisitando que o SceneDescriptionWriter escreva a cena de um determi- nado quadro em disco. Depois, inicializa um objeto ProcessRunner que ser´a respons´avel por executar o PBRT. Terminada a renderiza¸c˜ao, o SceneDescriptionWriter limpa os ar- quivos que j´a foram utilizados do disco e a RenderingTask ´e conclu´ıda.
  • 45. CAP´ITULO 5. METODOLOGIA DE DESENVOLVIMENTO DO APLICATIVO 45 Figura 5.6: Diagrama de Sequˆencia: Renderiza¸c˜ao em Off-line.
  • 46. Cap´ıtulo 6 Resultados Os exemplos deste cap´ıtulo foram simulados utilizando-se a Equa¸c˜ao (3.1) com os parˆame- tros da Tabela 6.1. Em cada simula¸c˜ao usou-se 4393 part´ıculas, com um dom´ınio na forma de paralelep´ıpedo que se estende do ponto 𝑝1 = (0, 0, 0) at´e o ponto 𝑝2 = (48, 20, 24) contendo uma esfera fixa (e r´ıgida) em seu interior. Em todos os ca- sos exibidos, a condi¸c˜ao inicial ´e definida distribuindo-se part´ıculas uniformemente em uma por¸c˜ao do dom´ınio, espa¸cadas 1.4 unidades de medida em cada dire¸c˜ao coordenada. A velocidade tem intensidade inicial que segue o perfil parab´olico definido pela express˜ao: 𝑣𝑥 = − ( 𝑦 − 𝑦𝑚𝑎𝑥 2 )2 + (3.5 × 𝑦𝑚𝑎𝑥) (6.1) onde 𝑦 ´e a altura inicial de cada part´ıcula e 𝑦𝑚𝑎𝑥 ´e a altura inicial m´axima de qualquer part´ıcula. A velocidade inicial tem vetor diretor ⃗𝑣 = (1, 0, 0), sendo portanto paralela ao eixo 𝑥 (ver Figura 6.1). A condi¸c˜ao de contorno utilizada foi a n˜ao-peri´odica, conforme descrito na se¸c˜ao 3.2. 46
  • 47. CAP´ITULO 6. RESULTADOS 47 Parˆametros de simula¸c˜ao Exemplo 1 Exemplo 2 Exemplo 3 Coeficiente de press˜ao 10.0 10.0 10.0 Coeficiente de gravidade −5.0 −5.0 −5.0 Viscosidade 40.0 40.0 10.0 Coeficiente de atrito 0.2 0.2 0.1 Massa de cada part´ıcula 20.0 20.0 10.0 Tabela 6.1: Parˆametros utilizados nas simula¸c˜oes deste cap´ıtulo. Figura 6.1: Velocidade inicial das part´ıculas (em vermelho). Na etapa de renderiza¸c˜ao, usou-se a classe “Direct Lighting” do PBRT, que implementa o m´etodo descrito pela equa¸c˜ao (4.1), com os seguintes parˆametros para o fluido: ∙ Cor da superf´ıcie: 𝑟 = 0.0, 𝑔 = 0.0, 𝑏 = 1.0; ∙ Coeficientes de reflex˜ao especular: 𝑟 = 1.0, 𝑔 = 1.0, 𝑏 = 1.0; ∙ Coeficientes de reflex˜ao difusa: 𝑟 = 0.1, 𝑔 = 0.1, 𝑏 = 0.1; ∙ Opacidade: 1.0 (totalmente opaco) para o primeiro exemplo e 0.28 (transparente) para os demais exemplos.
  • 48. CAP´ITULO 6. RESULTADOS 48 As paredes do dom´ınio s˜ao totalmente transparentes e a cor da esfera ´e branca (𝑟 = 𝑔 = 𝑏 = 1.0) com material totalmente opaco. H´a duas fontes luminosas direcionais: uma est´a a 45∘ em rela¸c˜ao ao eixo 𝑦 girando no sentido hor´ario; e outra, sob estas mesmas condi¸c˜oes, est´a a 225∘ . Ambas as fontes apontam para o centro da superf´ıcie do fluido. A Figura 6.2 mostra uma sequˆencia de imagens obtida na primeira anima¸c˜ao. 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, n˜ao h´a efeitos de transparˆencia. Contudo, h´a efeitos de reflex˜ao, particularmente, pode-se perceber o re- flexo da esfera no fluido. Efeitos de sombra tamb´em podem ser observados, tanto do fluido sobre ele mesmo quanto da esfera sobre o fluido. 𝑡 = 0𝑠 𝑡 = 2.5𝑠 𝑡 = 5𝑠 𝑡 = 8𝑠 𝑡 = 16.5𝑠 𝑡 = 32𝑠 Figura 6.2: Sequˆencia de imagens do primeiro exemplo de anima¸c˜ao. Os tempos est˜ao marcados em segundos.
  • 49. CAP´ITULO 6. RESULTADOS 49 A Figura 6.3 mostra outra sequˆencia de quadros gerada pela aplica¸c˜ao que foi desen- volvida. Neste caso, o fluido ´e transparente e o fundo tem cor amarela (𝑟 = 1.0, 𝑔 = 1.0, 𝑏 = 0.0). O fluido continua viscoso e as fontes de luz est˜ao na mesma posi¸c˜ao do caso anterior, observando-se novamente efeitos de sombra. Os reflexos s˜ao bem menos percept´ıveis neste caso em fun¸c˜ao da transparˆencia. 𝑡 = 0𝑠 𝑡 = 2.5𝑠 𝑡 = 5𝑠 𝑡 = 8𝑠 𝑡 = 16.5𝑠 𝑡 = 32𝑠 Figura 6.3: Sequˆencia de imagens do segundo exemplo de anima¸c˜ao. Os tempos est˜ao marcados em segundos.
  • 50. CAP´ITULO 6. RESULTADOS 50 O ´ultimo exemplo mostra um fluido transparente, com viscosidade reduzida, utilizando duas fontes extensas de ilumina¸c˜ao, ou seja, n˜ao-pontuais. Neste caso, nota-se claramente maior riqueza de detalhes, como efeitos de penumbra, que s˜ao decorrentes desse tipo de ilumina¸c˜ao (ver Figura 6.4). 𝑡 = 0𝑠 𝑡 = 2.5𝑠 𝑡 = 5𝑠 𝑡 = 8𝑠 𝑡 = 16.5𝑠 𝑡 = 32𝑠 Figura 6.4: Sequˆencia de imagens do terceiro exemplo de anima¸c˜ao. Os tempos est˜ao marcados em segundos.
  • 51. Cap´ıtulo 7 Conclus˜oes e Trabalhos Futuros Neste trabalho, descrevemos um modelo para anima¸c˜ao de fluidos usando o SPH para a simula¸c˜ao e a biblioteca PBRT para a renderiza¸c˜ao. Na se¸c˜ao de resultados, demonstra- mos a potencialidade do m´etodo para a anima¸c˜ao de fluidos com realismo tanto visual quanto f´ısico. O m´etodo ainda ´e computacionalmente caro, particularmente em fun¸c˜ao da biblioteca PBRT. A solu¸c˜ao desenvolvida possibilita que artistas gr´aficos manipulem de forma intuitiva os v´arios parˆametros de simula¸c˜ao e renderiza¸c˜ao necess´arios para a gera¸c˜ao de anima¸c˜oes via dinˆamica computacional de fluidos. A arquitetura do sistema foi desenvolvida visando a facilidade de manuten¸c˜ao e flexi- bilidade, deixando o mesmo preparado para futuras extens˜oes. Por exemplo, ´e poss´ıvel acoplar novos solvers ou novas bibliotecas para renderiza¸c˜ao em off-line facilmente. Nos trabalhos futuros, vamos otimizar tanto a etapa de renderiza¸c˜ao quanto a de simu- la¸c˜ao, com a implementa¸c˜ao de m´etodos customizados para gera¸c˜ao de efeitos visuais ainda melhores. 51
  • 52. Referˆencias [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 for simulating free surface problems. Fluid Dynamics Research, In Press, Uncorrected Proof, 2008. [3] E. Azevedo. Computa¸c˜ao Gr´afica - Teoria e Pr´atica. 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. Em International 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 ACM SIGGRAPH 2004 Course Notes, page 32, 2004. [8] J. Fang, A. Parriaux, M. Rentschler, e C. Ancey. Improved sph methods for simulating free surface 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-padr˜ao de modelagem de objetos. Bookman, 2005. 3a edi¸c˜ao. [11] G. A. Giraldi, A. L. A. JR., A. A. F. Oliveira, e R. A. Feij´oo. Anima¸c˜ao de flui- dos via t´ecnicas de visualiza¸c˜ao cient´ıfica e mecˆanica computacional. Technical report, Laborat´orio Nacional de Computa¸c˜ao Cient´ıfica (LNCC), Petr´opolis, RJ, Brasil, 2005. http://virtual01.lncc.br/˜giraldi/TechReport/Fluid-Animation2005.pdf. [12] O. G´enevaux, A. Habibi, e J. michel Dischler. Simulating fluid-solid interaction. Em in Graphics Interface, pages 31–38, 2003. [13] B. Goetz, T. Peierls, J. Bloch, J. Bowbeer, D. Holmes, e D. Lea. Java Concurrency in Practice. Addison-Wesley Professional, May 2006. [14] T. Harada, S. Koshizuka, e Y. Kawaguchi. Smoothed particle hydrodynamics on gpus. pages 63–70, 2007. 52
  • 53. REFERˆENCIAS 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 with participating 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. Issue 3. [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. M¨uller, D. Charypar, e M. Gross. Particle-based fluid simulation for interactive appli- cations. Em SCA ’03: Proceedings of the 2003 ACM SIGGRAPH/Eurographics symposium on Computer animation, pages 154–159, Aire-la-Ville, Switzerland, Switzerland, 2003. Eu- rographics Association. [24] M. M¨uller, S. Schirm, e M. Teschner. Interactive blood simulation for virtual surgery based on smoothed particle hydrodynamics. Technol. Health Care, 12(1):25–31, 2004. [25] M. M¨uller, B. Solenthaler, R. Keiser, e M. Gross. Particle-based fluid-fluid interaction. Em SCA ’05: Proceedings of the 2005 ACM SIGGRAPH/Eurographics symposium on Computer animation, 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 European PVM/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. Schl¨afli, 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.
  • 54. REFERˆENCIAS 54 [36] K. D. Vertanen. A parallel implementation of a fluid flow simulation using smoothed 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. Em SIGGRAPH ’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-Wesley Publishing Co. [39] A. V. Xavier. Anima¸c˜ao de fluidos via autˆomatos celulares e sistemas de part´ıculas. Master’s thesis, Laborat´orio Nacional de Computa¸c˜ao Cient´ıfica (LNCC), Petr´opolis, RJ, Brasil, 2006.