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.

GPUParticlesCollisionSDF3D

Успадковує: GPUParticlesCollision3D < VisualInstance3D < Node3D < Node < Object

Запечений підписаний дистанційний поле 3D форма зіткнення, що впливає на 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

Bake a 16×16×16 підписаний поле відстані. Це найшвидший варіант, але і найменш точний.

Resolution RESOLUTION_32 = 1

Bake a 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, чия u.layers матч з цим bake_mask буде включений в сформований зіткнення частинок SDF. За замовчуванням всі об'єкти враховуються для випікання частинок SDF.


Resolution resolution = 2 🔗

Випікаєте дозвіл на використання для підписаного поля відстані texture. Текстура повинна бути запечена ще раз для зміни майна resolution. Вищі дозволи мають більш високу вартість виконання і приймають більше часу на випікання. Більшість дозволів також призводить до збільшення пряженої текстури, що призводить до збільшення вимог VRAM і простору зберігання. Щоб поліпшити продуктивність і зменшити час випікання, скористайтеся найнижчою роздільною здатністю, можливою для об'єкта, який ви представляєте зіткнення.


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

  • void set_size(value: Vector3)

  • Vector3 get_size()

Розмір SDF в 3D блоках. Для поліпшення якості SDF, розмір size слід встановити якомога меншим за умови покриття деталей сцени вам потрібно.


Texture3D texture 🔗

  • void set_texture(value: Texture3D)

  • Texture3D get_texture()

3D текстура, що представляє собою підписане поле відстані.


float thickness = 1.0 🔗

  • void set_thickness(value: float)

  • float get_thickness()

Товщина форми зіткнення. На відміну від інших комірок частинок, GPUParticlesCollisionSDF3D фактично порожня на внутрішній стороні. thickness може бути збільшена для запобігання частинок з тунелю через форму зіткнення на високих швидкостях, або коли переміщається [ГППППЧ-СхідникиCollisionSDF3D.


Описи методів

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.