Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

Sistemas de partículas 2D

Introdução

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 e similares.

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

A Godot fornece dois nós diferentes para partículas 2D, GPUParticles2D e CPUParticles2D. O GPUParticles2D é mais avançado e usa a GPU para processar efeitos de partículas. O CPUParticles2D é uma opção movida pela CPU com paridade de recursos quase idêntica ao GPUParticles2D, mas com menor desempenho ao usar grandes quantidades de partículas. Por outro lado, o CPUParticles2D pode ter um desempenho melhor em sistemas de baixo custo ou em situações de gargalo de GPU.

Enquanto o GPUParticles2D é configurado por meio de um ParticleProcessMaterial (e, opcionalmente, com um sombreador personalizado), as opções correspondentes são fornecidas por meio de propriedades de nó em CPUParticles2D (com exceção das configurações de trilha).

Daqui para frente, não há planos para adicionar novos recursos ao CPUParticles2D, embora pull requests que adicionem funcionalidades já presentes no GPUParticles2D sejam aceitas. Por esse motivo, recomendamos o uso de GPUParticles2D, a menos que você tenha um motivo específico para não utilizá-lo.

Você pode converter um nó CPUParticles2D em um nó GPUParticles2D clicando no nó na árvore da cena, selecionando o espaço de trabalho 2D e selecionando CPUParticles2D > Converter para GPUParticles2D na barra de ferramentas.

../../_images/particles_convert.webp

Também é possível converter um nó GPUParticles2D em um nó CPUParticles2D, mas pode haver problemas se você usar recursos somente de GPU.

O restante deste tutorial utilizará o nó GPUParticles2D. Primeiro, adicione um nó GPUParticles2D à sua cena. Após criá-lo, você perceberá que apenas um ponto branco foi criado e que há um ícone de aviso ao lado do nó GPUParticles2D no painel da cena. Isso ocorre porque o nó precisa de um ParticleProcessMaterial para funcionar.

ParticleProcessMaterial (Material do Processo de Partículas)

Para adicionar um material de processamento ao seu nó de partículas, vá até Process Material no painel Inspector. Clique na caixa ao lado de Material e, no menu suspenso, selecione New ParticleProcessMaterial.

../../_images/particles_material.webp

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

../../_images/particles1.png

Textura

Um sistema de partículas pode usar uma única textura ou um flipbook de animação. Um flipbook é uma textura que contém vários quadros de animação que podem ser reproduzidos ou escolhidos aleatoriamente durante a emissão. Isso é equivalente a um spritesheet para partículas.

A textura é definida por meio da propriedade Textura:

../../_images/particles2.webp

Usando um flipbook de animação

Os flipbooks de partículas são adequados para reproduzir efeitos complexos, como fumaça, fogo e explosões. Eles também podem ser usados para introduzir variações aleatórias de textura, fazendo com que cada partícula use uma textura diferente. Você pode encontrar imagens existentes de flipbooks de partículas on-line ou pré-renderizá-las usando ferramentas externas, como o Blender ou o EmberGen.

Exemplo de um sistema de partículas que usa uma textura de flipbook

Exemplo de um sistema de partículas que usa uma textura de flipbook

O uso de um flipbook de animação requer configuração adicional em comparação com uma única textura. Para fins de demonstração, usaremos essa textura com 5 colunas e 7 linhas (clique com o botão direito do mouse e escolha Salvar como...):

Exemplo de textura de flipbook para partículas

Créditos: JoesAlotofthings (CC BY 4.0)

Para usar um flipbook de animação, é necessário criar um novo CanvasItemMaterial na seção Material do nó GPUParticles2D (ou CPUParticles2D):

Criando um CanvasItemMaterial na parte inferior do Inspetor de nós de partículas

Criando um CanvasItemMaterial na parte inferior do Inspetor de nós de partículas

Neste CanvasItemMaterial, habilite Animação de Partículas e defina Quadros H e Quadros V para o número de colunas e linhas presentes na textura do seu flipbook:

Configurando o CanvasItemMaterial para a textura do flipbook de exemplo

Configurando o CanvasItemMaterial para a textura do flipbook de exemplo

Uma vez feito isso, a seção "Animação" em ParticleProcessMaterial (para GPUParticles2D) ou no Inspetor do CPUParticles2D será efetivada.

Dica

Se a sua textura flipbook tiver um fundo preto em vez de um fundo transparente, você também precisará definir o modo de mesclagem como Adicionar em vez de Misturar para exibição correta. Alternativamente, você pode modificar a textura para ter um fundo transparente em um editor de imagem. No GIMP, isso pode ser feito usando o menu Cor > Cor para Alfa.

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 habilitado, um nó GPUParticles2D emitirá todas as suas partículas uma única 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.

Nota

Godot 4.3 atualmente não oferece suporte à interpolação de física para partículas 2D. Como solução alternativa, desative a interpolação de física para o nó de partículas definindo Nó > Interpolação de Física > Modo na parte inferior do Inspetor.

Delta Fractal

Definir Fract Delta como true resulta em um cálculo de delta fracionário, proporcionando um efeito visual mais suave para as partículas. Essa suavidade aumentada vem de uma maior precisão. A diferença é mais perceptível em sistemas com alta aleatoriedade ou partículas em movimento rápido. Isso ajuda a manter a consistência visual do sistema de partículas, garantindo que o movimento de cada partícula esteja alinhado com sua vida útil real. Sem isso, as partículas podem parecer pular ou se mover mais do que deveriam em um único quadro se forem emitidas em um ponto intermediário do quadro. A maior precisão tem um custo de desempenho, especialmente em sistemas com uma quantidade maior de partículas.

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 o Godot gerar automaticamente um Retângulo de Visibilidade usando a barra de ferramentas acima da visualização 2D. Para isso, selecione o nó GPUParticles2D e clique em Particles > Generate Visibility Rect. O Godot simulará a emissão de partículas pelo nó Particles2D durante alguns segundos e ajustará o retângulo para abranger a área ocupada pelas partículas.

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á desativada. Isso significa que o espaço para onde as partículas são emitidas é global e não relativo ao nó. Se o nó for movido, as partículas existentes não se movem com ele:

../../_images/paranim21.gif

Se habilitado, as partículas serão emitidas em espaço local, o que significa que, se o nó for movido, as partículas já emitidas também serão afetadas:

../../_images/paranim20.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 do Material de Processamento de Partículas

Para obter informações sobre as configurações no ParticleProcessMaterial, consulte esta página.