GPUParticlesCollisionSDF3D

Наследует: GPUParticlesCollision3D < VisualInstance3D < Node3D < Node < Object

Запеченная знаковая форма столкновения частиц в трехмерном поле расстояний, влияющая на узлы GPUParticles3D.

Описание

Запеченная форма столкновения частиц со знаком поля расстояний 3D, влияющая на узлы GPUParticles3D.

Знаковые поля расстояний (SDF) позволяют эффективно представлять приблизительные формы столкновений для выпуклых и вогнутых объектов любой формы. Это более гибко, чем GPUParticlesCollisionHeightField3D, но требует этапа запекания.

Запекание: Текстуру поля расстояний со знаком можно запечь, выбрав узел GPUParticlesCollisionSDF3D в редакторе, а затем нажав Запечь SDF в верхней части 3D-окна просмотра. Любые видимые MeshInstance3D в пределах size будут учитываться при запекании, независимо от их GeometryInstance3D.gi_mode.

Примечание: Запекание texture GPUParticlesCollisionSDF3D возможно только в редакторе, так как нет метода запекания, доступного для использования в экспортированных проектах. Однако все еще возможно загружать предварительно запеченные Texture3D в его свойство texture в экспортированном проекте.

Примечание: ParticleProcessMaterial.collision_mode должен быть ParticleProcessMaterial.COLLISION_RIGID или ParticleProcessMaterial.COLLISION_HIDE_ON_CONTACT в материале процесса GPUParticles3D, чтобы столкновение работало.

Примечание: Столкновение частиц влияет только на GPUParticles3D, а не на CPUParticles3D.

Свойства

int

bake_mask

4294967295

Resolution

resolution

2

Vector3

size

Vector3(2, 2, 2)

Texture3D

texture

float

thickness

1.0

Методы

bool

get_bake_mask_value(layer_number: int) const

void

set_bake_mask_value(layer_number: int, value: bool)


Перечисления

enum Resolution: 🔗

Resolution RESOLUTION_16 = 0

Запекаем поле расстояний со знаком 16×16×16. Это самый быстрый вариант, но и наименее точный.

Resolution RESOLUTION_32 = 1

Запекаем поле расстояний со знаком 32×32×32.

Resolution RESOLUTION_64 = 2

Запекаем знаковое поле расстояний размером 64×64×64.

Resolution RESOLUTION_128 = 3

Запекаем поле расстояний со знаком 128×128×128.

Resolution RESOLUTION_256 = 4

Запекаем знаковое поле расстояний размером 256×256×256.

Resolution RESOLUTION_512 = 5

Выпекаем поле расстояний со знаком 512×512×512. Это самый медленный вариант, но и самый точный.

Resolution RESOLUTION_MAX = 6

Представляет размер перечисления Resolution.


Описания свойств

int bake_mask = 4294967295 🔗

  • void set_bake_mask(value: int)

  • int get_bake_mask()

Визуальные слои, которые следует учитывать при запекании SDF столкновения частиц. Только MeshInstance3D, чьи VisualInstance3D.layers соответствуют этому bake_mask, будут включены в сгенерированный SDF столкновения частиц. По умолчанию все объекты учитываются при запекании SDF столкновения частиц.


Resolution resolution = 2 🔗

Разрешение запекания, используемое для поля расстояния со знаком texture. Текстуру необходимо запечь снова, чтобы изменения свойства resolution вступили в силу. Более высокие разрешения имеют большую стоимость производительности и требуют больше времени для запекания. Более высокие разрешения также приводят к более крупным запеченным текстурам, что приводит к увеличению требований к VRAM и пространству хранения. Чтобы улучшить производительность и сократить время запекания, используйте наименьшее возможное разрешение для объекта столкновения которое вы представляете.


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

Размер SDF столкновения в 3D-единицах. Для улучшения качества SDF size следует установить как можно меньше, при этом охватывая нужные вам части сцены.


Texture3D texture 🔗

Трехмерная текстура, представляющая поле расстояний со знаком.


float thickness = 1.0 🔗

  • void set_thickness(value: float)

  • float get_thickness()

Толщина формы столкновения. В отличие от других коллайдеров частиц, GPUParticlesCollisionSDF3D на самом деле полый внутри. thickness можно увеличить, чтобы предотвратить туннелирование частиц через форму столкновения на высоких скоростях или при перемещении GPUParticlesCollisionSDF3D.


Описания метода

bool get_bake_mask_value(layer_number: int) const 🔗

Возвращает, включен ли указанный слой bake_mask, учитывая layer_number от 1 до 32.


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

На основе value включает или отключает указанный слой в bake_mask, учитывая layer_number от 1 до 32.