GPUParticlesCollisionSDF3D

Hereda: GPUParticlesCollision3D < VisualInstance3D < Node3D < Node < Object

A baked signed distance field 3D particle collision shape affecting GPUParticles3D nodes.

Descripción

A baked signed distance field 3D particle collision shape affecting GPUParticles3D nodes.

Signed distance fields (SDF) allow for efficiently representing approximate collision shapes for convex and concave objects of any shape. This is more flexible than GPUParticlesCollisionHeightField3D, but it requires a baking step.

Baking: The signed distance field texture can be baked by selecting the GPUParticlesCollisionSDF3D node in the editor, then clicking Bake SDF at the top of the 3D viewport. Any visible MeshInstance3Ds within the size will be taken into account for baking, regardless of their GeometryInstance3D.gi_mode.

Note: Baking a GPUParticlesCollisionSDF3D's texture is only possible within the editor, as there is no bake method exposed for use in exported projects. However, it's still possible to load pre-baked Texture3Ds into its texture property in an exported project.

Note: ParticleProcessMaterial.collision_mode must be ParticleProcessMaterial.COLLISION_RIGID or ParticleProcessMaterial.COLLISION_HIDE_ON_CONTACT on the GPUParticles3D's process material for collision to work.

Note: Particle collision only affects GPUParticles3D, not CPUParticles3D.

Propiedades

int

bake_mask

4294967295

Resolution

resolution

2

Vector3

size

Vector3(2, 2, 2)

Texture3D

texture

float

thickness

1.0

Métodos

bool

get_bake_mask_value(layer_number: int) const

void

set_bake_mask_value(layer_number: int, value: bool)


Enumeraciones

enum Resolution: 🔗

Resolution RESOLUTION_16 = 0

Procesa un campo de distancia firmado de 16×16×16. Esta es la opción más rápida, pero también la menos precisa.

Resolution RESOLUTION_32 = 1

Procesa un campo de distancia firmado de 32×32×32.

Resolution RESOLUTION_64 = 2

Procesa un campo de distancia firmado de 64×64×64.

Resolution RESOLUTION_128 = 3

Procesa un campo de distancia firmado de 128×128×128.

Resolution RESOLUTION_256 = 4

Procesa un campo de distancia firmado de 256×256×256.

Resolution RESOLUTION_512 = 5

Procesa un campo de distancia firmado de 512×512×512. Esta es la opción más lenta, pero también la más precisa.

Resolution RESOLUTION_MAX = 6

Representa el tamaño del enum Resolution.


Descripciones de Propiedades

int bake_mask = 4294967295 🔗

  • void set_bake_mask(value: int)

  • int get_bake_mask()

Las capas visuales a tener en cuenta al procesar el SDF de colisión de partículas. Solo los MeshInstance3D cuyo VisualInstance3D.layers coincidan con esta bake_mask se incluirán en el SDF de colisión de partículas generado. Por defecto, todos los objetos se tienen en cuenta para el procesado del SDF de colisión de partículas.


Resolution resolution = 2 🔗

La resolución de procesado a utilizar para el campo de distancia con signo texture. La textura debe ser procesada de nuevo para que los cambios en la propiedad resolution sean efectivos. Las resoluciones más altas tienen un mayor coste de rendimiento y tardan más tiempo en procesarse. Las resoluciones más altas también dan como resultado texturas procesadas más grandes, lo que conlleva un aumento de los requisitos de VRAM y espacio de almacenamiento. Para mejorar el rendimiento y reducir los tiempos de procesado, utiliza la resolución más baja posible para el objeto que estás representando la colisión.


Vector3 size = Vector3(2, 2, 2) 🔗

El tamaño del SDF de colisión en unidades 3D. Para mejorar la calidad del SDF, el size debe establecerse lo más pequeño posible, cubriendo las partes de la escena que necesites.


Texture3D texture 🔗

La textura 3D que representa el campo de distancia con signo.


float thickness = 1.0 🔗

  • void set_thickness(value: float)

  • float get_thickness()

El grosor de la forma de colisión. A diferencia de otros colisionadores de partículas, GPUParticlesCollisionSDF3D es en realidad hueco en su interior. thickness puede aumentarse para evitar que las partículas atraviesen la forma de colisión a altas velocidades, o cuando se mueve el GPUParticlesCollisionSDF3D.


Descripciones de Métodos

bool get_bake_mask_value(layer_number: int) const 🔗

Devuelve si la capa especificada de bake_mask está habilitada, dado un layer_number entre 1 y 32.


void set_bake_mask_value(layer_number: int, value: bool) 🔗

Basado en value, habilita o deshabilita la capa especificada en el bake_mask, dado un layer_number entre 1 y 32.