Animação Foto-Realista de Fluidos Utilizando Métodos Lagrangeanos

54
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

Transcript of Animação Foto-Realista de Fluidos Utilizando Métodos Lagrangeanos

Page 1: Animação Foto-Realista de Fluidos Utilizando Métodos Lagrangeanos

UNIVERSIDADE ESTACIO DE SA

JOAO VICENTE PIRES DOS REIS FILHO

ANIMACAO FOTO-REALISTA DEFLUIDOS UTILIZANDO

METODOS LAGRANGEANOS

Petropolis

2010

Page 2: Animação Foto-Realista de Fluidos Utilizando Métodos Lagrangeanos

JOAO VICENTE PIRES DOS REIS FILHO

ANIMACAO FOTO-REALISTA DEFLUIDOS UTILIZANDO

METODOS LAGRANGEANOS

Monografia apresentada a Universidade Estaciode Sa como requisito parcial para a obtencao dograu de Bacharel em Sistemas de Informacao.

ORIENTADOR: Prof. D.Sc. Rodrigo Luis de Souza da Silva

Petropolis

2010

Page 3: Animação Foto-Realista de Fluidos Utilizando Métodos Lagrangeanos

JOAO VICENTE PIRES DOS REIS FILHO

ANIMACAO FOTO-REALISTA DE FLUIDOS UTILIZANDOMETODOS LAGRANGEANOS

Monografia apresentada a Universidade Estaciode Sa como requisito parcial para a obtencao dograu de Bacharel em Sistemas de Informacao.

Aprovada em 26 de fevereiro de 2010.

BANCA EXAMINADORA

Prof. D.Sc. Rodrigo Luis de Souza da SilvaUniversidade Federal de Juiz de Fora

Prof. M.Sc. Rogerio Albuquerque de AlmeidaUniversidade Estacio de Sa

Page 4: Animação Foto-Realista de Fluidos Utilizando Métodos Lagrangeanos

Dedico este trabalho a minha famılia.

★★★

Page 5: Animação Foto-Realista de Fluidos Utilizando Métodos Lagrangeanos

Agradecimentos

Primeiramente, agradeco a Deus por este dia, aqui concluindo mais uma etapa de minhavida academica.

Aos meus orientadores professores Rodrigo Luis de Souza da Silva e Gilson AntonioGiraldi por toda paciencia, tolerancia, forca e principalmente pelos conhecimentos e exem-plos cientıficos e matematicos. As sabias sugestoes que me deram ao longo do caminho quetrilhei, fizeram com que esse se tornasse mais suave e melhor desenvolvido.

Aos meus pais, nao so pelo carinho e suporte incondicionais, mas tambem pela intuicaodo meu pai ao comprar nosso primeiro computador, quando eu ainda era crianca, o quedespertou em mim a curiosidade pela informatica.

Aos meus verdadeiros amigos, Ana, Andre, Fernando e Germano pelo companheirismo,lealdade, e por serem as pessoas sinceras com quem eu sempre posso contar.

A todos os demais amigos, familiares e professores que contribuıram de maneira diretaou indireta, que porventura nao foram citados, meus sinceros agradecimentos.

Page 6: Animação Foto-Realista de Fluidos Utilizando Métodos Lagrangeanos

Resumo

Neste trabalho, sera apresentado um software para animacao computacional de fluidos.

Inicialmente, sera discutido o modelo matematico utilizado na simulacao. Em seguida,

serao mostrados os dois modos de utilizacao do aplicativo criado: um em tempo real

para experimentacao dos parametros de animacao e outro em modo off-line com o obje-

tivo de alcancar um maior nıvel de realismo grafico. Aspectos de engenharia de software

tambem serao discutidos, tais como a metodologia de desenvolvimento utilizada e a etapa

de modelagem. Finalmente, serao apresentadas as conclusoes descrevendo a usabilidade e

potencialidade do aplicativo criado para geracao de animacao de fluidos.

Palavras-chave: Dinamica de Fluidos; Visualizacao Cientıfica; Renderizacao.

Page 7: Animação Foto-Realista de Fluidos Utilizando Métodos Lagrangeanos

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.

Page 8: Animação Foto-Realista de Fluidos Utilizando Métodos Lagrangeanos

Sumario

1 Introducao 10

2 Trabalhos Relacionados 13

3 Metodo de Simulacao 163.1 Smoothed Particle Hydrodynamics (SPH) . . . . . . . . . . . . . . . . . . . 183.2 Detalhes de Implementacao . . . . . . . . . . . . . . . . . . . . . . . . . . 19

4 Metodo de Renderizacao 244.1 Renderizacao em Tempo Real . . . . . . . . . . . . . . . . . . . . . . . . . 24

4.1.1 Interface Grafica com Usuario . . . . . . . . . . . . . . . . . . . . . 254.1.2 Modos de Visualizacao do Fluido . . . . . . . . . . . . . . . . . . . 264.1.3 Visualizando Dados do Modelo do Fluido . . . . . . . . . . . . . . . 27

4.2 Renderizacao em Off-line . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

5 Metodologia de Desenvolvimento do Aplicativo 305.1 Modelagem do Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

5.1.1 Diagrama de Casos de Uso . . . . . . . . . . . . . . . . . . . . . . . 315.1.2 Diagrama de Classes . . . . . . . . . . . . . . . . . . . . . . . . . . 345.1.3 Diagramas de Sequencia . . . . . . . . . . . . . . . . . . . . . . . . 39

6 Resultados 46

7 Conclusoes e Trabalhos Futuros 51

Referencias 52

Page 9: Animação Foto-Realista de Fluidos Utilizando Métodos Lagrangeanos

Lista de Ilustracoes

3.1 Malha regular utilizada para acelerar os calculos. . . . . . . . . . . . . . . 20

4.1 Interface Grafica com Usuario e Painel de Controle. . . . . . . . . . . . . . 254.2 Diversos Modos de Visualizacao do Fluido. . . . . . . . . . . . . . . . . . . 264.3 Dados do Modelo do Fluido sendo visualizados. . . . . . . . . . . . . . . . 274.4 Etapa de tracado do raio. . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

5.1 Diagrama de Casos de Uso. . . . . . . . . . . . . . . . . . . . . . . . . . . 315.2 Diagrama de Classes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345.3 Diagrama de Sequencia: Inicializacao da Aplicacao. . . . . . . . . . . . . . 405.4 Diagrama de Sequencia: Inicializacao do Fluido. . . . . . . . . . . . . . . . 415.5 Diagrama de Sequencia: Atualizacao do Fluido. . . . . . . . . . . . . . . . 435.6 Diagrama de Sequencia: Renderizacao em Off-line. . . . . . . . . . . . . . 45

6.1 Velocidade inicial das partıculas (em vermelho). . . . . . . . . . . . . . . . 476.2 Sequencia de imagens do primeiro exemplo de animacao. Os tempos estao

marcados em segundos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486.3 Sequencia de imagens do segundo exemplo de animacao. Os tempos estao

marcados em segundos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496.4 Sequencia de imagens do terceiro exemplo de animacao. Os tempos estao

marcados em segundos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

Page 10: Animação Foto-Realista de Fluidos Utilizando Métodos Lagrangeanos

Capıtulo 1

Introducao

Nas ultimas tres decadas, tecnicas e modelos em dinamica de fluidos computacional (DFC)

vem sendo aplicados com sucesso em computacao grafica e geracao de efeitos visuais. A

animacao computacional de fluidos e uma sub-area da Modelagem Baseada em Fısica

(Physics Based Modeling). Nesta area, um grande desafio vem da complexidade do com-

portamento do fluido, que e regido a partir da intrincada interacao de varios fenomenos

como a conveccao, difusao, turbulencia e tensao superficial [23]. Alem disso, a animacao

computacional de fluidos e um campo multidisciplinar, ou seja, nao exige apenas conheci-

mentos sobre a fısica dos fenomenos, mas tambem sobre computacao grafica e visualizacao

cientıfica [39, 11].

As pesquisas em animacao de fluidos se dividem basicamente em tres etapas [39].

Primeiramente, temos a busca de novos modelos em DFC que sejam mais eficientes do

ponto de vista da computacao grafica. Esta etapa envolve tanto a pesquisa de novos mo-

delos fısicos quanto o ajuste de modelos ja conhecidos, sem perder de vista o fato de que o

objetivo final e a geracao de efeitos visuais, e nao a descricao de fenomenos naturais [7, 11].

Uma vez resolvidas numericamente as equacoes de fluidos, passa-se a fase de renderi-

zacao, onde tecnicas de computacao grafica sao aplicadas sobre os campos gerados, com o

objetivo de criar efeitos visuais, tais como transparencia, imagens refletidas na superfıcie

de um lıquido, ou mesmo, efeitos especiais que incluem deformacao de paisagens, incendios,

10

Page 11: Animação Foto-Realista de Fluidos Utilizando Métodos Lagrangeanos

CAPITULO 1. INTRODUCAO 11

etc [17, 27, 18, 35].

Finalmente, as tecnicas adotadas devem ser incorporadas a um software, com inter-

faces graficas convenientes, o qual permita o uso destes recursos (modelos de fluidos e

computacao grafica) por artistas graficos e animadores (ver [38], como exemplo).

Neste trabalho, para a simulacao e modelagem dos fluidos foi utilizado o metodo SPH

(Smoothed Particle Hydrodynamics), juntamente com as equacoes de Navier-Stokes [23, 11].

O SPH foi escolhido devido suas vantagens, como por exemplo o fato de nao depender de

uma malha tridimensional [3] previamente definida. Isto permite criar cenas dinamicas,

com fronteiras variaveis e novos objetos que entram na cena a medida que esta se desen-

volve, sem um custo extra de regerar a malha sempre que tais alteracoes ocorrem.

Foi construıdo um software que desempenha duas funcoes. Primeiro, oferece um modo

de simulacao com renderizacao em tempo real, que permite a realizacao de testes e ajustes

dos diversos parametros numericos e de modelagem dos fluidos, como a pressao, viscosidade,

entre outros. Com isso, os artistas graficos serao capazes de fazer os ajustes necessarios

para obter a animacao que desejarem.

A renderizacao em tempo real e baseada em metodos tradicionais de scanline rendering

e em tecnicas simplificadas [3]. Por exemplo, as partıculas do fluido sao representadas

por pequenas esferas coloridas. Tambem e possıvel a visualizacao de dados numericos

da simulacao, tais como o gradiente de pressao, velocidade e aceleracao das partıculas,

representados por pequenos vetores coloridos em funcao da intensidade de cada campo.

Campos escalares (densidade, modulo da velocidade, etc.) sao visualizados utilizando-se

uma escala de cores.

A segunda funcao e um modo de renderizacao em off-line que utiliza o PBRT (Physically-

Based Ray Tracer); uma biblioteca baseada em fısica para renderizacao foto-realista. Neste

caso, sao utilizadas tecnicas baseadas em ray-tracing, que e um metodo que simula o tra-

jeto que os raios de luz percorrem desde as fontes luminosas, passando pelas reflexoes e

refracoes nos diversos objetos da cena, ate chegar a lente da camera virtual. Apesar do seu

alto custo computacional, essas tecnicas sao capazes de criar imagens foto-realistas com

maior grau de detalhamento [27].

Page 12: Animação Foto-Realista de Fluidos Utilizando Métodos Lagrangeanos

CAPITULO 1. INTRODUCAO 12

Para diminuir o custo de processamento da renderizacao em off-line e melhor utilizar os

recursos computacionais disponıveis atualmente, foram utilizadas tecnicas de multithreading

para possibilitar a renderizacao de varios quadros da animacao em paralelo, utilizando to-

dos os nucleos de processamento oferecidos pelos processadores atuais [13].

Este trabalho esta estruturado como segue. No capıtulo 2 e feita uma breve revisao

sobre alguns trabalhos relacionados. Em seguida apresenta-se o metodo para simulacao de

fluidos que foi utilizado. No capıtulo 4, sao mostradas as tecnicas de renderizacao presentes

no aplicativo desenvolvido. Continuando, e discutida no capıtulo 5 a metodologia utilizada

no desenvolvimento do aplicativo. Finalmente, no capıtulo 6 sao apresentados os resultados

obtidos e no capıtulo 7 sao expostas as conclusoes e trabalhos futuros.

Page 13: Animação Foto-Realista de Fluidos Utilizando Métodos Lagrangeanos

Capıtulo 2

Trabalhos Relacionados

Os diferentes metodos encontrados na literatura para animacao de fluidos, baseados em

modelos de DFC, sao fundamentados nas equacoes de Navier-Stokes, com tecnicas de

discretizacao baseadas em diferencas finitas implıcitas [34] e explıcitas [9], bem como em

metodos lagrangeanos tais como o Metodo das Caracterısticas [34], Smoothed Particle

Hydrodynamics (SPH) [6] e Moving-Particle Semi-Implicit (MPS) [28].

O metodo SPH e livre de malhas (assim como o MPS) e vem sendo aplicado com sucesso

em simulacoes de fluidos compressıveis, para a descricao da dinamica de materiais, estudo

de explosoes, fenomenos de transporte, dentre outras aplicacoes [22]. O SPH utiliza um

sistema de partıculas e nucleos de interpolacao para a discretizacao das equacoes de Navier-

Stokes. Implementacoes deste metodo para arquiteturas paralelas foram desenvolvidas com

o objetivo de melhorar a performance do mesmo [36, 30]. Do ponto de vista da computacao

grafica, o fato do SPH nao depender de uma malha previamente definida e uma vantagem,

se comparado com os metodos classicos. As cenas em um filme sao em geral dinamicas,

com fronteiras variaveis em funcao de novos objetos que entram na cena a medida que esta

se desenvolve. Desta forma, metodos que nao fazem uso de malhas, podem ser vantajosos

por evitar o custo extra de regerar a malha sempre que tais alteracoes ocorrem. Essas van-

tagens vem despertando o interesse dos pesquisadores em computacao grafica. Nesta area,

encontramos aplicacoes do SPH para simuladores em medicina [24], animacao de fluidos so-

13

Page 14: Animação Foto-Realista de Fluidos Utilizando Métodos Lagrangeanos

CAPITULO 2. TRABALHOS RELACIONADOS 14

bre superfıcies de terrenos [21], interacao fluido-fluido [25] e fluido-solido [33, 12], simulacao

de fluidos multi-fase [16], simulacao de superfıcies livres [4, 8, 2, 20]. Alem disso, imple-

mentacoes em GPU vem sendo exploradas para melhorar o desempenho computacional das

aplicacoes [14].

Por exemplo, no campo de sistemas de treinamento de cirurgias medicas, em [24] foi

desenvolvida uma tecnica baseada no SPH para a simulacao interativa do sangue. Ja no

campo da simulacao de fluxos superficiais sobre terrenos, em [21] foram estudadas tecnicas

baseadas no SPH parar criar simulacoes fısicas realistas de rios. Essas tecnicas permitem

que a simulacao seja feita em tempo real e, portanto, usada em jogos e ambientes de

realidade virtual. No tema envolvendo interacao fluido-solido o trabalho [33] descreve um

metodo baseado em SPH para simulacao de lıquidos e solidos deformaveis e sua interacao.

O modelo descrito por esse trabalho tambem pode ser utilizado para simulacao de fluidos

multi-fase (lıquido-solido), como tambem demonstrado em [16]. A area de simulacao de

superfıcies livres e importante para a animacao de cenas envolvendo mares, rios, inun-

dacoes, dentre outras. Podemos entender como superfıcie livre a regiao do fluido que nao

esta em contato com a fronteira do domınio de escoamento. Um exemplo interessante

desta linha de trabalhos pode ser encontrado em [20] onde e descrito um metodo SPH para

fluidos incompressıveis utilizado para animacao de ondas do mar. O metodo utiliza termos

de correcao, derivados de formulacoes variacionais, para garantir a incompressibilidade de

fluido.

Finalmente, tecnicas de renderizacao precisam ser utilizadas para garantir o nıvel de

realismo ou efeito visual desejado. A renderizacao foto realıstica pode ser feita atraves de

varios algoritmos, incluindo path tracing, bidirectional path tracing [15], Metropolis light

transport [35] e photon mapping [18]. Artigos de revisao interessantes nessa area podem

ser encontrados em [1, 17].

Como um exemplo de um software ja em uso na area de animacao computacional de

fluidos, pode ser citado o Realflow [31]. No entanto, e um aplicativo comercial cujo codigo

e fechado, o que implica em custos para obtencao de licenca e limitacoes para incorporar

novas funcionalidades. Portanto, uma motivacao para desenvolvimento do aplicativo des-

Page 15: Animação Foto-Realista de Fluidos Utilizando Métodos Lagrangeanos

CAPITULO 2. TRABALHOS RELACIONADOS 15

crito neste texto e oferecer uma alternativa de codigo aberto, que seja extensıvel a novas

funcionalidades.

O foco do presente trabalho e a geracao de animacoes de fluidos realistas tanto do ponto

de vista fısico quanto de renderizacao. Assim, nosso trabalho envolve superfıcies livres e

tecnicas de iluminacao global. Alem disso, estamos tambem interessados na animacao de

cenas envolvendo interacao fluido-solido.

Page 16: Animação Foto-Realista de Fluidos Utilizando Métodos Lagrangeanos

Capıtulo 3

Metodo de Simulacao

Este capıtulo comeca com uma breve descricao do papel das simulacoes numericas em

computadores e dos procedimentos utilizados para resolver tais simulacoes, descrevendo

quais sao as principais etapas de resolucao e como elas foram importantes na escolha do

metodo utilizado neste trabalho.

Com a ajuda do crescente poder computacional, as simulacoes numericas vem ganhando

destaque tanto na resolucao de problemas praticos complexos da engenharia e ciencia

quanto na aproximacao dos mesmos criando representacoes virtuais para outros fins, como

o entretenimento e a ilustracao grafica. A simulacao numerica traduz os aspectos mais

importantes de um problema fısico para uma descricao matematica discreta, que pode ser

usada pra recriar e resolver problemas e fenomenos do mundo real no computador.

Para se criar uma solucao para esse tipo de simulacao, alguns passos sao necessarios.

Primeiramente modelos matematicos, possivelmente com algumas simplificacoes, sao cria-

dos para representar o fenomeno real observado. Geralmente esses modelos sao expressos

atraves de equacoes governantes com condicoes iniciais e condicoes de borda apropriadas.

As equacoes governantes podem ser um conjunto de equacoes diferenciais ordinarias, de

equacoes diferenciais parciais, de equacoes de integracao ou de equacoes em quaisquer ou-

tras formas, mas que sejam representacoes de leis da fısica. As condicoes de borda e iniciais

sao necessarias para se determinar o valor das variaveis do campo de simulacao no espaco

16

Page 17: Animação Foto-Realista de Fluidos Utilizando Métodos Lagrangeanos

CAPITULO 3. METODO DE SIMULACAO 17

e no tempo. [22]

Em seguida, para resolver numericamente as equacoes governantes, e necessario a uti-

lizacao de um metodo para a discretizacao do domınio do problema. Em outras palavras,

e preciso representar um problema do mundo real que ocorre em um espaco contınuo de

uma forma discretizada, ou seja, com um numero finito de componentes, de maneira que o

computador seja capaz de guardar os dados da simulacao em sua memoria e os processar.

Essa representacao e conhecida como o modelo computacional do problema a ser simulado

e e utilizada para as aproximacoes numericas.

Ha dois tipos de descricoes principais que podem ser usados na criacao deste modelo

computacional: a Euleriana e a Lagrangeana. Do ponto de vista das equacoes governantes,

a descricao Euleriana e uma descricao espacial e e tipicamente representada pelo metodo das

diferencas finitas [22]. Ela subdivide a geometria do domınio em regioes fixas (cubos, por

exemplo) e calcula os valores numericos atraves do tempo sempre nessas mesmas regioes. Ja

a Lagrangeana e uma descricao material geralmente representada pelo metodo de elementos

finitos [22]. Neste caso, sao distribuıdos pelo domınio inicial do problema pontos de afericao

dos valores numericos, que sao mutaveis no tempo, podendo acompanhar de forma mais

flexıvel eventuais mudancas no formato geometrico do domınio do problema, o que e uma

das grandes vantagens deste tipo de descricao para a simulacao de fluidos.

Apos a discretizacao do domınio, e feita uma discretizacao numerica para modificar

operacoes de integracao ou derivacao das equacoes governantes de sua forma contınua para

sua representacao discreta. A discretizacao numerica e baseada na teoria de aproximacao de

funcoes e a sua precisao esta intimamente ligada ao modo como o domınio foi discretizado.

Em seguida, feitas ambas as discretizacoes numerica e do domınio, o conjunto de

equacoes originais das leis fısicas que regem a simulacao e convertido num conjunto de

equacoes algebricas ou equacoes diferenciais ordinarias ou parciais, que podem ser re-

solvidas utilizando-se rotinas numericas ja existentes, como por exemplo um esquema de

integracao como o Leapfrog [29, 5], que foi utilizado neste trabalho.

Finalmente, a ultima etapa para criar a simulacao e codificar e implementar em uma lin-

guagem de programacao todas as etapas anteriormente descritas, levando em consideracao

Page 18: Animação Foto-Realista de Fluidos Utilizando Métodos Lagrangeanos

CAPITULO 3. METODO DE SIMULACAO 18

a precisao numerica, a performance, a robustez e a facilidade de uso.

A seguir, sera descrito em mais detalhes o metodo numerico lagrangeano utilizado na

implementacao deste trabalho.

3.1 Smoothed Particle Hydrodynamics (SPH)

Nesta secao serao explicadas as ideias basicas do SPH, como a representacao do fluido

discretizada aproximada por partıculas e a utilizacao de nucleos de suavizacao.

O SPH representa o modelo fısico do fluido atraves de um sistema de partıculas, que

e um conjunto finito de elementos. Cada partıcula se encontra numa posicao discreta do

espaco e contem propriedades como massa, densidade, pressao e velocidade.

A condicao inicial das partıculas (valor inicial de suas propriedades) pode ser variada

para se obter diferentes animacoes. No entanto, e importante para a estabilidade da simu-

lacao que a massa de todas as partıculas seja igual e constante durante cada simulacao. Ja

as posicoes iniciais dependem do formato geometrico do domınio. As partıculas podem ser

distribuıdas em um grid regular dentro do espaco do domınio ou em posicoes aleatorias.

Durante a simulacao, o domınio conta com condicoes de borda (ou condicoes de con-

torno) que definem como tratar partıculas que eventualmente saiam do domınio. Alem

disso, e importante notar que os fundamentos do SPH estao na teoria de interpolacao.

Assim, ele permite que quantidades de um campo definidas apenas em posicoes discretas

possam ser avaliadas em qualquer posicao do espaco. Para isso, o SPH distribuı essas

quantidades numa vizinhanca local de raio definido usando nucleos de suavizacao. Esses

nucleos sao funcoes matematicas utilizadas durante a atualizacao das propriedades das

partıculas em cada novo passo da simulacao e definem como cada partıcula interage com

as suas vizinhas.

Page 19: Animação Foto-Realista de Fluidos Utilizando Métodos Lagrangeanos

CAPITULO 3. METODO DE SIMULACAO 19

O movimento do fluido e descrito pelo SPH atraves das equacoes de Navier-Stokes [23]:

�Dv

Dt= �

(∂v

∂t+ v ⋅ ∇v

)= −∇p+ �g + Δv, (3.1)

onde v e a velocidade, � e a densidade, p e a pressao e g e a forca da gravidade.

Para calcular a densidade, por exemplo, e utilizada a seguinte equacao:

⟨� (x)⟩ =N∑j=1

mjW (x− xj, ℎ) , (3.2)

onde N e o numero de partıculas, mj e a massa da partıcula j e W e o nucleo de

suavizacao utilizado pelo SPH para a interpolacao. A pressao e a viscosidade sao calculadas

de forma analoga a densidade. Entretanto, para cada propriedade da partıcula pode ser

escolhido um nucleo de suavizacao diferente, sempre buscando uma maior estabilidade na

simulacao.

3.2 Detalhes de Implementacao

O domınio utilizado tem o formato de um paralelepıpedo, podendo conter uma esfera fixa

em seu interior, que desvia o fluido criando interessantes animacoes. Ha tres tipos de

condicoes de contorno suportadas. A primeira funciona como uma caixa fechada, onde

as partıculas “ricocheteiam”em todas as paredes do domınio. Nas outras duas, para cada

partıcula que deixa o domınio pela lateral direita, e criada uma nova partıcula na parede

oposta com a mesma velocidade da que saiu. O primeiro caso e a condicao nao-periodica,

onde as novas partıculas aparecem em um lugar aleatorio da parede oposta. Ja no segundo,

a condicao periodica, as novas partıculas reaparecem em uma posicao equivalente a que

elas saıram.

Estruturas de dados adicionais podem ser adotadas para reduzir a complexidade dos al-

goritmos. Primeiramente, uma vez que os nucleos de suavizacao possuem suporte limitado,

dado pelo raio ℎ, pode-se usar uma malha regular (grid), com celulas (cubos) de lado ℎ, e

Page 20: Animação Foto-Realista de Fluidos Utilizando Métodos Lagrangeanos

CAPITULO 3. METODO DE SIMULACAO 20

distribuir o conjunto de partıculas pela malha. Assim, dada uma partıcula i, as candidatas

a participarem com a mesma durante o calculo das quantidades em questao ou estarao na

mesma celula da partıcula i, ou estarao nas celulas vizinhas desta celula. Assim, o custo

computacional em um laco do esquema acima fica reduzido de O (n2) para O (nm), onde

n e o numero de partıculas e m e a quantidade media de partıculas, por celula, da malha

auxiliar (observe que n≫ m de maneira geral). A Figura 3.1 ilustra a estrutura de dados

citada acima.

Figura 3.1: Malha regular utilizada para acelerar os calculos.

Page 21: Animação Foto-Realista de Fluidos Utilizando Métodos Lagrangeanos

CAPITULO 3. METODO DE SIMULACAO 21

A simulacao e inicializada de acordo com o Algoritmo 1. Posteriormente, e necessaria

a execucao de varios passos a cada iteracao do SPH, conforme descrito no Algoritmo 2.

Algoritmo 1 Inicializacao da simulacao.

1: Constroi dois grids regulares;

2: dx⇐ 1.4; {dx e o espacamento entre as partıculas.}

3: x⇐ y ⇐ z ⇐ dx÷ 2;

4: maxx ⇐ 48;

5: maxy ⇐ 20;

6: maxz ⇐ 24;

7: enquanto z < maxz faca

8: enquanto y < maxy faca

9: enquanto x < maxx faca

10: se partıcula fora da esfera fixa no interior do domınio entao

11: Cria partıcula na posicao (x, y, z);

12: Aloca partıcula no primeiro grid regular;

13: fim se

14: x⇐ x+ dx;

15: fim enquanto

16: y ⇐ y + dx;

17: fim enquanto

18: z ⇐ z + dx;

19: fim enquanto

20: tempo⇐ 0; {tempo que a simulacao esta rodando em milissegundos}

Page 22: Animação Foto-Realista de Fluidos Utilizando Métodos Lagrangeanos

CAPITULO 3. METODO DE SIMULACAO 22

Algoritmo 2 Iteracao da simulacao.

1: enquanto simulando faca

2: tempo⇐ tempo+ 40; {avanca 40 milissegundos no tempo}

3: para todas as celulas do primeiro grid faca

4: se essa celula do grid nao estiver vazia entao

5: L⇐ Lista de partıculas vizinhas;

6: para P = cada partıcula contida nessa celula do grid faca

7: AtualizaPartıcula(P , L); {ver Algoritmo 3}

8: fim para

9: fim se

10: fim para

11: para todas as celulas do primeiro grid faca

12: se essa celula do grid nao estiver vazia entao

13: para P = cada partıcula contida nessa celula do grid faca

14: Realoca partıcula no segundo grid regular;

15: fim para

16: Limpa essa celula do primeiro grid;

17: fim se

18: fim para

19: Troca o primeiro grid com o segundo;

20: fim enquanto

Page 23: Animação Foto-Realista de Fluidos Utilizando Métodos Lagrangeanos

CAPITULO 3. METODO DE SIMULACAO 23

O Algoritmo 3 demonstra como cada partıcula e atualizada. E nessa hora que os nucleos

de suavizacao descritos na secao 3.1 sao usados, e para que isso seja possıvel precisamos

montar uma lista de partıculas vizinhas a atual, que estejam dentro do raio de cada nucleo.

Em geral, o raio escolhido para todos os nucleos e 4, que tambem normalmente e igual ao

tamanho da lateral de cada cubo usado no grid em que as partıculas sao alocadas, pois

isso facilita a busca das vizinhas que farao diferenca significativa no calculo.

Algoritmo 3 Metodo AtualizaPartıcula (partıcula, lista de vizinhas).

1: P = partıcula;

2: Atualiza a densidade de P ;

3: Atualiza a pressao em P ;

4: Calcula a forca exercida pela pressao;

5: Calcula a forca exercida pela gravidade;

6: Calcula a forca exercida pela viscosidade;

7: Calcula a aceleracao de P somando as forcas que atuam sobre P ;

8: Atualiza a velocidade de P baseado na aceleracao de P ;

9: Atualiza a posicao de P baseado na velocidade de P ;

10: Trata das colisoes com a esfera e com a fronteira do domınio;

Page 24: Animação Foto-Realista de Fluidos Utilizando Métodos Lagrangeanos

Capıtulo 4

Metodo de Renderizacao

Neste capıtulo serao descritos os dois modos de renderizacao presentes no software, que

sao o modo em tempo real e o modo em off-line.

4.1 Renderizacao em Tempo Real

Para renderizacao em tempo real, foi usado o jME (Java Monkey Engine), uma biblioteca

grafica livre e de codigo aberto, baseada em grafos de cena para ter alta performance na

renderizacao de jogos e simulacoes [19]. Tal biblioteca e implementada utilizando como

base o OpenGL, uma biblioteca grafica de mais baixo nıvel de abstracao. Desta forma,

o jME e capaz de fazer a renderizacao acessando os recursos de aceleracao de vıdeo das

placas graficas [26].

A seguir, serao descritos detalhes deste tipo de renderizacao, como a interface grafica

que e exibida aos usuarios e as varias formas de visualizacao disponıveis, tanto as que tem

como principal foco exibir o fluido ilustrativamente quanto as focadas na exibicao de dados

numericos da simulacao extraıdos a partir do modelo do fluido.

24

Page 25: Animação Foto-Realista de Fluidos Utilizando Métodos Lagrangeanos

CAPITULO 4. METODO DE RENDERIZACAO 25

4.1.1 Interface Grafica com Usuario

A interface e ilustrada na Figura 4.1. Ela e composta por menus e por um painel de

controle que apresenta quatro telas. A primeira delas permite que sejam feitos ajustes nos

parametros numericos da simulacao, tais como o esquema numerico utilizado, parametros

do SPH, condicoes iniciais das partıculas e do domınio e condicoes de borda. Na segunda

pode ser feito o controle do fluxo da simulacao (inicia-la, pausa-la, etc). A terceira permite

fazer um ajuste fino nos dados que sao exibidos em tempo real e escolher o modo de

visualizacao do fluido desejado. A quarta tela serve para configurar os parametros da

renderizacao em off-line e tambem para iniciar e controlar a mesma.

Figura 4.1: Interface Grafica com Usuario e Painel de Controle.

Page 26: Animação Foto-Realista de Fluidos Utilizando Métodos Lagrangeanos

CAPITULO 4. METODO DE RENDERIZACAO 26

4.1.2 Modos de Visualizacao do Fluido

A Figura 4.2 mostra os diversos modos que o fluido pode ser observado em tempo real. Os

tres primeiros dao destaque ao modelo computacional do fluido renderizando as partıculas

das seguintes formas: pontos, esferas ou esferas transparentes. O quarto modo busca

destacar de forma simplificada a superfıcie do fluido, utilizando para gerar a malha usada

na renderizacao um algoritmo oferecido pelo jME [19] chamado Marching Tetrahedron, que

e similar ao Marching Cubes discutido em [11].

(a) Pontos. (b) Esferas.

(c) Esferas transparentes. (d) Isosuperfıcie.

Figura 4.2: Diversos Modos de Visualizacao do Fluido.

Page 27: Animação Foto-Realista de Fluidos Utilizando Métodos Lagrangeanos

CAPITULO 4. METODO DE RENDERIZACAO 27

4.1.3 Visualizando Dados do Modelo do Fluido

Como exemplificado pela Figura 4.3, dados numericos tanto de campos escalares quanto

vetoriais podem ser visualizados em tempo real. Dados escalares, como por exemplo a

densidade, sao exibidos atraves de um degrade de cores utilizado na hora de se renderizar

as partıculas. Outros dados como o gradiente de pressao, velocidade e aceleracao das

partıculas sao mostrados como pequenos vetores coloridos. Essas opcoes sao de grande

interesse pois permitem uma depuracao apurada do comportamento numerico do fluido.

(a) Densidade codificada em cores. (b) Vetores das forcas de pressao.

(c) Vetores de velocidade. (d) Vetores de aceleracao.

Figura 4.3: Dados do Modelo do Fluido sendo visualizados.

Page 28: Animação Foto-Realista de Fluidos Utilizando Métodos Lagrangeanos

CAPITULO 4. METODO DE RENDERIZACAO 28

4.2 Renderizacao em Off-line

Para renderizacao em off-line, tambem foi utilizada uma biblioteca livre e de codigo aberto,

o PBRT, que implementa um sistema de renderizacao baseado em ray-tracing para a sıntese

de imagens realistas, usando modelos fısicos para interacao da luz com os objetos [27].

Neste trabalho, utilizamos um metodo de renderizacao que tem como base os metodos

classicos de tracado de raios (Whitted’s ray tracing) [37]. Nesses metodos, os dados de

entrada sao: (a) Posicao do observador; (b) Posicao e orientacao do plano de projecao e

da janela de visualizacao; (c) Geometria da cena; (d) Propriedades materiais dos objetos

da cena; (e) Propriedades das fontes de luz.

Com essas informacoes, aplica-se um modelo fısico para interacao entre a luz e os objetos

da cena, bem como algoritmos de visibilidade para resolver questoes de sombreamento e

superfıcies escondidas [32]. Conforme descrito em [27], a equacao basica do modelo fısico

tem a forma:

Lo (p, !o) = Le (p, !o) +

∫S2

Li (p, !i) f (p, !o, !i) d!i, (4.1)

onde Lo (p, !o) e a radiancia refletida no ponto p de uma superfıcie, na direcao !o,

Le (p, !o) e a radiancia emitida pelo objeto no ponto p, na direcao !o, Li (p, !i) e a radiancia

incidente na direcao !i e f e uma funcao que modela o espalhamento de luz da superfıcie no

ponto p. A integral no segundo membro da equacao (4.1) e tomada sobre a esfera unitaria

S2 centrada no ponto p, para computar a parcela de radiancia total refletida na direcao

!o.

Partindo desses elementos, para cada pixel da janela de visualizacao o algoritmo traca

um raio passando pelo pixel e pela posicao do observador. Este raio atua como um raio de

luz virtual, refletindo e refratando nos objetos da cena, ate um limite pre-estabelecido de

reflexoes. Uma vez terminado o tracado de um raio, efetua-se recursivamente o calculo da

radiancia total ao longo do raio. Nesta etapa a equacao (4.1) e resolvida para cada ponto

de intersecao encontrado, acumulando-se o resultado, segundo uma expressao do tipo:

Page 29: Animação Foto-Realista de Fluidos Utilizando Métodos Lagrangeanos

CAPITULO 4. METODO DE RENDERIZACAO 29

Lo (pj, !o) = Le (pj, !o) +

∫S2

Li (pj, !i) f (pj, !o, !i) d!i, j = 1, 2, ..., N, (4.2)

onde N e o numero de pontos encontrados durante a etapa de tracado do raio (ver

Figura 4.4). Assim, temos as seguintes etapas:

1. Tracar um raio a partir da posicao do observador passando pelo pixel;

2. Intersecta-lo com os objetos da cena;

3. Calcular a radiancia ao longo do raio;

4. Atribuir a cor ao pixel.

Figura 4.4: Etapa de tracado do raio.

Algumas sequencias animadas com quadros gerados utilizando-se esta tecnica serao

mostrados nos Resultados, no Capıtulo 6.

Page 30: Animação Foto-Realista de Fluidos Utilizando Métodos Lagrangeanos

Capıtulo 5

Metodologia de Desenvolvimento do

Aplicativo

A metodologia utilizada no desenvolvimento deste aplicativo se baseia no paradigma de

programacao orientado a objetos, bem como em padroes de projetos de software. Ja a

modelagem do software foi feita utilizando a linguagem UML (Unified Modelling Lan-

guage) [10].

Essas metodologias foram escolhidas por serem atuais e permitirem mapear facilmente

conceitos do mundo real no software, reutilizar solucoes para problemas de softwares recor-

rentes e tambem por oferecer a possibilidade de se produzir toda a documentacao seguindo

um modelo padronizado [10].

5.1 Modelagem do Software

A linguagem UML define um conjunto de notacoes graficas e diagramas que ajudam na

descricao e no projeto de sistemas de software, particularmente daqueles construıdos uti-

lizando o estilo orientado a objetos (OO). A importancia de se utilizar tais notacoes

padronizadas esta na comunicacao e no entendimento, ja que um diagrama bem feito

ajuda a transmitir ideias sobre um projeto de uma forma concisa, ajudando a lidar com a

30

Page 31: Animação Foto-Realista de Fluidos Utilizando Métodos Lagrangeanos

CAPITULO 5. METODOLOGIA DE DESENVOLVIMENTO DO APLICATIVO 31

complexidade do modelo do software [10].

Sendo assim, o foco dos diagramas desenvolvidos para este trabalho esta na simpli-

cidade, permitindo uma descricao direta de como o software foi construıdo e de suas

funcionalidades. Para isto, foram confeccionados os diagramas mais interessantes para

ilustrar nosso aplicativo, que sao os diagramas de casos de uso, de classes e os diagramas

de sequencia das interacoes principais (inicializacao da aplicacao e do fluido, a atualizacao

do fluido no decorrer do tempo e a renderizacao off-line em paralelo) [10].

5.1.1 Diagrama de Casos de Uso

Os casos de uso sao uma tecnica para captar requisitos funcionais de um sistema, ou seja,

para descrever as interacoes tipicas entre os usuarios e o sistema, fornecendo uma narrativa

sobre como o sistema e utilizado [10].

Pode-se observar na Figura 5.1 que o nosso sistema e composto por dez casos de uso,

que serao descritos a seguir.

Figura 5.1: Diagrama de Casos de Uso.

Page 32: Animação Foto-Realista de Fluidos Utilizando Métodos Lagrangeanos

CAPITULO 5. METODOLOGIA DE DESENVOLVIMENTO DO APLICATIVO 32

Configurar resolucao e se a simulacao sera aberta no modo tela cheia ou nao

Assim que o aplicativo e iniciado, o usuario precisa escolher se deseja utiliza-lo em tela

cheia ou apenas como uma janela comum na area de trabalho. Em ambos os casos, a

resolucao da imagem precisa ser definida.

Configurar parametros fısicos da simulacao

Atraves da interface grafica com o usuario (GUI) exibida pelo software, o usuario e capaz

de ajustar varios parametros fısicos do modelo do fluido, tais como: o esquema numerico

(solver) utilizado para solucionar as equacoes de Navier-Stokes, a condicao de fronteira do

domınio de simulacao, a velocidade inicial do fluido, o tamanho do domınio de simulacao,

dentre outros.

Configurar parametros da visualizacao em tempo real

Tambem e possıvel ajustar atraves da GUI as caracterısticas da renderizacao em tempo

real. Por exemplo, a representacao grafica das partıculas do modelo do fluido (pontos

ou esferas) e a visualizacao dos dados numericos da simulacao (gradientes de densidade,

pressao, velocidade, etc).

Configurar parametros para renderizacao em off-line

Alem disso, o usuario pode especificar os parametros utilizados no modo de renderizacao

com o PBRT, tais como as caracterısticas das fontes luminosas, a opacidade da superfıcie

do fluido, quantos quadros de animacao se deseja gerar, dentre outros.

Renderizar uma animacao em off-line

O usuario pode requisitar a renderizacao de um unico quadro ou de uma sequencia completa

em off-line. Em seguida, o aplicativo leva de alguns minutos a varias horas, de acordo com

o que for requisitado, para completar a tarefa. As imagens dos quadros que ja estao prontas

vao sendo salvas em disco.

Page 33: Animação Foto-Realista de Fluidos Utilizando Métodos Lagrangeanos

CAPITULO 5. METODOLOGIA DE DESENVOLVIMENTO DO APLICATIVO 33

Ajustar disposicao dos elementos da GUI

A interface grafica do programa e configuravel e o usuario pode dispor os seus elementos

da forma mais conveniente para sua utilizacao.

Salvar parametros no disco

Tanto os parametros fısicos da simulacao quanto os parametros da renderizacao em off-line

podem ser gravados em disco, o que facilita a sua posterior reutilizacao.

Carregar parametros salvos no disco

O usuario pode utilizar separadamente os varios parametros de simulacao e renderizacao

salvos previamente. Isto permite a criacao de novos resultados, por exemplo, combinando-

se o comportamento fısico de um determinado fluido com as caracterısticas de renderizacao

da superfıcie livre de outro.

Mover a camera

O usuario pode posicionar a camera de forma a encontrar o angulo ideal para destacar o

comportamento desejado do fluido. E importante notar que ambos os modos de rende-

rizacao compartilham a mesma camera.

Controlar o fluxo da simulacao

O usuario pode executar a simulacao, pausa-la, reinicia-la ou ate mesmo requisitar o avanco

de um passo de simulacao no tempo.

Page 34: Animação Foto-Realista de Fluidos Utilizando Métodos Lagrangeanos

CAPITULO 5. METODOLOGIA DE DESENVOLVIMENTO DO APLICATIVO 34

5.1.2 Diagrama de Classes

Este e um dos diagramas mais amplamente utilizados e permite ilustrar a hierarquia de

classes do software juntamente com os varios tipos de relacionamentos estaticos existentes

entre elas [10]. Na Figura 5.2 se encontra o diagrama de classes do nosso aplicativo. A

seguir, discutiremos as funcionalidades de cada classe.

Figura 5.2: Diagrama de Classes.

Classe Main

Esta classe e responsavel pela inicializacao do aplicativo, o que envolve a inicializacao

e configuracao da engine grafica utilizada e a criacao da janela e de outros recursos

necessarios, como por exemplo, um objeto da classe SimulationGameState e outro da

classe GuiGameState.

Classe SimulationGameState

Esta classe e responsavel pelo controle, atualizacao e renderizacao da simulacao em tempo

real. Para realizar tais tarefas, ela se comunica constantemente com a engine grafica. Du-

rante sua inicializacao, ela cria os objetos geometricos que serao utilizados para representar

o fluido (conjunto de pontos, conjunto de esferas e a isosuperfıcie para a superfıcie livre) e

tambem objetos auxiliares, que servem para depurar o comportamento do fluido, tais como

Page 35: Animação Foto-Realista de Fluidos Utilizando Métodos Lagrangeanos

CAPITULO 5. METODOLOGIA DE DESENVOLVIMENTO DO APLICATIVO 35

vetores para visualizacao dos campos de velocidade e aceleracao e caixas para representar

os limites do domınio de simulacao e a malha utilizada para organizar as partıculas. Alem

disso, tambem e responsavel pela criacao do objeto ParticleSystem que representa o fluido.

Classe GuiGameState

Esta classe e responsavel pela criacao e gerenciamento da interface grafica com o usuario

e por inicializar os menus e o ControlPanel.

Classe ControlPanel

Um objeto da classe ControlPanel e criado pelo GuiGameState e representa e controla a

janela do painel de controle, que e utilizado pelo usuario para configurar os parametros de

simulacao e de renderizacao, para controlar o fluxo da simulacao e para iniciar o processo

de renderizacao em off-line.

Classe AbstractSettings

Esta classe abstrata serve de base para outras duas (SimulationSettings e RenderingSettings)

que sao responsaveis por armazenar dados de configuracao. Ela contem as funcionalidades

basicas para esta tarefa, como por exemplo metodos para a serializacao e leitura de objetos

e variaveis para arquivos de texto.

Classe SimulationSettings

Esta classe serve como interface para salvar e recuperar em disco todos os dados relativos

a simulacao, como por exemplo, os parametros relacionados as condicoes iniciais e os

parametros fısicos e numericos do fluido.

Page 36: Animação Foto-Realista de Fluidos Utilizando Métodos Lagrangeanos

CAPITULO 5. METODOLOGIA DE DESENVOLVIMENTO DO APLICATIVO 36

Classe RenderingSettings

Esta classe serve como interface para salvar e recuperar em disco todos os dados relativos a

renderizacao em off-line, como por exemplo o tamanho dos quadros gerados, as condicoes

de iluminacao, posicao da camera, entre outros.

Classe ParticleSystem

Esta e a principal classe para a implementacao do SPH e representa o modelo fısico do

fluido. Ela cria as estruturas de dados que representam as partıculas do fluido e tambem

os solvers que serao utilizados para atualizar a posicao das mesmas e dar movimento ao

fluido. Alem disso, e capaz de exportar uma malha de densidades para ser renderizada

via isosuperfıcie. Coleta tambem estatısticas sobre o fluido, como a densidade e velocidade

media das partıculas.

Classe RegularSpatialSubdivision

Esta classe e responsavel pela subdivisao espacial utilizada para otimizar o calculo da

dinamica das partıculas. Ela representa uma malha 3d de celulas regulares (objetos do

tipo RegularCell) onde as partıculas podem ser alocadas. E utilizada para tornar mais

rapida a busca de partıculas vizinhas, que e necessaria para a aplicacao dos nucleos de

suavizacao feita pelos solvers.

Classe RegularCell

Representa uma unica celula da malha regular descrita acima. Esta classe contem uma

lista de partıculas que estao no interior da celula e tambem um vetor indicando a posicao

da celula no espaco.

Page 37: Animação Foto-Realista de Fluidos Utilizando Métodos Lagrangeanos

CAPITULO 5. METODOLOGIA DE DESENVOLVIMENTO DO APLICATIVO 37

Classe Particle

Representa uma unica partıcula do fluido e contem tanto o estado atual da mesma quanto

o estado futuro enquanto o mesmo ainda esta sendo calculado. Esses estados sao represen-

tados por objetos do tipo ParticleState. Tambem armazena a densidade de repouso e as

forcas de pressao e viscosidade e a aceleracao aplicada na iteracao anterior.

Classe ParticleState

Guarda o estado de uma determinada partıcula em um dado momento. Esse estado e

composto por dois vetores (de posicao e de velocidade) e tambem pelos valores escalares

de densidade e pressao.

Classe SphSolverFactory

Esta classe e responsavel por abstrair a criacao dos varios tipos de solvers disponıveis. Ela

e utilizada pelo ParticleSystem e cria o solver que sera utilizado baseada nos parametros

passados pelo mesmo. Desta forma, e em conjunto com a classe AbstractSphSolver, novos

solvers implementando diferentes esquemas numericos podem facilmente ser acoplados a

aplicacao.

Classe AbstractSphSolver

A classe AbstractSphSolver define uma interface padrao que cada tipo de solver deve

implementar para poder ser utilizado pelo ParticleSystem. Alem disso, oferece uma im-

plementacao padrao para varias das funcoes que sao comuns a maioria dos solvers, como

por exemplo, o calculo da densidade em um determinado ponto do espaco, a aplicacao dos

nucleos de suavizacao e o tratamento basico das condicoes de fronteira.

Page 38: Animação Foto-Realista de Fluidos Utilizando Métodos Lagrangeanos

CAPITULO 5. METODOLOGIA DE DESENVOLVIMENTO DO APLICATIVO 38

Classe DefaultSphSolver

Esta classe implementa o solver padrao, que utiliza o metodo de integracao leapfrog, com ou

sem memoria, para atualizar as partıculas. Sao calculadas a densidade, pressao, aceleracao

e velocidade de cada partıcula, levando em conta forcas de pressao, viscosidade e gravidade.

Classe AlternativeSphSolver

Esta classe implementa um solver alternativo que utiliza um metodo de primeira ordem.

Ele calcula diretamente a posicao seguinte da partıcula e tambem sua densidade e pressao.

Para isto, leva em conta as forcas derivadas da pressao e da gravidade.

Classe OfflineRenderingManager

Esta classe utiliza o padrao Singleton, ou seja, so pode existir uma unica instancia sua em

um dado momento do tempo. Ela e responsavel por iniciar e gerenciar todo o processo

de renderizacao em off-line, criando e sincronizando as varias threads que sao utilizadas

simultaneamente para realiza-lo.

Classe RenderingTask

Cada RenderingTask e responsavel por executar o processamento de um unico quadro

durante a renderizacao em off-line. Os varios RenderingTasks sao criados e alocados em

alguma thread disponıvel pelo OfflineRenderingManager.

Classe SceneDescriptionWriter

Um objeto SceneDescriptionWriter, que e acionado por uma RenderingTask, tem a funcao

de exportar a cena a ser renderizada para o formato de arquivo utilizado pelo PBRT.

Classe ProcessRunner

Um objeto do tipo ProcessRunner e criado por cada RenderingTask com o objetivo de efe-

tivamente executar o processo externo do PBRT para renderizar um determinado quadro.

Page 39: Animação Foto-Realista de Fluidos Utilizando Métodos Lagrangeanos

CAPITULO 5. METODOLOGIA DE DESENVOLVIMENTO DO APLICATIVO 39

5.1.3 Diagramas de Sequencia

Este tipo de diagrama descreve as interacoes de um grupo de objetos em um determinado

cenario da aplicacao, ilustrando o comportamento dinamico e colaborativo dos mesmos

para realizar uma determinada tarefa [10].

A seguir, serao descritos os diagramas de sequencia dos principais cenarios do software.

Inicializacao da Aplicacao

O diagrama de sequencia que ilustra a inicializacao da aplicacao pode ser visto na Figura 5.3.

A classe Main comeca inicializando um objeto do tipo SimulationGameState, que cria os

objetos geometricos necessarios para a visualizacao dos dados numericos da simulacao. Em

seguida, a classe Main cria um objeto do tipo GuiGameState, que e responsavel por montar

a interface grafica com o usuario (GUI). Para isto, alem de criar uma barra de menus, e

criado um objeto ControlPanel, responsavel por exibir o painel de controle principal da

aplicacao. Este, por sua vez, cria um objeto SimulationSettings e outro RenderingSettings

que ficarao em sincronia com os dados exibidos e alterados pela interface. Apos isso, o

ControlPanel desencadeia o processo de inicializacao da simulacao, que por sua vez inicia-

liza o modelo do fluido. Este processo pode ser visto com mais detalhes na Figura 5.4. Em

seguida, a classe Main marca ambos SimulationGameState e GuiGameState como ativos,

para que estes comecem a ser atualizados e seus elementos renderizados na tela.

Page 40: Animação Foto-Realista de Fluidos Utilizando Métodos Lagrangeanos

CAPITULO 5. METODOLOGIA DE DESENVOLVIMENTO DO APLICATIVO 40

Figura 5.3: Diagrama de Sequencia: Inicializacao da Aplicacao.

Page 41: Animação Foto-Realista de Fluidos Utilizando Métodos Lagrangeanos

CAPITULO 5. METODOLOGIA DE DESENVOLVIMENTO DO APLICATIVO 41

Inicializacao do Fluido

Na Figura 5.4 esta descrita a sequencia para a inicializacao do fluido. Primeiramente e

criado um objeto ParticleSystem que representara o modelo do fluido. Este, por sua vez,

requisita que o SphSolverFactory crie um solver adequado para a simulacao que se deseja

realizar. Em seguida, cria um objeto RegularSpatialSubdivision que por sua vez monta

todas as celulas utilizadas para a subdivisao espacial. Finalmente, o ParticleSystem cria

as partıculas do fluido e as aloca na malha auxiliar, concluindo assim as etapas necessarias

para preparacao do modelo do fluido para a simulacao.

Figura 5.4: Diagrama de Sequencia: Inicializacao do Fluido.

Page 42: Animação Foto-Realista de Fluidos Utilizando Métodos Lagrangeanos

CAPITULO 5. METODOLOGIA DE DESENVOLVIMENTO DO APLICATIVO 42

Atualizacao do Fluido

A Figura 5.5 descreve um passo da atualizacao do fluido no tempo. Este passo comeca com

o objeto SimulationGameState atualizando o modelo fısico do fluido. Para isto, ele comeca

varrendo a malha auxiliar e para cada celula da mesma, coleta as partıculas vizinhas.

Em seguida, ele requisita que o objeto do tipo Solver em uso no momento atualize cada

partıcula da celula sendo processada. Depois as partıculas sao realocadas na malha auxiliar

com base nas suas novas posicoes. Por ultimo, o SimulationGameState atualiza tanto os

objetos geometricos utilizados na renderizacao do fluido quanto os usados para visualizacao

dos campos vetoriais.

Page 43: Animação Foto-Realista de Fluidos Utilizando Métodos Lagrangeanos

CAPITULO 5. METODOLOGIA DE DESENVOLVIMENTO DO APLICATIVO 43

Figura 5.5: Diagrama de Sequencia: Atualizacao do Fluido.

Page 44: Animação Foto-Realista de Fluidos Utilizando Métodos Lagrangeanos

CAPITULO 5. METODOLOGIA DE DESENVOLVIMENTO DO APLICATIVO 44

Renderizacao em Off-line

Pode-se observar na Figura 5.6 o processo de renderizacao em off-line, que comeca com

uma requisicao feita pelo usuario atraves do ControlPanel. Este e responsavel por atualizar

o objeto RenderingSettings para que o mesmo reflita as configuracoes mais recentes feitas

pelo usuario atraves da interface. Em seguida, ele cria uma SceneDescriptionWriter e pede

para que o OfflineRenderingManager inicie a geracao da sequencia de imagens. Este ultimo

inicializa varios objetos RenderingTask, um para cada quadro a ser renderizado. Depois

disto, solicita para a classe ExecutorService a criacao de um grupo de threads (contendo

um thread para cada CPU disponıvel no sistema) que serao responsaveis pela renderi-

zacao. Em seguida, comeca a submeter RenderingTasks para os threads disponıveis. Cada

thread comeca requisitando que o SceneDescriptionWriter escreva a cena de um determi-

nado quadro em disco. Depois, inicializa um objeto ProcessRunner que sera responsavel

por executar o PBRT. Terminada a renderizacao, o SceneDescriptionWriter limpa os ar-

quivos que ja foram utilizados do disco e a RenderingTask e concluıda.

Page 45: Animação Foto-Realista de Fluidos Utilizando Métodos Lagrangeanos

CAPITULO 5. METODOLOGIA DE DESENVOLVIMENTO DO APLICATIVO 45

Figura 5.6: Diagrama de Sequencia: Renderizacao em Off-line.

Page 46: Animação Foto-Realista de Fluidos Utilizando Métodos Lagrangeanos

Capıtulo 6

Resultados

Os exemplos deste capıtulo foram simulados utilizando-se a Equacao (3.1) com os parame-

tros da Tabela 6.1. Em cada simulacao usou-se 4393 partıculas, com um domınio na forma

de paralelepıpedo que se estende do ponto p1 = (0, 0, 0) ate o ponto

p2 = (48, 20, 24) contendo uma esfera fixa (e rıgida) em seu interior. Em todos os ca-

sos exibidos, a condicao inicial e definida distribuindo-se partıculas uniformemente em

uma porcao do domınio, espacadas 1.4 unidades de medida em cada direcao coordenada.

A velocidade tem intensidade inicial que segue o perfil parabolico definido pela expressao:

vx = −(y − ymax

2

)2+ (3.5× ymax) (6.1)

onde y e a altura inicial de cada partıcula e ymax e a altura inicial maxima de qualquer

partıcula. A velocidade inicial tem vetor diretor v = (1, 0, 0), sendo portanto paralela ao

eixo x (ver Figura 6.1). A condicao de contorno utilizada foi a nao-periodica, conforme

descrito na secao 3.2.

46

Page 47: Animação Foto-Realista de Fluidos Utilizando Métodos Lagrangeanos

CAPITULO 6. RESULTADOS 47

Parametros de simulacao Exemplo 1 Exemplo 2 Exemplo 3Coeficiente de pressao 10.0 10.0 10.0Coeficiente de gravidade −5.0 −5.0 −5.0Viscosidade 40.0 40.0 10.0Coeficiente de atrito 0.2 0.2 0.1Massa de cada partıcula 20.0 20.0 10.0

Tabela 6.1: Parametros utilizados nas simulacoes deste capıtulo.

Figura 6.1: Velocidade inicial das partıculas (em vermelho).

Na etapa de renderizacao, usou-se a classe “Direct Lighting” do PBRT, que implementa

o metodo descrito pela equacao (4.1), com os seguintes parametros para o fluido:

∙ Cor da superfıcie: r = 0.0, g = 0.0, b = 1.0;

∙ Coeficientes de reflexao especular: r = 1.0, g = 1.0, b = 1.0;

∙ Coeficientes de reflexao difusa: r = 0.1, g = 0.1, b = 0.1;

∙ Opacidade: 1.0 (totalmente opaco) para o primeiro exemplo e 0.28 (transparente)

para os demais exemplos.

Page 48: Animação Foto-Realista de Fluidos Utilizando Métodos Lagrangeanos

CAPITULO 6. RESULTADOS 48

As paredes do domınio sao totalmente transparentes e a cor da esfera e branca (r = g =

b = 1.0) com material totalmente opaco. Ha duas fontes luminosas direcionais: uma esta a

45∘ em relacao ao eixo y girando no sentido horario; e outra, sob estas mesmas condicoes,

esta a 225∘. Ambas as fontes apontam para o centro da superfıcie do fluido.

A Figura 6.2 mostra uma sequencia de imagens obtida na primeira animacao. Neste

caso, usou-se uma viscosidade alta, o que resultou em comportamento similar ao de

“gelatina”. Uma vez que o fluido e totalmente opaco neste caso, nao ha efeitos de

transparencia. Contudo, ha efeitos de reflexao, particularmente, pode-se perceber o re-

flexo da esfera no fluido. Efeitos de sombra tambem podem ser observados, tanto do fluido

sobre ele mesmo quanto da esfera sobre o fluido.

t = 0s t = 2.5s t = 5s

t = 8s t = 16.5s t = 32s

Figura 6.2: Sequencia de imagens do primeiro exemplo de animacao. Os tempos estaomarcados em segundos.

Page 49: Animação Foto-Realista de Fluidos Utilizando Métodos Lagrangeanos

CAPITULO 6. RESULTADOS 49

A Figura 6.3 mostra outra sequencia de quadros gerada pela aplicacao que foi desen-

volvida. Neste caso, o fluido e transparente e o fundo tem cor amarela (r = 1.0, g = 1.0, b =

0.0). O fluido continua viscoso e as fontes de luz estao na mesma posicao do caso anterior,

observando-se novamente efeitos de sombra. Os reflexos sao bem menos perceptıveis neste

caso em funcao da transparencia.

t = 0s t = 2.5s t = 5s

t = 8s t = 16.5s t = 32s

Figura 6.3: Sequencia de imagens do segundo exemplo de animacao. Os tempos estaomarcados em segundos.

Page 50: Animação Foto-Realista de Fluidos Utilizando Métodos Lagrangeanos

CAPITULO 6. RESULTADOS 50

O ultimo exemplo mostra um fluido transparente, com viscosidade reduzida, utilizando

duas fontes extensas de iluminacao, ou seja, nao-pontuais. Neste caso, nota-se claramente

maior riqueza de detalhes, como efeitos de penumbra, que sao decorrentes desse tipo de

iluminacao (ver Figura 6.4).

t = 0s t = 2.5s t = 5s

t = 8s t = 16.5s t = 32s

Figura 6.4: Sequencia de imagens do terceiro exemplo de animacao. Os tempos estaomarcados em segundos.

Page 51: Animação Foto-Realista de Fluidos Utilizando Métodos Lagrangeanos

Capıtulo 7

Conclusoes e Trabalhos Futuros

Neste trabalho, descrevemos um modelo para animacao de fluidos usando o SPH para a

simulacao e a biblioteca PBRT para a renderizacao. Na secao de resultados, demonstra-

mos a potencialidade do metodo para a animacao de fluidos com realismo tanto visual

quanto fısico. O metodo ainda e computacionalmente caro, particularmente em funcao da

biblioteca PBRT.

A solucao desenvolvida possibilita que artistas graficos manipulem de forma intuitiva

os varios parametros de simulacao e renderizacao necessarios para a geracao de animacoes

via dinamica computacional de fluidos.

A arquitetura do sistema foi desenvolvida visando a facilidade de manutencao e flexi-

bilidade, deixando o mesmo preparado para futuras extensoes. Por exemplo, e possıvel

acoplar novos solvers ou novas bibliotecas para renderizacao em off-line facilmente.

Nos trabalhos futuros, vamos otimizar tanto a etapa de renderizacao quanto a de simu-

lacao, com a implementacao de metodos customizados para geracao de efeitos visuais ainda

melhores.

51

Page 52: Animação Foto-Realista de Fluidos Utilizando Métodos Lagrangeanos

Referencias

[1] N. Adabala e S. Manohar. Techniques for realistic visualization of fluids: A survey. Comput.Graph. Forum, 21(1):65–81, 2002.

[2] B. Ataie-Ashtiani, G. Shobeyri, e L. Farhadi. Modified incompressible sph method forsimulating free surface problems. Fluid Dynamics Research, In Press, Uncorrected Proof,2008.

[3] E. Azevedo. Computacao Grafica - Teoria e Pratica. Editora Campus, 2003.[4] M. Becker e M. Teschner. Weakly compressible sph for free surface flows. Em SCA ’07: Pro-

ceedings of the 2007 ACM SIGGRAPH/Eurographics symposium on Computer animation,pages 209–217, Aire-la-Ville, Switzerland, Switzerland, 2007. Eurographics Association.

[5] C.-W. Chiu, J.-H. Chuang, C.-C. Lin, e J.-B. Yu. Modeling highly-deformable liquid. EmInternational Computer Symposium, 2002.

[6] M. Desbrun e M. Cani-Gascuel. Active implicit surface for animation. Em GI ’98: Pro-ceedings of Graphics Interface 1998. Canadian Human-Computer Communications Society,1998.

[7] O. Deusen, D. S. Ebert, R. Fedkiw, F. K. Musgrave, P. Prusinkiewicz, D. Roble, J. Stam,e J. Tessendorf. The elements of nature: interactive and realistic techniques. Em ACMSIGGRAPH 2004 Course Notes, page 32, 2004.

[8] J. Fang, A. Parriaux, M. Rentschler, e C. Ancey. Improved sph methods for simulating freesurface flows of viscous fluids. Applied Numerical Mathematics, In Press, Corrected Proof,2008.

[9] N. Foster e D. Metaxas. Modeling the motion of a hot, turbulent gas. Em SIGGRAPH ’97:Proceedings of the 24th annual conference on Computer graphics and interactive techniques,pages 181–188, New York, NY, USA, 1997. ACM Press/Addison-Wesley Publishing Co.

[10] M. Fowler. UML Essencial: Um breve guia para a linguagem-padrao de modelagem deobjetos. Bookman, 2005. 3a edicao.

[11] G. A. Giraldi, A. L. A. JR., A. A. F. Oliveira, e R. A. Feijoo. Animacao de flui-dos via tecnicas de visualizacao cientıfica e mecanica computacional. Technical report,Laboratorio Nacional de Computacao Cientıfica (LNCC), Petropolis, RJ, Brasil, 2005.http://virtual01.lncc.br/˜giraldi/TechReport/Fluid-Animation2005.pdf.

[12] O. Genevaux, A. Habibi, e J. michel Dischler. Simulating fluid-solid interaction. Em inGraphics Interface, pages 31–38, 2003.

[13] B. Goetz, T. Peierls, J. Bloch, J. Bowbeer, D. Holmes, e D. Lea. Java Concurrency inPractice. Addison-Wesley Professional, May 2006.

[14] T. Harada, S. Koshizuka, e Y. Kawaguchi. Smoothed particle hydrodynamics on gpus. pages63–70, 2007.

52

Page 53: Animação Foto-Realista de Fluidos Utilizando Métodos Lagrangeanos

REFERENCIAS 53

[15] P. S. Heckbert. Adaptive radiosity textures for bidirectional ray tracing. Em SIGGRAPH’90, pages 145–154, 1990.

[16] X. Y. Hu e N. A. Adams. A multi-phase sph method for macroscopic and mesoscopic flows.J. Comput. Phys., 213(2):844–861, 2006.

[17] A. Iglesias. Computer graphics for water modeling and rendering: a survey. Future Gener.Comput. Syst., 20(8):1355–1374, 2004.

[18] H. W. Jensen e P. H. Christensen. Efficient simulation of light transport in scences withparticipating media using photon maps. Em SIGGRAPH ’98, pages 311–320. ACM, 1998.

[19] jMonkeyEngine, February 2010. http://www.jmonkeyengine.com.[20] A. Khayyer, H. Gotoh, e S. Shao. Corrected incompressible sph method for accurate water-

surface tracking in breaking waves. Coastal Engineering, 55:236–250, March 2008. Issue3.

[21] P. Kipfer e R. Westermann. Realistic and interactive simulation of rivers. Em GI ’06:Proceedings of Graphics Interface 2006, pages 41–48. Canadian Human-Computer Commu-nications Society, 2006.

[22] G. R. Liu e M. B. Liu. Smoothed Particle Hydrodynamics: A Meshfree Particle Method.World Scientific Publishing Company, December 2003.

[23] M. Muller, D. Charypar, e M. Gross. Particle-based fluid simulation for interactive appli-cations. Em SCA ’03: Proceedings of the 2003 ACM SIGGRAPH/Eurographics symposiumon Computer animation, pages 154–159, Aire-la-Ville, Switzerland, Switzerland, 2003. Eu-rographics Association.

[24] M. Muller, S. Schirm, e M. Teschner. Interactive blood simulation for virtual surgery basedon smoothed particle hydrodynamics. Technol. Health Care, 12(1):25–31, 2004.

[25] M. Muller, B. Solenthaler, R. Keiser, e M. Gross. Particle-based fluid-fluid interaction. EmSCA ’05: Proceedings of the 2005 ACM SIGGRAPH/Eurographics symposium on Computeranimation, pages 237–244, New York, NY, USA, 2005. ACM.

[26] OpenGL, February 2010. http://www.opengl.org.[27] M. Pharr e G. Humphreys. Physically Based Rendering: From Theory to Implementation.

Morgan Kaufmann Publishers Inc., San Francisco, CA, USA, 2004.[28] S. Premoze, T. Tasdizen, J. Bigler, A. Lefohn, e R. T. Whitaker. Particle-based simulation

of fluids, 2003. EUROGRAPHICS.[29] W. H. Press, S. A. Teukolsky, W. T. Vetterling, e B. P. Flannery. Numerical Recipes in C:

The Art of Scientific Computing. Cambridge University Press, New York, NY, USA, 1992.[30] G. J. Pringle, S. P. Booth, H. M. P. Couchman, F. R. Pearce, e A. D. Simpson. Towards

a portable, fast parallel ap3m-sph code: Hydra mpi. Em Proceedings of the 8th EuropeanPVM/MPI Users’ Group Meeting on Recent Advances in Parallel Virtual Machine and Mes-sage Passing Interface, pages 360–369, London, UK, 2001. Springer-Verlag.

[31] RealFlow, February 2010. http://www.realflow.com.[32] D. F. Rogers. Procedural elements for computer graphics. McGraw-Hill, Inc., New York,

NY, USA, October 1997.[33] B. Solenthaler, J. Schlafli, e R. Pajarola. A unified particle model for fluid-solid interactions.

Computer Animation and Virtual Worlds, 18(1):69–82, 2007.[34] J. Stam. Stable fluids. Em SIGGRAPH ’99: Proceedings of the 26th annual conference on

Computer graphics and interactive techniques, pages 121–128, August 1999.[35] E. Veach e L. J. Guibas. Metropolis light transport. Em SIGGRAPH ’97, pages 65–76,

1997.

Page 54: Animação Foto-Realista de Fluidos Utilizando Métodos Lagrangeanos

REFERENCIAS 54

[36] K. D. Vertanen. A parallel implementation of a fluid flow simulation usingsmoothed particle hydrodynamics. Technical report, Oregon State University, 1999.http://www.keithv.com/papers/parallel sph simulation.pdf.

[37] T. Whitted. An improved illumination model for shaded display. Commun. ACM, 23(6):343–349, 1980.

[38] P. Witting. Computational fluid dynamics in a traditional animation environment. EmSIGGRAPH ’99: Proceedings of the 26th annual conference on Computer graphics and in-teractive techniques, pages 129–136, New York, NY, USA, 1999. ACM Press/Addison-WesleyPublishing Co.

[39] A. V. Xavier. Animacao de fluidos via automatos celulares e sistemas de partıculas. Master’sthesis, Laboratorio Nacional de Computacao Cientıfica (LNCC), Petropolis, RJ, Brasil, 2006.