Atratores de partículas 3D
Os atratores de partículas são nós que aplicam uma força a todas as partículas dentro do seu alcance. Eles puxam as partículas para mais perto ou as empurram para longe com base na direção dessa força. Existem três tipos de attractors: GPUParticlesAttractorBox3D, GPUParticlesAttractorSphere3D e GPUParticlesAttractorVectorField3D. Você pode instanciá-los em tempo de execução e alterar suas propriedades a partir do código de gameplay; também pode animá-los e combiná-los para criar efeitos de atração complexos.
Nota
Atratores de partículas ainda não foram implementados para sistemas de partículas 2D.
A primeira coisa que você precisa fazer se quiser usar atratores é habilitar a propriedade Attractor Interaction no ParticleProcessMaterial. Faça isso para cada sistema de partículas que precise reagir a atratores . Como a maioria das propriedades no Godot, você também pode alterar isso em tempo de execução.
Common properties
Common attractor properties
Existem algumas propriedades que você pode encontrar em todos os atratores. Elas estão localizadas na seção GPUParticlesAttractor3D no inspetor.
Strength controla a intensidade da força do atrator. Um valor positivo puxa as partículas para mais perto do centro do atrator, enquanto um valor negativo as afasta.
Attenuation controla a queda de intensidade dentro da região de influência do atrator. Todo atrator de partículas possui um limite. Sua força é mais fraca na borda desse limite e mais forte em seu centro. Partículas fora do limite não são afetadas pelo atrator. A curva de atenuação controla como a intensidade diminui ao longo dessa distância. Uma linha reta significa que a força é proporcional à distância: se uma partícula estiver no meio do caminho entre a borda e o centro, a intensidade do atrator será metade do valor no centro. Diferentes formas de curva alteram a velocidade com que as partículas aceleram em direção ao atrator.
Variações de aumento de força: constantemente ao longo da distância até o atrator (esquerda), rápido na borda e lentamente no centro (meio), lentamente na borda e rapidamente no centro (direita).
A propriedade Directionality altera a direção para a qual as partículas são puxadas. Com o valor 0.0, não há direcionalidade, o que significa que as partículas são puxadas para o centro do atrator. Com 1.0, o atrator é totalmente direcional, o que significa que as partículas serão puxadas ao longo do eixo local -Z do atrator. Você pode mudar a direção global girando o atrator. Se o valor de Strength for negativo, as partículas serão puxadas ao longo do eixo +Z.
Nenhuma direcionalidade (esquerda) vs. direcionalidade total (direita). Observe como as partículas se movem ao longo do eixo Z local do atrator.
A propriedade Cull Mask controla quais sistemas de partículas são afetados por um atrator com base nas camadas de visibilidade de cada sistema. Um sistema de partículas só é afetado por um atrator se pelo menos uma das camadas de visibilidade do sistema estiver habilitada na cull mask do atrator.
Box attractors
Atrator Box na lista de nós
Os box attractors têm uma região de influência em forma de caixa. Você controla seu tamanho com a propriedade Extents. As dimensões da caixa sempre medem metade dos lados de seus limites, portanto um valor de (X=1.0,Y=1.0,Z=1.0) cria uma caixa com uma região de influência de 2 metros de largura em cada lado.
Para criar um box attractor, adicione um novo nó filho à sua cena e selecione GPUParticlesAttractorBox3D na lista de nós disponíveis. Você pode animar a posição da caixa ou anexá-la a um nó em movimento para obter efeitos mais dinâmicos.
Um box attractor com um valor negativo de força divide um campo de partículas conforme se move através dele.
Sphere attractors
Sphere attractor in the node list
Os sphere attractors têm uma região de influência esférica. Você controla seu tamanho com a propriedade Radius. Enquanto os box attractors não precisam ser cubos perfeitos, os sphere attractors serão sempre esferas: não é possível definir a largura independentemente da altura. Se você quiser usar um sphere attractor para formas alongadas, precisará alterar sua Scale na seção Node3D do attractor.
Para criar um sphere attractor, adicione um novo nó filho à sua cena e selecione GPUParticlesAttractorSphere3D na lista de nós disponíveis. Você pode animar a posição da esfera ou anexá-la a um nó em movimento para obter efeitos mais dinâmicos.
Um sphere attractor com um valor negativo de força divide um campo de partículas conforme se move através dele.
Vector field attractors
Attractor de campo vetorial na lista de nós
Um campo vetorial é uma área 3D que contém vetores posicionados em uma grade. A densidade da grade controla quantos vetores existem e quão espaçados eles estão. Cada vetor em um campo vetorial aponta em uma direção específica. Isso pode ser completamente aleatório ou alinhado de forma a formar padrões e caminhos distintos.
Quando as partículas interagem com um campo vetorial, sua direção de movimento muda para coincidir com o vetor mais próximo no campo. À medida que uma partícula se aproxima do próximo vetor no campo, ela muda de direção para coincidir com a direção desse vetor. A velocidade da partícula depende do comprimento do vetor.
Assim como os box attractors, os attractors de campo vetorial têm uma região de influência em forma de caixa. Você controla seu tamanho com a propriedade Extents, onde um valor de (X=1.0,Y=1.0,Z=1.0) cria uma caixa com uma região de influência de 2 metros de largura em cada lado. A propriedade Texture recebe uma Textura 3D onde cada pixel representa um vetor, com a cor do pixel interpretada como a direção e o tamanho do vetor.
Nota
Quando uma textura é usada como um campo vetorial, existem dois tipos de conversão dos quais você precisa estar ciente:
As coordenadas da textura mapeiam-se para os limites do attractor. A imagem abaixo mostra qual parte da textura corresponde a qual parte do volume do campo vetorial. Por exemplo, a metade inferior da textura afeta a metade superior do attractor de campo vetorial porque
+Yaponta para baixo no espaço UV da textura, mas para cima no espaço do mundo do Godot.Os valores das cores dos pixels são mapeados para vetores de direção no espaço. A imagem abaixo fornece uma visão geral. Como as partículas podem se mover em duas direções ao longo de cada eixo, a metade inferior da faixa de cores representa valores de direção negativos, enquanto a metade superior representa valores positivos. Assim, um pixel amarelo
(R=1,G=1,B=0)é mapeado para o vetor(X=1,Y=1,Z=-1), enquanto um cinza neutro(R=0.5,G=0.5,B=0.5)resulta em nenhum movimento.
Para criar um attractor de campo vetorial, adicione um novo nó filho à sua cena e selecione GPUParticlesAttractorVectorField3D na lista de nós disponíveis. Você pode animar a posição do attractor ou anexá-lo a um nó em movimento para obter efeitos mais dinâmicos.
Dica
Se você não tiver ferramentas externas para criar texturas de campo vetorial, pode usar uma NoiseTexture3D com um Color Ramp anexado como textura de campo vetorial. O Color Ramp pode ser modificado para ajustar quanto cada coordenada é afetada pelo campo vetorial.
Dois sistemas de partículas são afetados pelo mesmo attractor de campo vetorial. Clique aqui para baixar a textura 3D.