Professional Documents
Culture Documents
CUIAB - MT
2009
CUIAB - MT
2009
CERTIFICADO DE APROVAO
Aprovada em ___/___/______
DEDICATRIA
A Deus, pela oportunidade que me tem dado de viver a vida livremente.
minha famlia, por todo apoio dado no decorrer da minha existncia.
AGRADECIMENTOS
Ao Prof. Joo Paulo Ribas pela orientao que prestou na elaborao desse trabalho,
ao Prof. Arlenes pela correo e orientao nas partes em que exigido matemtica e ao Prof.
Valdenilson pela ajuda valiosa que me ofereceu sobre equaes diferenciais e o mtodo de
Runge-Kutta.
A todos os colegas que diretamente ou indiretamente me apoiaram.
meu pai que me sustentou todo o perodo em que estive na faculdade, sem o qual
essa monografia no viria a existir.
ndice de ilustraes
Figura 1: Sistema de partculas com um nascedouro em forma de esfera, as partculas nascem
aleatoriamente em posies que estejam dentro da esfera........................................................21
Figura 2: Efeitos de letras queimando (acima), e vortex (abaixo)............................................23
Figura 3: Efeito de gua utilizando um sistema de partculas...................................................23
Figura 4: Imagens do filme animado Particle Dreams, acima uma tempestade de neve e abaixo
uma cabea respirando..............................................................................................................23
Figura 5: Partculas orbitando em volta de um ncleo (Acima), exploso (meio) e uma
cachoeira (abaixo).....................................................................................................................23
Figura 6: Coordenadas cartesianas, representa um espao tridimensional...............................25
Figura 7: Uma partcula nas posies t = 0, t = 1/2 e t = 1.......................................................26
Figura 8: Mtodo de Euler, estima o valor de yn+1 em funo de yn......................................30
Figura 9: Mtodo de Runge-Kutta de 2 ordem, nota-se uma maior preciso comparada com o
mtodo de Euler........................................................................................................................31
Figura 10: Mtodo Runge-Kutta de 4 ordem...........................................................................32
Figura 11: Arquitetura do sistema de partculas implementado nesse trabalho........................38
Figura 12: Classe que representa uma partcula........................................................................40
Figura 13: Classe que representa um sistema de partculas......................................................43
Figura 14: Classe que representa um gerenciador de sistemas de partculas............................45
Figura 15: Relao entre as trs classes principais do sistema.................................................46
Figura 16: Funcionamento de um loop responsvel por manter um jogo ou uma animao
rodando......................................................................................................................................48
Figura 17: Loop atualizado, incluindo a atualizao do sistema de partculas implementado
nesse trabalho............................................................................................................................49
Figura 18: Partculas nascendo de um ponto no espao cartesiano..........................................51
Figura 19: Partculas nascendo de um plano no espao cartesiano...........................................52
Figura 20: Partculas nascendo de um disco no espao cartesiano...........................................53
Figura 21: Partculas nascendo de um cubo no espao cartesiano............................................54
Figura 22: As foras podem agir em cada eixo separadamente, sem depender um do outro....59
Figura 23: Classe que representa as equaes diferenciais ordinrias de primeira ordem.......64
Figura 24: Classe que representa o mtodo Runge-Kutta.........................................................64
Figura 25: Loop atualizado, incluindo a parte de movimentao das partculas......................65
Figura 26: Fora da gravidade atuando apenas do lado esquerdo da origem............................68
Figura 27: Efeito de motion blur em uma foto..........................................................................69
Figura 28: Sistema de partculas sem motion blur....................................................................70
Figura 29: Sistema de partculas com motion blur....................................................................70
Figura 30: Sistema de partculas renderizada utilizando texturas.............................................70
Figura 31: Sistema de partculas renderizada sem usar texturas...............................................70
Figura 32: Partculas renderizadas como bolhas de ar..............................................................71
Figura 33: Partculas representando plos................................................................................71
Figura 34: Sistema de partculas feito pelo autor, mostrando as partculas no espao 3D.......72
Figura 35: Partculas sendo influenciadas pela gravidade no eixo X........................................73
Figura 36: Partculas sendo atradas por uma fora oposta da gravidade no eixo Y.................74
Figura 37: As partculas podem ser de qualquer de cor............................................................74
Figura 38: Partculas nascendo dentro de um cubo...................................................................75
Figura 39: Partculas ao longo do lado negativo do eixo x, sendo influenciadas pela gravidade.
...................................................................................................................................................75
Figura 40: Foras disponveis no sistema.................................................................................76
Figura 41: Interface de configurao da gravidade...................................................................77
ndice de Equaes
Mtodo de Euler........................................................................................................................30
Fator k1 do mtodo de euler melhorado...................................................................................31
Fator k2 do mtodo de euler melhorado...................................................................................31
Mtodo de Euler melhorado......................................................................................................31
Fator k1 do mtodo de Runge-Kutta de 4 ordem.....................................................................32
Fator k2 do mtodo de Runge-Kutta de 4 ordem.....................................................................32
Fator k3 do mtodo de Runge-Kutta de 4 ordem.....................................................................32
Fator k4 do mtodo de Runge-Kutta de 4 ordem.....................................................................32
Mtodo de Runge-Kutta de 4 ordem........................................................................................32
O eixo x dado como um nmero aleatrio entre um valor inicial e um final.........................53
O eixo z dado como um nmero aleatrio entre um valor inicial e um final.........................53
Valor a ser usado para a obteno da raiz quadrada de um nmero aleatrio...........................54
O eixo x do nascedouro em forma de disco..............................................................................54
O eixo z do nascedouro em forma de disco..............................................................................54
O eixo x do nascedouro em forma de cubo dado como um nmero aleatrio entre um valor
inicial e um final.......................................................................................................................55
O eixo y do nascedouro em forma de cubo dado como um nmero aleatrio entre um valor
inicial e um final.......................................................................................................................55
O eixo z do nascedouro em forma de cubo dado como um nmero aleatrio entre um valor
inicial e um final.......................................................................................................................55
Segunda lei de Newton.............................................................................................................59
Segunda lei de Newton sobre o eixo x......................................................................................60
Segunda lei de Newton sobre o eixo y......................................................................................60
Segunda lei de Newton sobre o eixo z......................................................................................60
Segunda lei de newton no eixo x modificado...........................................................................60
Segunda lei de newton no eixo y modificado...........................................................................60
Segunda lei de newton no eixo z modificado...........................................................................60
Acelerao como a derivativa da velocidade em relao ao tempo..........................................61
Acelerao como a derivativa da velocidade no eixo x em relao ao tempo..........................61
Acelerao como a derivativa da velocidade no eixo y em relao ao tempo..........................61
Acelerao como a derivativa da velocidade no eixo z em relao ao tempo..........................61
Velocidade como a derivativa da posio em relao ao tempo...............................................61
Velocidade no eixo x como a derivativa da posio em x em relao ao tempo......................61
Velocidade no eixo y como a derivativa da posio em y em relao ao tempo......................61
Velocidade no eixo z como a derivativa da posio em z em relao ao tempo.......................61
Acelerao como a derivativa da velocidade pelo tempo.........................................................63
Velocidade como a derivativa da posio pelo tempo..............................................................63
Acelerao como uma derivativa vezes a derivativa da posio pelo tempo...........................63
Acelerao como a derivativa de segundo grau da posio pelo tempo...................................63
Equao da lei de Hook............................................................................................................63
Equao da lei de Hook modificado de acordo com a segunda lei de Newton........................63
Derivativa da velocidade como sendo a lei de Hook divido pela massa..................................63
Derivativa da posio em x como sendo a velocidade..............................................................63
Lei da gravitao universal.......................................................................................................67
Frmula da resistncia do vento................................................................................................68
Lei de Hook...............................................................................................................................68
A fora da lei de Hook no segundo objeto influenciado...........................................................68
Sumrio
RESUMO..................................................................................................................................11
1 INTRODUO.....................................................................................................................12
1.1 Apresentao..................................................................................................................12
1.2 Objetivos........................................................................................................................14
1.2.1 Objetivo Geral........................................................................................................14
1.2.2 Objetivos especficos..............................................................................................14
1.3 Justificativa.....................................................................................................................15
1.4 Metodologia....................................................................................................................15
1.5 Cronograma Proposto.....................................................................................................17
1.6 Cronograma Executado..................................................................................................18
2 FUNDAMENTAO TERICA.........................................................................................19
2.1 Introduo ao Sistema de Partculas...............................................................................19
2.1.1 Modelo bsico de um sistema de partculas...........................................................20
2.1.1.1 Gerao de partculas......................................................................................21
2.1.1.2 Atributos das partculas...................................................................................21
2.1.1.3 Dinmica das partculas..................................................................................23
2.1.1.4 Extino de partculas.....................................................................................23
2.1.1.5 Renderizao de partculas.............................................................................23
2.1.1.6 Hierarquia de partculas..................................................................................23
2.1.2 Exemplos de animaes geradas por sistemas de partculas..................................24
2.2 Mecnica Clssica..........................................................................................................25
2.2.1 Sistema de coordenadas Cartesianas......................................................................25
2.2.2 Vetores....................................................................................................................26
2.2.3 Massa......................................................................................................................26
2.2.4 Segunda Lei de Newton..........................................................................................27
2.2.5 Velocidade...............................................................................................................27
2.2.6 Acelerao..............................................................................................................28
2.2.7 Fora.......................................................................................................................28
2.3 Resolvendo problemas fsicos por meio de Mtodos Numricos..................................29
2.3.1 Soluo numrica de Equaes Diferenciais Ordinrias........................................29
2.3.1.2 Mtodos de Runge-Kutta................................................................................30
2.4 Programao Orientada a Objetos..................................................................................34
2.4.1 O que Programao Orientada a Objetos.............................................................35
2.4.2 Caractersticas da Programao Orientada a Objeto..............................................35
2.4.2.1 Encapsulamento..............................................................................................35
2.4.2.2 Abstrao de dados.........................................................................................36
2.4.2.3 Polimorfismo...................................................................................................36
2.4.2.4 Herana...........................................................................................................37
3 MODELAGEM E IMPLEMENTAO...............................................................................38
3.1 Arquitetura e modelagem de um Sistema de Partculas.................................................38
3.1.1 Criando as estruturas de dados de um sistema de partculas..................................39
3.1.1.1 Partcula..........................................................................................................39
3.1.1.2 Sistema de partculas.......................................................................................41
3.1.1.3 Gerenciador de Sistemas de partculas...........................................................44
3.2 Execuo do sistema de partculas.................................................................................48
3.2.1 Gerao das partculas............................................................................................50
3.2.1.1 Criando partculas dentro de nascedouros......................................................51
3.2.1.1.1 Primeiro nascedouro: Ponto....................................................................52
11
RESUMO
O presente trabalho visa apresentar um modelo e implementao de um sistema de
partculas utilizando fundamentos tericos nos artigos que falam sobre o tema, o objetivo
modelar e animar objetos no-determinsticos, nas quais as tcnicas clssicas da computao
grfica no conseguem atingir resultados satisfatrios.
O sistema de partculas foi introduzido por William Reeves em 1983 quando estava
com a responsabilidade de produzir efeitos especiais no filme Star Trekk 2: A fria de Khan, o
resultado foi um artigo cientfico explicando como que funciona esse efeito e a partir de
ento, muitos outros cientistas comearam a estender o sistema para produzir outros efeitos
interessantes e mais complexos.
Com levantamento bibliogrfico sobre as reas que so usadas para produzir um
sistema de partculas, como fsica, processos estocsticos e mtodos numricos, esse trabalho
produz uma monografia explicativa sobre o tema e que aborde todos os aspectos sobre a
construo de um sistema de partculas bsico utilizando a programao orientada a objeto.
O resultado um software que anima diversos efeitos abstratos na tela, juntamente
com uma interface que permite alterar o comportamento da animao, produzindo cada vez
mais efeitos.
Palavras-chave: sistema de partculas, computao grfica, mtodos numricos, fsica
12
1 INTRODUO
1.1 Apresentao
O homem sempre buscou registrar e expressar suas aes e arte por meio de desenhos,
como possvel observar por meio de figuras achadas em cavernas e das animaes feitas
com papel e lpis. Hoje no diferente, mas em vez de carvo, giz ou papel usa-se o
computador para desenhar figuras e gerar animaes que cada vez mais se parecem com o
mundo real.
Shirley(2005) diz que a computao grfica a rea da Cincia da Computao que
descreve o uso de computadores para criar e manipular imagens e tambm responsvel pelo
progresso da animao criada por computadores. Uma animao simplesmente um conjunto
de figuras que so passadas rapidamente de forma consecutiva.
No decorrer da evoluo da computao grfica e da animao por computador, houve
um certo tempo em que a necessidade era mostrar imagens mais parecidas com o mundo real,
objetos que no possuam um forma fsica definida no eram facilmente gerados no
computador usando as tcnicas daquele tempo, que consistia em modelar objetos usando
primitivas como polgonos em geral.
Fenmenos e elementos da natureza como chuva, furaces, fogo, galxias, gua,
gases, nuvens, flora em geral e efeitos como exploses no eram possveis de se representar
usando as tcnicas clssicas da Computao Grfica, pois esses elementos no possuem uma
superfcie slida e tambm no so estticos e suas formas mudam com o tempo, por esse
motivo, so chamados de objetos com forma no-determinstica, ou seja, so objetos que no
possuem uma forma definida no tempo, segundo Reeves(1983).
Uma das tcnicas que apareceu para simular esses efeitos o sistema de partculas
introduzido por William Reeves em seu artigo pela SIGGRAPH1 83, na qual consiste em
vrias primitivas ( representadas por pontos no espao tridimensional ) sendo manipuladas e
1 Conferncia internacional anual realizada por entusiastas da computao grfica.
13
renderizadas individualmente. Um sistema de partculas difere em trs aspectos em relao
modelagem tradicional na computao grfica: Primeiro, o objeto representado atravs de
partculas (pontos) e no atravs de polgonos ou superfcies, os pontos que apresentam o
volume e a forma do objeto num dado instante. Segundo: Um sistema de partculas no uma
entidade esttica, ela se move e muda de forma com o passar do tempo. Novas partculas
nascem e partculas velhas morrem. Terceiro: O objeto representado por esse sistema no
determinstico, ou seja, no possui uma forma ou superfcie definida e, com o passar do
tempo, essa forma muda.
O presente trabalho visa demonstrar o desenvolvimento de um sistemas de partculas
utilizando o paradigma de programao orientada a objeto (POO).
14
1.2 Objetivos
1.2.1 Objetivo Geral
A fim de contribuir para a rea de Computao Grfica, no que concerne a rea de
animao utilizando sistemas de partculas, este trabalho tem como objetivo implementar um
sistema de partculas bsico utilizando todos os conceitos do paradigma de programao
orientada a objeto.
15
1.3 Justificativa
O sistema de partculas proposto por William Reeves, trouxe uma enorme ampliao
nas aplicaes da Computao Grfica sendo que, antes disso no era possvel ou era muito
difcil modelar e animar elementos da natureza e objetos no-determinsticos. Na literatura
difcil retirar informaes suficientes para implementar um sistema de partculas, pelo fato
dessas informaes estarem separadas, sendo que em artigos de Computao Grfica
consultados, no mostrado em profundidade a fsica utilizada no sistema, e os livros de
fsica no mostram a parte de renderizao e efeitos especiais.
Neste trabalho procura-se organizar o contudo necessrio para a implementao de
um sistema de partculas, enfatizando a parte terica necessria para a compreenso dos
conceitos fsicos envolvidos, a parte grfica e a implementao, de modo que o leitor possa ter
uma compreenso global do problema.
1.4 Metodologia
O presente trabalho ser feito atravs dos seguintes passos:
16
assuntos j citados e implementaes dos tpicos desses assuntos que forem relevantes para a
implementao de um sistema de partculas segundo o paradigma de programao orientada a
objeto.
17
Agosto
1
Setembro
3
Outubro
3
Novembro
3
Dezembro
3
Etapa 1
Etapa 2
Etapa 3
Etapa 4
Etapa 5
Etapa 6
18
Agosto
1
Setembro
3
Outubro
3
Novembro
3
Dezembro
3
Etapa 1
Etapa 2
Etapa 3
Etapa 4
Etapa 5
Etapa 6
19
2 FUNDAMENTAO TERICA
2.1 Introduo ao Sistema de Partculas
Segundo Reeves(1983), fenmenos como nuvens, gua, fumaa e fogo tem provado
ser difcil de modelar e animar com as tcnicas tradicionais de sntese de imagens da
computao grfica.
Objetos como esses citados no possuem uma forma definida, tal como um carro ou
uma mesa, em vez disso suas formas so complexas, mudam com o tempo e so
completamente irregulares. Assim, William Reeves props uma tcnica para a modelagem de
objetos no-determinsticos, na qual ele chamou de Sistema de partculas.
A apresentao do mtodo proposto por Reeves se diferencia das tcnicas tradicionais
de modelagem em trs pontos:
1) Um objeto no representado por polgonos ou por qualquer forma que defina sua
superfcie, mas polgonos primitivos ( pontos e linhas ) definem seu volume.
2) Um sistema de partculas no uma entidade esttica, as partculas se movimentam
com o passar do tempo. Novas partculas nascem e velhas partculas morrem.
3) Um objeto representado por um sistema de partculas no determinstico, j que sua
forma no completamente especificada, no entanto, mtodos estocsticos ( que
utilizam aleatoriedade ) so usados para criar e mudar forma e aparncia do objeto.
Algumas das vantagens que William Reeves fala que o sistema de partculas traz,
que as partculas so primitivas simples de renderizar, por isso, muitas partculas podem ser
renderizadas na tela, dando assim um maior realismo na modelagem do objeto nodeterminstico.
Outra vantagem que o sistema de partculas se auto-ajusta atravs de nmeros
aleatrios, ou seja, as partculas se comportam de acordo com um algoritmo pr-estabelecido
que atualizado atravs da aleatoriedade, o que faz com que o sistema no precise de controle
humano durante a sua execuo. E tambm porque esse sistema modela objetos que esto
'vivos', o que extremamente difcil de se conseguir com as tcnicas convencionais de
modelagem e animao.
20
21
2.1.1.1 Gerao de partculas
nParticulas = 50 + rand()*50
Supondo que rand() retorne 0.5, nParticulas ser 50 + 0.5*50 = 75. O sistema ir gerar
Para cada nova partcula gerada, o sistema de partculas deve determinar valores para
cada um dos seguintes atributos:
1. Posio inicial
2. Velocidade inicial ( velocidade e direo )
3. Tamanho inicial
4. Cor inicial
5. Transparncia inicial
6. Forma ( geralmente ponto ou linha )
7. Tempo de vida
22
Um sistema de partculas tem sua posio no espao tridimensional que define sua
origem e dois ngulos de rotao sobre o sistema de coordenada na origem do sistema de
partculas. Um sistema de partculas tambm possui um nascedouro, que uma regio onde as
partculas so aleatoriamente colocadas para nascer, desde que a posio inicial delas seja
dentro dos limites do nascedouro. Dentre esses nascedouros pode-se citar uma esfera, um
cubo, um crculo, um plano ou um simples ponto.
23
2.1.1.3 Dinmica das partculas
Quando gerada, dada para uma partcula um tempo de vida baseada no nmero de
frames na qual essa partcula ir agir, depois de passado esse tempo a partcula deletada do
sistema, outros mecanismos permitem extinguir a partcula quando ela no contribui mais
para a imagem, isso acontece quando ela fica transparente ou quando sua cor se torna igual ao
da cor de fundo, ou quando ela sai dos limites do monitor do computador.
2.1.1.5 Renderizao de partculas
Quando a posio das partculas e seus atributos estiverem atualizados, basta desenhar
a imagem ou primitiva que represente a partcula no monitor do computador. Quando
partculas se encontram, a coliso pode ou no ser detectada. Sombras podem ou no ser
necessrias, j que partculas podem ser implementadas para emitir luz. A cena em que o
sistema de partculas se encontra pode ou no interagir com o sistema.
2.1.1.6 Hierarquia de partculas
24
Figura 2: Efeitos de
letras queimando
(acima), e vortex
(abaixo).
Figura 4: Imagens do
filme animado Particle
Dreams, acima uma
tempestade de neve e
abaixo uma cabea
respirando.
25
26
2.2.2 Vetores
Quando algum fala que um cesto de mas contm 5 mas, o nmero 5 est se
referindo a quantidade de mas na cesta, esse valor algo que por si s j possui um
significado completo. Mas quando algum fala que um objeto est a 100 km/h, pode-se inferir
apenas a intensidade da velocidade, mas, em que direo e em qual sentido o objeto est se
movendo? O valor no caso da cesta de mas chamado de grandeza escalar, enquanto que o
valor da velocidade do objeto chamado de grandeza vetorial, sendo representado por um
vetor, isso porque um vetor demonstra tanto a intensidade, direo e sentido.
Segundo Millington(2007), um vetor representa uma mudana na posio de um
ponto. Partculas so pontos que se movem constantemente no espao tridimensional, por
isso, a representao da velocidade, acelerao e das foras que agem nas partculas sero
representadas como vetores, pelo simples fato de que todos esses fatores possurem uma
intensidade, uma direo e um sentido.
2.2.3 Massa
A massa de um corpo geralmente interpretado como a quantidade de matria que o
corpo possui. No caso de fsica focada em computao e mais especificamente em um sistema
de partculas, a massa pode ser interpretada como a quantidade de resistncia que a partcula
ir ter contra uma alterao de sua posio.
27
2.2.5 Velocidade
Como dito anteriormente, a velocidade representada por um vetor porque possui uma
intensidade, direo e um sentido. Por definio, velocidade significa a distncia percorrida
num dado intervalo de tempo. Por exemplo, uma partcula no espao em uma determinada
hora ( supondo t = 0 ) est numa posio x, passado dois segundos, a posio da partcula
mudou para x + 2, ou seja, a partcula andou 1 posio para cada segundo passado, ento diz
que a partcula teve uma velocidade de 1 p/s ( posio por segundo ). Em termos de fsica
focada em computao e mais precisamente em sistemas de partculas, pode-se dizer que a
velocidade ser o tanto de posio que a partcula ir andar a cada passagem de tempo, ou
seja, quanto maior for a velocidade, mais distante a partcula ir se deslocar a cada acrscimo
de tempo.
28
2.2.6 Acelerao
Acelerao a taxa com que a velocidade de uma partcula aumentada. Por exemplo,
como citado anteriormente na frmula da segunda lei de Newton, a acelerao pode ser obtida
atravs da razo da fora resultante com a massa, depois de calculado a acelerao, ela
somada com a velocidade, fazendo com que a partcula fique mais rpida.
2.2.7 Fora
Certos fenmenos fsicos so chamados de foras, sendo que uma fora toda 'energia'
que, segundo Millington(2007), faz com que a acelerao ou movimento de um objeto mude.
Ao arrastar uma caixa, percebe-se que deve fazer fora para empurr-la, isso acontece
porque uma fora chamada atrito ( da caixa com o cho ) est dificultando o processo, ou seja,
o atrito uma fora que est mudando a acelerao da caixa ( nesse caso, retardando o
aumento da acelerao ). No caso de um sistema de partculas, toda fora far alguma
mudana de movimento em cada partcula, desde de que a massa da partcula no seja muito
grande, caso contrrio, a partcula mal se mover.
Como exemplos de foras podemos citar o vento, gravidade, presso, etc. A acelerao
de uma partcula determinada pela soma de todas as foras dividido pela massa, sendo
assim, os passos para se realizar a movimentao das partculas ficaria o seguinte:
1. Calcula-se as propriedades da partcula como massa, posio inicial, velocidade, etc.
2. Identifica e calcula todas as foras atuantes no sistema.
3. Pegue a soma de todas as foras.
4. Calcula a acelerao atravs da segunda lei de Newton manipulada: a = F/m.
5. Atualiza a posio, velocidade da partcula utilizando mtodos de resoluo de
equaes diferenciais ordinrias.
29
30
com seus pontos fracos e fortes. Dentre eles podemos citar o mtodo de Euler, os mtodos de
Runge-Kutta que consistem numa srie de mtodos, extrapolao de Richardson e mtodos
multi-passo. No contexto desse trabalho optou-se pelo mtodo de Runge-Kutta de 4 ordem
em funo de sua preciso.
(1)
O mtodo de Euler no usado na prtica pelo fato de ser pouco preciso e instvel, ou
seja, dependendo do valor que ele processa, os resultados podem variar muito do resultado
esperado e assim oferecendo valores imprecisos, na prtica, isso significaria que as partculas
no iriam se comportar como no mundo real e poderiam inclusive demonstrar um
comportamento bem longe do esperado, a seguir ser mostrado como se chega ao mtodo de
Runge-Kutta de 4 ordem atravs do mtodo de Euler.
Na equao anterior, o termo esquerda da igualdade significa o prximo valor de y,
na prtica isso significaria a prxima posio da partcula. A prxima posio obtida
pegando a posio inicial ( yn ) e somando com a multiplicao de um intervalo de tempo ( h )
com a equao diferencial ordinria que esta sendo resolvida ( como exemplo podemos citar a
segunda lei de Newton F = ma, na sua forma a = F/m ou dv/dt = F/m ).
Como dito anteriormente, o mtodo de Euler no muito preciso, por isso, segundo
Press(2007), essa equao pode ser melhorada adicionando um passo intermedirio,
melhorando a preciso do mtodo. A figura 8 mostra o que o mtodo de Euler faz para chegar
31
ao resultado. O passo 2 conseguido simplesmente com o passo 1 mais o intervalo de tempo
requerido junto com a funo.
(2)
k
h
k 2 =h x n , y n 1
2
2
(3)
y n1= y n k 2
(4)
32
(5)
k
h
k 2 =h x n , y n 1
2
2
(6)
k
h
k 3=h x n , y n 2
2
2
(7)
k 4 =h x n h , y nk 3
(8)
h
y n1= y n k 12k 22k 3k 4
6
(9)
O prximo valor de y ( posio de uma partcula no nosso caso ) dado pelo valor
atual mais os passos intermedirios multiplicados por pesos. A figura 10 demonstra o que esse
mtodo faz.
33
34
35
Cada objeto uma entidade autnoma e integral. Ele precisa de recursos para
manifestar seus estados e comportamentos. Pode ser visto como uma entidade encapsulada e
protegida, seus dados so privados ( ou no ) e so escondidos de outros objetos. Sua
interao com outros objetos se d por meio de mensagens que so mandadas e respondidas e
cada objeto tem uma viso limitada de outro objeto.
Em um sistema de partculas, cada partcula seria um objeto autnomo e independente,
assim como os controladores delas. Cada partcula possui os seus atributos apenas para si
mesmas e podem ser atualizadas de maneira diferente, j que so independentes uma das
outras. A relao entre os controladores e as partculas se daria por meio de mensagens que
um passa para o outro.
36
2.4.2.2 Abstrao de dados
37
2.4.2.4 Herana
38
3 MODELAGEM E IMPLEMENTAO
3.1 Arquitetura e modelagem de um Sistema de Partculas
Deixando a teoria e passando para a prtica, o primeiro assunto que ir ser tratado na
implementao de um sistema de partculas nesse trabalho ser a sua arquitetura e
modelagem, ou seja, como os elementos iro estar dispostos no sistema como um todo e como
ir ser a estrutura de cada um deles.
Primeiramente deve-se pensar o que se espera de um sistema de partculas, ou seja,
quais os efeitos que ele deve animar e tambm quais efeitos podem ser possveis de serem
feitos. Por exemplo, pode-se citar o efeito de fumaa que, quando um carro passa, a fumaa
influenciada pelo vento causado pelo carro ou ento, uma chuva caindo e logo em seguida um
efeito de nevasca aparece, por causa da variao da temperatura. Pode-se imaginar tambm o
efeito de fogo, cachoeira para simulao de fenmenos da natureza, e no caso de jogos
eletrnicos e filmes, efeitos abstratos de magia, sangue, fluidos viscosos em geral, esses so
alguns dos efeitos que o sistema de partculas desse trabalho deve ser capaz gerar por meio de
futuras extenses.
Efeitos que no so implementados, podero ser adicionados sem muito esforo
futuramente, o que indica que a arquitetura do sistema deve ser extensvel. Outra
caracterstica notvel que o sistema possui vrios efeitos diferentes, que por sua vez possui
parmetros diferentes e comportamentos diferentes, por exemplo: O efeito de neve possui
partculas de cores diferentes, uma dinmica diferente e tempo de vida diferente do que um
efeito de fogo, onde as partculas pertencentes a esse efeito geralmente tero uma cor
avermelhada ou amarelada, assim como a dinmica do fogo ser diferente da dinmica da
neve. Ou seja, cada sistema ter parmetros e dinmicas diferentes um do outro.
Outro fator a ser considerado que numa animao poder existir mais de um sistema
de partculas executando, como exemplo pode-se citar a chuva, que num dado instante
apenas uma gota caindo, que quando atinge o cho se transforma numa pequena exploso
(gua batendo no cho), que pode ser um outro sistema de partculas, observado isso, a
arquitetura deve considerar a execuo e criao de vrios sistemas de partculas, tudo em
tempo real. Dado essas observaes, pode-se modelar o sistema de acordo com a figura 11:
39
Posio atual
Posio anterior
Velocidade inicial
Acelerao
Tamanho inicial
Cor inicial
Cor final
Tempo de vida
40
Primeiramente, deve-se saber a posio de uma partcula no espao, ou seja, a posio
nos eixos x, y e z das coordenadas cartesianas, caso haja desejo de produzir efeitos com a
partcula, tem-se a posio anterior que torna possvel esse efeito. A posio dividida em x,
y e z, portanto um vetor aqui se faz presente.
Tem os atributos de velocidade e acelerao que diz respeito a movimentao das
partculas, a velocidade indica a quantidade de movimento da partcula enquanto a acelerao
indica a taxa de aumento da velocidade, ou seja, a velocidade adiciona a posio e a
acelerao adiciona a velocidade, adiante nesse trabalho ser mostrado como a posio,
velocidade e a acelerao se interagem entre si para que a movimentao da partcula se torne
realista, segundo o padro da fsica clssica. A velocidade e a acelerao so divididas em
trs: x, y e z.
O tamanho do ponto (ou espessura da linha) que ir representar a partcula, pode
tambm dizer o tamanho da textura utilizada para representar a partcula. A cor inicial e final
indicam quais so as cores que a partcula dever possuir.
A partcula pode, em teoria, possuir qualquer forma, sempre lembrando que quanto
mais complexa for essa forma, mais difcil ser de renderizar as milhares de partculas na tela.
O tempo de vida indica quantos quadros da animao a partcula estar visvel, aps
esse perodo de tempo, a partcula ser reiniciada ou removida do sistema. Esse mecanismo de
vida e morte pode ser implementada de acordo com a transparncia da partcula, quando
estiver totalmente transparente, ela pode ter seu tempo de vida esgotado e ento excluda do
sistema.
Na programao orientada a objeto, define-se tambm o comportamento do objeto,
que representada por mtodos (funes na programao estruturada). Dentre os
comportamentos bsicos que uma partcula pode possuir, pode-se citar: A movimentao e a
renderizao. Uma partcula se movimenta de acordo com a fsica implementada, ou seja,
uma fsica que simula a chuva para partculas que simulam uma chuva, e ento renderizada
de acordo com a sua forma e cor na posio desejada.
Mas existe um problema: Caso a rea de criao das partculas seja restrita e tambm
se houver uma rea de coliso, como as partculas iro saber, se essas informaes esto na
classe 'Sistema de partculas'? E as foras que atuam sobre as partculas, cujo valor tambm se
encontram na classe de hierarquia superior? Por isso, os mtodos que implementaro o
41
movimento das partculas e tambm a renderizao se encontraro na classe de hierarquia
superior seguinte.
Dado todas essas definies, tem-se ento o objeto 'Partcula', que em programao
orientada a objeto define-se por classe 'Partcula', para a representao de vrios objetos com
atributos de valores diferentes. A figura 12 mostra uma classe 'Partcula' utilizando a
linguagem UML, utilizada para modelagem de softwares:
42
Dentre os atributos dessa classe cita-se:
Nmero de identificao
A lista ligada necessria para guardar todas as partculas do sistema, um array (ou
vetor) pode ser usado, mas Lander(1998) diz que uma lista ligada faz com que fique muito
mais fcil de excluir e incluir partculas, alm de otimizar muito o processo de atualizao, j
que muitas partculas podem estar morrendo e nascendo o tempo todo.
O vetor 3D contendo as foras em x, y e z responsvel por guardar o valor da fora
que ser exercida nas partculas, essa fora pode ser a gravidade, resistncia do vento ou
qualquer outro fator fsico que o desenvolvedor decidir implementar. Essas foras possuem
cada uma, frmulas prprias para que consiga seus valores num dado tempo. Na seo 3.3 ir
ser explicado em detalhes essa parte.
A textura pode ser usada para dar aparncia s partculas, por exemplo, pode ser usado
uma textura de fumaa para as partculas, assim todas elas tero a mesma aparncia e assim
daro um efeito mais realista.
O nmero de partculas vivas diz se o sistema ainda est executando ou no, quando
esse nmero for zero, o sistema estar dizendo que ele j fez o seu trabalho e que pode ser
excludo.
O atributo que diz respeito a rea ou espao de criao de partculas, responsvel
por colocar todas as partculas em um determinado lugar, e esse lugar pode ser um objeto de
qualquer forma, desde de um ponto at um cubo, esfera ou outro objeto.
As variveis que guardam as variaes dos atributos que so responsveis pela
aleatoriedade da aparncia das partculas, que feita por processos estocsticos, explicadas na
43
seo 3.2.1.2.
O ltimo atributo apenas um nmero inteiro para a posterior remoo do sistema que
se encontra no gerenciador (mostrado mais a frente), assim, quando o usurio quiser que um
determinado sistema seja removido de cena, basta indicar esse nmero para o gerenciador, e
ento o mesmo ir remov-lo.
Aps determinar os atributos, os mtodos devem agora ser definidos, e dentre os
principais mtodos podemos citar:
Renderizar as partculas
44
partculas existir no sistema, mais demorado ser para que esses mtodos executem as suas
tarefas.
O sexto e ltimo mtodo retorna o nmero de identificao passado por parmetro na
criao do sistema de partculas.
Na linguagem de modelagem UML a classe 'Sistema de Partculas' fica assim:
45
gerenciador verificaria esse acontecimento e ento retiraria da memria o sistema morto.
Definido a misso da classe, abaixo mostrado o nico atributo da classe 'Gerenciador
de Sistemas de Partculas':
precisa uma lista que contenha todos os sistemas de partculas que o usurio precisa para a
sua cena. Os mtodos so os seguintes:
46
partculas possui comportamento prprio que so implementados por meio de subclasses da
classe 'Sistema de Partculas', no entanto, o gerenciador apenas ir chamar o mtodo 'atualizar'
e ento cada sistema ir se comportar da maneira que foi programada.
O quinto mtodo encerra todos os sistemas de partculas que porventura estejam ativos
no gerenciador liberando a memria usada por eles.
E o ltimo verifica se um determinado sistema de partculas ainda est ativo dentro do
sistema.
A classe 'Gerenciador de Sistemas de Partculas' fica definida assim na linguagem
UML:
47
48
animaes
tradicionais, que consistiam em sequncias de papis. Outro contexto a ser visto que um
Sistema de partculas no s uma animao, mas tambm uma animao onde a interao
com o usurio faz com que este mude o jeito que a animao executa, isso se deve ao fato de
que o usurio deseja mudar as regras de criao ou movimento das partculas a qualquer
momento, por isso, deve-se pensar que um Sistema de Partculas no s uma animao onde
no h interao com o usurio (como num filme animado por exemplo), o usurio influencia
diretamente o decorrer da animao.
Dalmau(2004) mostra o mecanismo de um loop usado frequentemente em jogos, que
se encaixa perfeitamente no sistema que esse trabalho est implementado. A figura 16 mostra
como funciona esse loop:
49
50
51
guardar os valores de seus atributos para que sejam usados pela classe superior a eles. Sendo
assim, nessa seo ser explicado como que a classe superior classe 'Partcula' executa as
suas duas primeiras atividades (ou mtodos) citadas na seo 3.1.1.2, que so referentes
criao e inicializao das partculas.
3.2.1.1 Criando partculas dentro de nascedouros
Quando uma classe 'Sistema de Partculas' inicializada, ela deve comear a criar
partculas para comear a executar a animao na tela, para isso ela faz duas coisas: Instancia
vrias vezes a classe 'Partcula' e calcula valores iniciais para os atributos das partculas.
Essas so as duas atividades que a classe Sistema de Partculas faz quando cria uma
partcula, e nesse trabalho seguido o modelo que Reeves(1983) descreve em seu artigo:
1. As partculas so inicializadas dentro de um nascedouro.
2. Valores iniciais so calculados por meio de processos estocsticos.
A presente seo ir explicar como fazer as partculas nascerem dentro dos
nascedouros, enquanto a prxima seo ir explicar os processos estocsticos.
Por nascedouro, entende-se como a rea dentro das coordenadas cartesianas em que
uma partcula pode nascer. Um nascedouro pode, teoricamente, possuir qualquer forma, pode
ser um cubo, um crculo ou at um ponto. Reeves(1983) diz que um sistema de partculas
possui uma rea de nascimento que define uma regio a respeito de sua origem onde novas
partculas so aleatoriamente colocadas, e ele tambm diz que reas de nascimento mais
complicadas e baseadas nas leis da natureza ou em atratores caticos no tem sido
implementados, apenas imaginados.
Ou seja, no trabalho que ele estava fazendo (o filme: Star Trekk 2), Reeves diz que
outras formas de gerao (nascedouros) foram imaginadas mas no implementadas, isso
indica que o programador do sistema pode implementar qualquer nascedouro que lhe convier,
sendo assim, nesse trabalho esta implementado os seguintes nascedouros:
52
O primeiro nascedouro o mais simples, todas as partculas que forem sendo criadas
no sistema, iro ter suas posies iniciais com o mesmo valor que o ponto de gerao, a
visualizao desse tipo de nascimento ficaria o seguinte:
53
3.2.1.1.2 Segundo nascedouro: Plano
(10)
(11)
54
3.2.1.1.3 Terceiro nascedouro: Disco
O disco segue o mesmo padro que o plano (todas as partculas nascem em pontos que
estejam dentro do disco), mas a frmula usada diferente, segundo o site da Wolfram
MathWorld, para gerar pontos aleatoriamente distribudos dentro de um disco, sendo 'r' o raio
do disco, '' um ngulo aleatrio entre 0 e 2, usa-se:
dist = NumAleatorio0, r
(12)
x=distcos
(13)
z =distsin
(14)
Vrios efeitos podem surgir usando o disco como nascedouro, dentre eles podemos
citar a de uma fonte em forma de crculo por exemplo, em que as partculas de gua so
expelidas para fora. Cheque a figura a seguir para visualizar as partculas nascendo dentro de
um disco.
55
3.2.1.1.4 Quarta frma: Cubo
(15)
(16)
(17)
56
3.2.1.2 Calculando valores iniciais usando processos estocsticos
Aps ter definido como que a criao e a inicializao das posies das partculas ser
feito, passa-se ento para os prximos atributos das partculas que ainda no foram
inicializadas. E a maneira com que isso feito pode variar muito dependendo do programador
e seus objetivos. No caso desse trabalho, o objetivo nesse caso implementar o clculo dos
valores dos atributos das partculas seguindo a maneira com que Reeves(1983) implementou
no seu artigo, por isso, ser usado processos estocsticos para atribuir os valores iniciais.
Lemons(2002) diz que uma varivel aleatria quando ela, em determinadas
condies, exibe valores diferentes e que a evoluo no tempo dessa varivel chamada de
processo estocstico.
Reeves(1983) usa esses processos para dar aleatoriedade para as partculas, para que
no fique muito esttico a animao, e que esses processos podem ser usados em qualquer
atributo que desejar, assim como os mesmos podem ser usados para permitir um certo
controle na animao. O controle se d atravs da manipulao das variveis dos processos
estocsticos, ou seja, por meio da manipulao das variveis do processo, pode-se controlar os
valores dos atributos das partculas que so regidos por esses processos. Sendo assim, as
prximas sees explicaro como funciona esses processos para o controle da quantidade de
partculas geradas no sistema, e como aplic-los aos atributos das partculas como cor,
transparncia, etc.
3.2.1.2.1 Utilizando processos estocsticos para controlar a quantidade de
partculas geradas no sistema
57
Por exemplo: O usurio diz que quer um sistema com 10.000 partculas e que todas
elas estejam na tela em 5 segundos aproximadamente, supondo que o programa rode em 60
frames por segundo, a cada frame o sistema deve gerar no mnimo 33 partculas, mas como o
processo estocstico possui um elemento aleatrio em seu meio, a requisio do usurio no
ser executado de forma exata e esse efeito, justamente o que d vida ao Sistema de
Partculas, deixando-o imprevisvel. O usurio ento pode variar os parmetros do processo
para criar outros efeitos.
O processo estocstico usado por Reeves(1983) tem o seguinte aspecto:
58
3.2.1.2.2 Utilizando processos estocsticos para calcular valores iniciais para
os atributos das partculas
59
Todas essas atividades aqui descritas podem ser implementadas na classe 'Sistema de
Partculas' com os mtodos criaParticula() e inicializaParticula(), usando os atributos da classe
'Partcula' para guardar os valores gerados.
Depois de definido a maneira como as partculas sero criadas e inicializadas, agora
deve-se passar para o prximo passo da atualizao de um sistema de partculas: A
movimentao das partculas e suas regras.
A segunda lei de Newton, introduzido na seo 2.2.4 desse trabalho, define que a soma
das foras externas a um objeto se d pela seguinte frmula:
F =ma
(18)
60
F x =ma x
(19)
F y =ma y
(20)
F z =ma z
(21)
Fx
m
(22)
a y=
Fy
m
(23)
a z=
Fz
m
(24)
Figura 22: As foras podem agir em cada eixo separadamente, sem depender
um do outro.
Essas equaes apenas tornam a acelerao a incgnita da segunda lei de Newton, j
que no sistema a fora calculada por equaes j conhecidas, nas quais esse trabalho ir
apresentar as que foram usadas para a implementao do sistema de partculas proposto.
Conhecendo pois, a acelerao da partcula num dado instante, a velocidade pode ser
61
calculada. Como a acelerao a taxa de variao da velocidade segundo o tempo, a equao
que representa essa mudana expressa por meio da derivativa da velocidade em relao ao
tempo:
dv
dt
a=
(25)
dv x
dt
(26)
a y=
dv y
dt
(27)
a z=
dv z
dt
(28)
As ltimas variveis que devem ser achadas, depois de ter achado as velocidades em
cada eixo, so as posies x, y e z da partcula. Sabe-se que a velocidade taxa de variao da
posio segundo o tempo, logo permitido representar a velocidade como sendo a derivativa
da posio em relao ao tempo, sendo 's' a localizao da partcula no espao:
v=
ds
dt
(29)
v x=
dx
dt
(30)
v y=
dy
dt
(31)
v z=
dz
dt
(32)
62
Basicamente, as relaes entre posio, velocidade, fora e acelerao so essas,
calculada uma delas, a fora em primeiro lugar, torna possvel saber o valor das outras e no
fim, renderizar as partculas na posio certa num determinado tempo na animao, e esses
clculos acontecem para cada eixo no sistema de coordenadas, ou seja, em cada eixo
calculado as foras, velocidades, aceleraes e as posies, tudo isso para simplificao do
sistema.
Mas ainda falta saber como resolver essas equaes diferenciais e como fazer a
ligao entre elas, e isso acontece por meio de um resolvedor de equaes diferenciais
ordinrias chamado Runge-Kutta, escolhido pelo autor por causa de sua performance e
preciso.
3.2.2.2 Preparando as equaes diferenciais para o mtodo de Runge-Kutta
Percebe-se
nitidamente
que
equaes
diferenciais
ordinrias
so
usadas
frequentemente para o clculo dos atributos responsveis pela movimentao das partculas,
Palmer(2005) diz que quando essas equaes so simples, deve-se apenas integr-las para
chegar numa soluo do tipo forma fechada, nas quais so muitas vezes so simples
equaes algbricas e esse tipo soluo , muitas vezes, fcil de se achar se a fora que atua
no sistema constante, caso contrrio, uma soluo do tipo forma fechada no possvel e
a equao diferencial deve ser resolvida numericamente.
No presente trabalho, as foras que podem atuar no sistema so muitas e vo depender
muita exclusivamente da criatividade e vontade do programador de implementar mais foras,
por esse motivo, ser usado o mtodo de Runge-Kutta para resolver todas as equaes
diferenciais ordinrias independentemente se h uma soluo algbrica para elas ou no.
O mtodo de Runge-Kutta foi feito para achar aproximaes numricas para equaes
diferenciais ordinrias de primeira ordem, para isso, deve-se fazer com que todas as equaes
passadas para o mtodo sejam dessa ordem. Uma equao diferencial ordinria considerada
de primeira ordem quando ela possui uma varivel dependente e o grau da maior derivada 1.
Percebe-se que a acelerao a derivada de grau 2 da posio, como se v na
demonstrao abaixo:
63
a=
dv
dt
(33)
v=
ds
dt
(34)
a=
d ds
dt dt
(35)
a=
d 2s
dt 2
(36)
Logo:
(37)
d x
dx
= kx
2
dt
dt
(38)
(39)
dx
=v x
dt
(40)
64
Assim, a classe Runge-Kutta dever resolver essas duas equaes simultaneamente
para que o resultado seja conhecido. O esquema a seguir mostra o que deve ser feito quando
uma nova fora for colocada no sistema:
1. Defina qual fora ser implementada no sistema e conhea a sua equao, exemplo:
gravidade, resistncia do vento, lei de Hook (fsica de molas), etc.
2. Calcule todas as foras j presentes e some-as, obtendo um valor que represente todas
foras somadas.
3. Aplique a segunda lei de Newton, obtendo a acelerao e passe para o mtodo de
Runge-Kutta fazer os clculos em cada iterao utilizando o tempo, devolvendo os
resultados para a classe responsvel, para que a mesma faa uso desses resultados.
3.2.2.3 Modelando as classes EDO e Runge-Kutta
Percebe-se que h trs grandes passos a serem feitos para modelar um efeito fsico:
1. Preparar as equaes responsveis por oferecer o valor da fora e somar todas elas.
2. Preparar as equaes diferenciais ordinrias para que todas fiquem de primeira ordem.
3. Passar as equaes para o mtodo de Runge-Kutta, que devolver resultados a cada
iterao da animao, ou seja, em cada frame.
Sendo assim, percebe-se uma grande necessidade de haver uma classe para as
equaes diferenciais e uma classe para o mtodo de Runge-Kutta, e que a classe para as
equaes deve, no representar uma equao apenas, mas vrias delas.
Sendo assim, a classe 'EDO' (Equaes diferenciais ordinrias) dever representar
todas as equaes utilizadas no sistema e a classe Runge-Kutta dever conter apenas o mtodo
que ir receber um objeto 'EDO' como parmetro e o intervalo de tempo da animao que se
passou, e tambm devolver os resultados.
A classe 'EDO' possuir os seguintes atributos:
Um vetor para todas as variveis dependentes das EDO's que iro ser calculadas.
65
E os seguintes mtodos:
retornaValorEDOs()
A classe 'EDO' ser abstrata, assim como o seu nico mtodo, ou seja, para que uma
equao diferencial seja implementada, uma subclasse dever ser feita, implementando o
mtodo retornaValorEDOs(). O nico mtodo da classe 'EDO' retorna o lado direito das
equaes diferenciais para que o mtodo Runge-Kutta possa fazer seus clculos. Em UML a
classe ficaria assim:
Depois de modelado as duas classes que iro ser responsveis pela dinmica das
partculas, devemos mostrar agora como que ficaria na prtica, a execuo do sistema agora
que foi definido como ser feito a movimentao das partculas. A figura 25 mostra a
atualizao do sistema, incluindo a parte de movimento das partculas:
66
As foras esto presentes no nosso dia-a-dia e Newton percebia isso, tanto que ele at
estudou muitas delas e fez equaes que as representassem. Hoje essas equaes podem ser
usadas para fazer simulaes em computadores, imitando os movimentos dos objetos no
mundo real. Esse trabalho trata de objetos chamados partculas e que tambm sofrem a
influncia das foras da natureza como a gravidade, por isso, ser mostrado agora quais so as
67
foras que foram implementadas no sistema de partculas proposto pelo autor e tambm ser
dado alguns exemplos de outras foras que podem ser implementadas futuramente.
Witkin(2001), em sua implementao de um sistema de partculas dividiu as foras em
trs grupos:
Foras n-rias: Foras que agem em n partculas ao mesmo tempo. (Lei de Hook)
Foras de alcance espacial: Foras que agem num determinado pedao do espao,
apenas as partculas que passam por ali que sofrem o efeito dessa fora. (Atrao
magntica)
Nesse trabalho foram implementados algumas foras dentre esses trs grupos, dentre
elas cita-se: gravidade, resistncia do ar, lei de Hook e gravidade local (a fora da gravidade
que influenciam as partculas somente se elas estiverem em algum local). Ser mostrado agora
quais foram as frmulas usadas para cada uma delas. Depois disso, a parte de movimentao
das partculas estar terminado e ser passado para a parte de renderizao das partculas, que
ser o ltimo tpico do trabalho sendo que logo aps ser mostrado os resultados e a
concluso.
3.2.2.4.1 Gravidade
F=
G m 1 m2
d2
(41)
Com essa frmula, possvel fazer simulaes com o sistema de partculas utilizando
a gravidade de qualquer planeta ou corpo astral cuja massa seja conhecida pela cincia,
produzindo efeitos bem interessantes.
68
3.2.2.4.2 Resistncia do ar
A resistncia do ar uma fora que resiste ao movimento das partculas, assim como
uma fora que atua em qualquer tipo de fluido, embora se esteja tratando do ar aqui. A
frmula usada a seguinte: Sendo 'k' uma constante definida pelo usurio e 'v' a velocidade da
partcula:
F =kv
(42)
A constante k ser inicialmente definido como 0,9 nesse trabalho. O sistema pode
muito bem variar essa constante para simular o movimento das partculas em outros fluidos e
ambientes.
3.2.2.4.3 Lei de Hook
(43)
F b=F a
(44)
'Fa' e 'Fb' indicam as foras sobre duas partculas, sendo que a fora que atua na
segunda partcula o oposto que atua na primeira, com esse tipo de fora agindo observa-se
um efeito bem interessante sobre as partculas, e mais: com esse efeito, possvel modelar
vrios objetos (como cubos e esferas) colocando vrias molas conectando todas as partculas,
fazendo com que esses objetos sejam deformveis.
69
3.2.2.4.4 Gravidade Local
70
71
Para fazer com que o sistema de partculas tenha esse efeito, as partculas devem ser
esticadas e borradas, dando a impresso que elas esto em alta velocidade e quando se
quer fazer um efeito esse, renderizar as partculas como linhas algo quase obrigatrio. Veja
nas figuras 281 e 292 como fica um sistema de partculas com e sem efeito de motion blur:
Outra maneira de alterar as aparncias das partculas usar texturas para representar as
partculas. Texturas so imagens que podem ser acopladas em objetos tridimensionais ou
bidimensionais, As figuras 303 e 314 mostram a diferena entre usar texturas para renderizar as
1
2
3
4
http://ccl.northwestern.edu/netlogo/models/ParticleSystemWaterfall
http://www.rogue-development.com/blog2/2008/02/pulse-particles-bitmapdata/
http://people.csail.mit.edu/acornejo/images/particle.png
http://images.digitalmedianet.com/2004/Week_18/61cryrjp/story/16a.jpg
72
partculas e no usar. Vrios efeitos interessantes podem sair da, sendo que a maioria dos
sistemas de partculas profissionais usam to somente texturas para a renderizao das
partculas.
Renderizar as partculas como objetos inteiros, como cubos, esferas, casas, cabeas,
etc.
As figuras 321 e 332 abaixo so bons exemplos do que se pode fazer renderizando as partculas
de outro modo:
1 http://www.borisfx.com/images/fx/particleSystem.jpg
2 http://www.blendermagz.com/2009/05/06/blender-3d-tutorial-fur-particles/
73
4 Resultados
4.1 Mostrando o software em geral
O resultado um software feito em Java e JOGL (Java OpenGL, uma biblioteca que
faz a ligao do java com o openGL). As animaes so feitas utilizando a fsica mostrada
aqui e a renderizao feita com openGL. As figuras a seguir mostram o software executando
alguns de seus efeitos:
74
componente da interface e o que cada um faz.
A figura 35 abaixo mostra as partculas sendo influenciadas pela gravidade no eixo x,
e tambm percebe-se que elas esto com cores diferentes, algumas so amarelas e outras so
verdes, enquanto aquelas na ponta so pretas, isso ocorre porque as partculas pretas so as
partculas antigas enquanto as novas j esto nascendo com as cores definidas pelo usurio na
interface, o usurio diz para as novas partculas nascerem mesclando verde e amarelo.
75
A figura 37 mostra as partculas tendo como nascedouro um disco de raio 121, a seguir
aplicado as foras da lei de Hook nos trs eixos, o resultado uma exploso em forma de
disco, se fosse possvel ver animao, o leitor veria as partculas sendo expelidas e atradas
pelo centro, indo at uma distncia e depois retornando.
76
A figura 38 mostra as partculas nascendo dentro de um cubo, e as partculas comeam
sem uma velocidade inicial, ou seja, elas nascem paradas e no em movimento, permitindo
visualizar a verdadeira forma do nascedouro.
77
78
4.2.1.1 Configurando a gravidade
79
4.2.1.3 Configurando a lei de Hook
Na interface para a configurao das foras da lei de Hook, o usurio poder desativar
a fora em cada eixo se quiser e ativ-las quando quiser, os dois deslizadores permitem
configurar as duas constantes que influenciam no valor da fora da lei de Hook: '', que est
representado como 'Mu' e simboliza o coeficiente de amortecimento e 'K' que simboliza o
coeficiente de elasticidade. O usurio poder variar esses valores para ver qual a reao das
partculas. Quando no quiser que a lei de Hook atue em um determinado eixo, basta desativla na caixa de seleo correspondente.
E por fim pode-se configurar a gravidade local, a nica diferena entre a interface da
gravidade local e da gravidade que o usurio deve escolher onde a gravidade local ir atuar,
se no eixo x do lado negativo ou positivo, se no eixo y negativo ou positivo ou se no eixo z
positivo ou negativo, ou em todos eles, o usurio que decide, basta clicar nos botes do lado
direito dos deslizadores, o resto o mesmo mecanismo que a configurao da gravidade.
80
O software produzido pelo autor permite que seja alterado as velocidades iniciais das
partculas que nascem no sistema, a figura 45 ilustra essa parte da interface, assim como a
parte das foras, basta apenas deslizar as setas do primeiro deslizador para a esquerda, caso
queira valor negativo, ou para a direita, caso queira valor positivo. O porqu de haver dois
deslizadores para cada atributo se deve ao fato de que o software segue os processos
estocsticos descritos nesse trabalho, o primeiro deslizador o valor mnimo que o atributo
deve possuir enquanto o segundo deslizador a taxa de variao desse valor, para lembrar,
isso se deve ao fato da seguinte frmula:
o valor de taxVarAtributo, assim, como nesse caso agora, a velocidade num dado eixo ser o
resultado da frmula acima, e esses valores sero indicados pelo usurio ao mover as setas
dos deslizadores. Assim o usurio poder configurar cada velocidade em cada eixo, quanto
mais ele puxar o segundo deslizador de cada velocidade, mais aleatrio ser a velocidade das
partculas naquele eixo, caso queira uma velocidade fixa, basta zerar o segundo deslizador e
mexer apenas no primeiro.
81
4.2.2.2 Configurando o ngulo inicial, massa e tempo de vida das partculas
Na outra aba, onde est escrito Outras propriedades fsicas, se encontra o ngulo
inicial, a massa e o tempo de vida das partculas, sendo que aqui no h nada de novo a ser
explicado, porque essa parte da interface segue o mesmo padro que a velocidade inicial:
Todos esses atributos usam processos estocsticos para definir seus valores, por isso que h
dois deslizadores para cada um. O tempo de vida das partculas contado em frames, logo
quando o usurio coloca a seta em 3000, ele est querendo dizer que as partculas que
nascerem tero 3000 frames de vida, passado esse tempo as partculas renascero.
Figura 46: Interface de configurao do ngulo, massa e tempo de vida das partculas
A cor inicial e final das partculas pode ser mudada na aba Aparncia das partculas
e logo em seguida na aba Cor inicial ou Cor final. O software segue o padro RGB (Red,
Green, Blue), que consiste em formar todas as cores a partir do vermelho, verde e azul. O
usurio poder configurar a quantidade dessas cores para conseguir a cor que quiser, todas as
partculas que estiverem nascendo estaro com a cor inicial e quando perto de sua morte,
estaro com a cor final estabelecida. As figuras 47 e 48 mostra as partes da interface que
cuidam disso.
82
Nas abas Tamanho e Alpha o usurio pode configurar o tamanho das partculas e
colocar transparncia nelas, o tamanho aqui se refere ao tamanho do ponto que representa as
partculas e o canal alpha pode ser ligado ou desligado, caso ligado as partculas iro ficando
transparentes com o passar do tempo. As figuras 49 e 50 mostram a interface responsvel por
essa parte.
83
84
5 CONCLUSO
O nmero de efeitos que possvel conseguir com um sistema de partculas muito
grande, pois o presente trabalho mostrou apenas o bsico que se pode fazer com um sistema
desse, muitos cientistas e pesquisadores da rea de computao grfica estenderam o sistema,
tornando possvel outros efeitos que William Reeves no previu em seu artigo.
Dentre esses trabalhos, pode-se citar Bell(2005) que usou sistemas de partculas para
animar materiais granulares como areia, Venetillo(2007) implementou um sistema de
partculas completamente na GPU (unidade de processamento grfico, a placa de vdeo)
tornando possvel a coliso entre as partculas.
Esse sistema possui uma dificuldade mdia de implementao, esforo requerido,
mas o resultado realmente compensa todo o trabalho. Caso haja expanses, o sistema pode ser
includo em outros sistemas grficos a fim de contribuir para a cena.
Futuramente, o autor pretende estender o sistema para que suporte coliso com objetos
na cena, como exemplo, colocando uma esfera no meio da cena enquanto as partculas
colidem contra ela, o uso de outras aparncias para as partculas como o uso de polgonos
inteiros representando cada partcula e usar processamento paralelo para a renderizao de
muitas partculas.
O sistema pode ser estendido, o que seria uma limitao nesse caso o tempo para
fazer tudo isso, porque requereria muito esforo para implementar.
85
6 REFERNCIAS BIBLIOGRFICAS
BELL, Nathan, YU, Yizhou, MUCHA, Peter J. Particle-Based Simulation of Granular
Materials, SIGGRAPH, Julho 2005, p. 77 86.
BOURG M., David. Physics for Game Developers, Sebastopol: O'REILLY, 2002, First
Edition
DALMAU, Daniel Snchez-Crespo, Core Techniques and Algorithms, EUA: New Riders
Publishing, 2004.
LANDER, Jeff. The Ocean Spray in Your Face, San Francisco: Game Developer Magazine,
Julho 1998.
LEMONS, Don Stephen. An introduction to stochastic processes in physics, EUA: The
Johns Hopkins University Press, 2002.
MILLINGTON, Ian. Game Physics Engine Development, EUA: Morgan Kaufmann
Publishers, 2007.
PALMER, Grant. Physics for Game Programmers, EUA: Apress, 2005.
PARENT, Rick. Computer Animation, San Francisco: Morgan Kaufmann Publishers, 2002.
POKKUNURI, Bhanu. Object Oriented Programming, SIGPLAN Notices, 1989, Volume
24, p. 96 101.
PRESS H., William, et al. Numerical Recipes The Art of Scientific Computing, New York:
Cambridge University Press, 2007, Third Edition.
REEVES, William. Particle Systems: A technique for Modeling a Class of Fuzzy Objects.
SIGGRAPH 83, Julho 1983, p. 359-376.
86
WITKIN, Andrew. Physically Based Modeling, SIGGRAPH 2001 Course Notes, 2001.