Sistemas de partículas (2D)

Introdução

Um sistema de partículas simples (mas flexível o suficiente para a maioria dos usos) é fornecido. Os sistemas de partículas são usados para simular efeitos físicos complexos, como faíscas, fogo, partículas mágicas, fumaça, névoa, etc.

A ideia é que uma "partícula" seja emitida em um intervalo fixo e com um tempo de vida fixo. Durante sua vida útil, cada partícula terá o mesmo comportamento de base. O que torna cada partícula diferente do resto e proporciona uma aparência mais orgânica é a "aleatoriedade" associada a cada parâmetro. Em essência, criar um sistema de partículas significa definir parâmetros físicos básicos e, em seguida, adicionar aleatoriedade a eles.

Nós de partículas

Godot fornece dois nós diferentes para partículas 2D, Particles2D e CPUParticles2D. O Particles2D é mais avançado e usa a GPU para processar efeitos de partículas, mas isso o limita à API gráfica de alta potência e, em nosso caso, ao renderizador GLES3. Para projetos que usam o back-end GLES2, o CPUParticles2D é uma opção baseada em CPU com quase paridade de recursos com o Particles2D, mas com desempenho inferior. Enquanto Particles2D é configurado por meio de um ParticlesMaterial (e opcionalmente com um shader personalizado), as opções de correspondência são fornecidas por meio de propriedades de nó em CPUParticles2D (com exceção das configurações de trilha). Você pode converter um nó Particles2D em um nó CPUParticles2D clicando no nó no inspetor e selecionando "Converter para CPUParticles2D" no menu "Particles" da barra de ferramentas.

../../_images/particles_convert.png

O restante deste tutorial usará o nó Particles2D. Primeiro, adicione um nó Particles2D à sua cena. Depois de criar esse nó, você notará que apenas um ponto branco foi criado e que há um ícone de aviso ao lado do nó Particles2D no painel da cena. Isso ocorre porque o nó precisa de um ParticlesMaterial para funcionar.

ParticlesMaterial

Para adicionar um material de processo ao seu nó de partículas, vá para Process Material no painel do inspetor. Clique na caixa ao lado de Material, e no menu suspenso selecione New ParticlesMaterial.

../../_images/particles_material.png

Seu nó Particles2D agora deve estar emitindo pontos brancos para baixo.

../../_images/particles1.png

Textura

Um sistema de partículas usa uma única textura (no futuro isso pode ser estendido para texturas animadas via spritesheet). A textura é definida por meio da propriedade de textura relevante:

../../_images/particles2.png

Parâmetros de tempo

Tempo de Duração

O tempo em segundos em que cada partícula permanecerá viva. Quando a vida útil termina, uma nova partícula é criada para substituí-la.

Tempo de vida: 0.5

../../_images/paranim14.gif

Tempo de vida: 4.0

../../_images/paranim15.gif

Disparo Único

Quando ativado, um nó Particles2D emitirá todas as suas partículas uma vez e nunca mais.

Pré processamento

Os sistemas de partículas começam com zero partículas emitidas, depois começam a emitir. Isso pode ser um inconveniente ao carregar uma cena e sistemas como uma tocha, névoa, etc. começar a emitir só no momento em que entrar. O pré-processamento é usado para permitir que o sistema processe um determinado número de segundos antes de ser realmente desenhado pela primeira vez.

Escalonamento da Velocidade

A escala de velocidade tem um valor padrão de 1 e é usada para ajustar a velocidade de um sistema de partículas. Diminuir o valor tornará as partículas mais lentas, enquanto aumentar o valor tornará as partículas muito mais rápidas.

Explosividade

Se o tempo de vida for 1 e houver 10 partículas, isso significa que uma partícula será emitida a cada 0,1 segundos. O parâmetro de explosividade altera isso e força as partículas a serem emitidas todas juntas. Os intervalos são:

  • 0: Emite partículas em intervalos regulares (valor padrão).

  • 1: Emite todas as partículas simultaneamente.

Valores no meio também são permitidos. Esse recurso é útil para criar explosões ou explosões repentinas de partículas:

../../_images/paranim18.gif

Aleatoriedade

Todos os parâmetros físicos podem ser randomizados. Os valores aleatórios variam de 0 a 1. A fórmula para randomizar um parâmetro é:

initial_value = param_value + param_value * randomness

FPS Fixado

Essa configuração pode ser usada para definir o sistema de partículas para renderizar em um FPS fixo. Por exemplo, alterar o valor para 2 fará com que as partículas sejam renderizadas a 2 quadros por segundo. Observe que isso não desacelera o próprio sistema de partículas.

Delta Fractal

Isso pode ser usado para ativar ou desativar o Fract Delta.

Parâmetros de desenho

Visibility Rect (Retângulo de Visibilidade)

O retângulo de visibilidade controla a visibilidade das partículas na tela. Se esse retângulo estiver fora da janela de exibição, o mecanismo não renderizará as partículas na tela.

As propriedades W e H do retângulo controlam respectivamente sua Largura e sua Altura. As propriedades X e Y controlam a posição do canto superior esquerdo do retângulo, em relação ao emissor de partículas.

Você pode fazer com que Godot gere um Visibility Rect automaticamente usando a barra de ferramentas acima da visualização 2D. Para isso, selecione o nó Particles2D e clique em Particles > Generate Visibility Rect. Godot simulará o nó Particles2D emitindo partículas por alguns segundos e definirá o retângulo para caber na superfície que as partículas assumem.

Você pode controlar a duração da emissão com a opção Tempo de geração (seg). O valor máximo é de 25 segundos. Se você precisar de mais tempo para suas partículas se moverem, você pode alterar temporariamente a duração do pré-processamento no nó Particles2D.

Coordenadas Locais

Por padrão, esta opção está ativada e significa que o espaço para o qual as partículas são emitidas é relativo ao nó. Se o nó for movido, todas as partículas são movidas com ele:

../../_images/paranim20.gif

Se desativado, as partículas serão emitidas para o espaço global, o que significa que, se o nó for movido, as partículas já emitidas não serão afetadas:

../../_images/paranim21.gif

Ordem de Desenho

Isso controla a ordem na qual as partículas individuais são desenhadas. Índice significa que as partículas são desenhadas de acordo com sua ordem de emissão (padrão). Lifetime significa que eles são desenhados em ordem de vida restante.

Configurações de ParticlesMaterial

Direção

Esta é a direção básica na qual as partículas emitem. O padrão é Vector3(1, 0, 0) que faz com que as partículas emitam para a direita. No entanto, com as configurações de gravidade padrão, as partículas irão direto para baixo.

../../_images/direction1.png

Para que essa propriedade seja perceptível, você precisa de uma velocidade inicial maior que 0. Aqui, definimos a velocidade inicial como 40. Você notará que as partículas emitem para a direita e depois descem devido à gravidade.

../../_images/direction2.png

Espalhar

Este parâmetro é o ângulo em graus que será adicionado aleatoriamente em qualquer direção à base Direction. Uma propagação de 180 emitirá em todas as direções (+/- 180). Para que o spread faça qualquer coisa, o parâmetro "Initial Velocity" deve ser maior que 0.

../../_images/paranim3.gif

Planicidade

Esta propriedade só é útil para partículas 3D.

Gravidade

A gravidade aplicada a todas as partículas.

../../_images/paranim7.gif

Velocidade Inicial

Velocidade inicial é a velocidade na qual as partículas serão emitidas (em pixels/seg). A velocidade pode mais tarde ser modificada pela gravidade ou outras acelerações (conforme descrito mais adiante).

../../_images/paranim4.gif

Velocidade Angular

A velocidade angular é a velocidade angular inicial aplicada às partículas.

Spin Velocity (Velocidade de Giro)

A velocidade de rotação é a velocidade na qual as partículas giram em torno de seu centro (em graus/seg).

../../_images/paranim5.gif

Velocidade Orbital

A velocidade da órbita é usada para fazer as partículas girarem em torno de seu centro.

../../_images/paranim6.gif

Aceleração Linear

A aceleração linear aplicada a cada partícula.

Aceleração Radial

Se esta aceleração for positiva, as partículas são aceleradas para longe do centro. Se negativo, eles são absorvidos por ele.

../../_images/paranim8.gif

Aceleração Tangencial

Essa aceleração usará o vetor tangente ao centro. Combinando com aceleração radial pode fazer bons efeitos.

../../_images/paranim9.gif

Amortecimento

Damping aplica fricção às partículas, forçando-as a parar. É especialmente útil para faíscas ou explosões, que geralmente começam com uma alta velocidade linear e param quando desaparecem.

../../_images/paranim10.gif

Ângulo

Determina o ângulo inicial da partícula (em graus). Este parâmetro é principalmente útil randomizado.

../../_images/paranim11.gif

Escala

Determina a escala inicial das partículas.

../../_images/paranim12.gif

Cor

Usado para alterar a cor das partículas que estão sendo emitidas.

Hue variation (Variaciação de tom)

O valor Variation define a variação de tom inicial aplicada a cada partícula. O valor Variation Random controla a taxa de aleatoriedade da variação de tom.

Formas de Emissão

ParticlesMaterials permite definir uma máscara de emissão, que determina a área e a direção em que as partículas são emitidas. Estes podem ser gerados a partir de texturas em seu projeto.

Certifique-se de que um ParticlesMaterial esteja definido e o nó Particles2D esteja selecionado. Um menu "Partículas" deve aparecer na barra de ferramentas:

../../_images/emission_shapes1.png

Abra-a e selecione "Load Emission Mask" (Carregar Máscara de Emissões):

../../_images/emission_shapes2.png

Em seguida, selecione qual textura você deseja usar como sua máscara:

../../_images/emission_shapes3.png

Uma caixa de diálogo com várias configurações aparecerá.

Máscara de Emissão

Três tipos de máscaras de emissão podem ser gerados a partir de uma textura:

  • Pixels Sólidos: Partículas surgirão de qualquer área da textura, excluindo áreas transparentes.

../../_images/emission_mask_solid.gif
  • Pixels da borda: as partículas serão geradas nas bordas externas da textura.

../../_images/emission_mask_border.gif
  • Pixels de borda direcionados: semelhantes aos pixels de borda, mas adicionam informações extras à máscara para dar às partículas a capacidade de emitir para longe das bordas. Observe que uma velocidade inicial precisará ser definida para utilizar isso.

../../_images/emission_mask_directed_border.gif

Cores de Emissão

Capture from Pixel fará com que as partículas herdem a cor da máscara em seus pontos de geração.

Depois de clicar em "OK", a máscara será gerada e definida para o ParticlesMaterial, na seção Emission Shape:

../../_images/emission_shapes4.png

Todos os valores nesta seção foram gerados automaticamente pelo menu "Load Emission Mask", portanto, geralmente não de deve mexer em nada.

Nota

Uma imagem não deve ser adicionada a Point Texture ou Color Texture diretamente. O menu "Load Emission Mask" deve ser sempre utilizado em seu lugar.