Se você está vendo esta mensagem, significa que estamos tendo problemas para carregar recursos externos em nosso website.

If you're behind a web filter, please make sure that the domains *.kastatic.org and *.kasandbox.org are unblocked.

Conteúdo principal

Introdução a sistemas de partículas

Em 1982, WIlliam T. Reeves, um pesquisador da Lucasfilm Ltd., estava trabalhando no filme Jornada nas Estrelas II: A ira de Khan. Grande parte do filme gira em torno do Dispositivo Gênesis, um torpedo que, ao ser atirado em um planeta estéril e sem vida, tem a capacidade de reorganizar a matéria e criar um mundo habitável para colonização. Durante a sequência, um parede de fogo ondula sobre o planeta enquanto ele está sendo "terraformado".
Invólucro do vídeo da Khan Academy
O termo sistema de partículas, uma técnica incrivelmente comum e útil em computação gráfica, foi cunhado na criação desse efeito em particular.
“Um sistema de partículas é uma coleção de muitas minúsculas partículas que, juntas, representam um objeto difuso. Ao longo de um período de tempo, as partículas são geradas num sistema, se movimentam e interagem dentro dele, e morrem." —William Reeves, "Particle Systems—A Technique for Modeling a Class of Fuzzy Objects," ACM Transactions on Graphics 2:2 (April 1983), 92.
Desde o início dos anos 80, sistemas de partículas têm sido usados em inúmeros jogos de video game, animações, obras de arte digitais e montagens para representar vários tipos irregulares de fenômenos naturais, como fogo, fumaça, cachoeiras, neblina, grama, bolhas, e muitos outros.
Essa seção será dedicada a olhar para as estratégias de implementação para programar um sistema de partículas. Como organizamos o nosso código? Onde guardamos as informações relacionadas às partículas individuais contra as informações relacionadas ao sistema como um todo? Os exemplos que iremos observar irão focar na gestão dos dados associados ao sistema de partículas. Eles usarão formas simples para as partículas e aplicarão somente os comportamentos mais básicos (como a gravidade). Entretanto, ao usar essa estrutura e construir maneiras mais interessantes de renderizar as partículas e calcular os comportamentos, você pode alcançar diversos efeitos.
Como a citação descrita acima, um sistema de partículas é uma coleção de objetos simples. Já lidamos com a programação de coleções de objetos antes - como conjuntos de Movers que simulam bolas quicando. Mas para sistemas de partículas, nossas coleções são mais complexas. As coleções variam em tamanho: às vezes haverá zero partículas, às vezes dez, às vezes dez mil. As coleções terão propriedades e comportamentos próprios, não serão apenas feitos de partículas. Nosso objetivo é sermos capazes de escrever um programa que se pareça com isto:
var ps = new ParticleSystem();

draw = function() {
    background(255, 255, 255);
    ps.run();
};
Nenhuma partícula específica é mencionada nesse código, no entanto, o resultado será lotado de partículas por toda a tela. Vamos criar programas com vários tipos de objetos, e objetos que monitoram outras coleções de objetos, o que nos ajudará a criar sistemas de partículas poderosos, mas também nos preparam para escrever programas mais poderosos em geral.
Para descobrir como programar sistemas de partículas, nós usaremos duas técnicas avançadas de programação orientadas a objetos: herança e polimorfismo. Com os exemplos que vimos até agora, nós sempre tivemos uma variedade de objetos de tipo único como "movers" ou "oscillators." Com herança (e polimorfismo), aprenderemos uma maneira conveniente de armazenar um único array que contenha objetos de tipos diferentes. Dessa forma, um sistema de partículas não precisa ser um sistema com apenas um mesmo tipo de partícula.
Nesta seção, iremos observar os usos mais comuns dos sistemas de partículas, mas o fato das partículas neste capítulo se parecerem ou se comportarem de uma certa maneira não deve limitar sua imaginação. Só por que tais sistemas de partículas tendem a ser brilhantes, voar para a frente e cair com a gravidade, não significa que essas são as características que o seu sistema deve ter. O foco aqui é realmente apenas como monitorar um sistema com vários elementos. O que tais elementos fazem e como esses elementos se parecem fica a seu critério.

Quer participar da conversa?

Você entende inglês? Clique aqui para ver mais debates na versão em inglês do site da Khan Academy.