:github_url: hide .. _class_GPUParticlesCollisionSDF3D: GPUParticlesCollisionSDF3D ========================== **Успадковує:** :ref:`GPUParticlesCollision3D` **<** :ref:`VisualInstance3D` **<** :ref:`Node3D` **<** :ref:`Node` **<** :ref:`Object` Запечений підписаний дистанційний поле 3D форма зіткнення, що впливає на :ref:`GPUParticles3D` вершини. .. rst-class:: classref-introduction-group Опис -------- Запечена форма зіткнення 3D-частинок поля відстані зі знаком, що впливає на вузли :ref:`GPUParticles3D`. Поля відстані зі знаком (SDF) дозволяють ефективно представляти приблизні форми зіткнень для опуклих та увігнутих об'єктів будь-якої форми. Це гнучкіше, ніж :ref:`GPUParticlesCollisionHeightField3D`, але вимагає кроку запікання. \ **Запікання:** Текстуру поля відстані зі знаком можна запекти, вибравши вузол **GPUParticlesCollisionSDF3D** у редакторі, а потім натиснувши **Запікати SDF** у верхній частині 3D-огляду. Будь-які *видимі* :ref:`MeshInstance3D` у межах :ref:`size` будуть враховані для запікання, незалежно від їхнього ``GeometryInstance3D.gi_mode елемента``. \ **Примітка:** Запікання :ref:`texture` **GPUParticlesCollisionSDF3D** можливе лише в редакторі, оскільки немає методу запікання, доступного для використання в експортованих проектах. Однак, все ще можна завантажити попередньо випечені :ref:`Texture3D` у властивість :ref:`texture` в експортованому проєкті. \ **Примітка:** :ref:`ParticleProcessMaterial.collision_mode` має бути :ref:`ParticleProcessMaterial.COLLISION_RIGID` або :ref:`ParticleProcessMaterial.COLLISION_HIDE_ON_CONTACT` у матеріалі процесу :ref:`GPUParticles3D`, щоб колізія працювала. \ **Примітка:** Колізія частинок впливає лише на :ref:`GPUParticles3D`, а не на :ref:`CPUParticles3D`. .. rst-class:: classref-reftable-group Властивості ---------------------- .. table:: :widths: auto +---------------------------------------------------------------+-------------------------------------------------------------------------+----------------------+ | :ref:`int` | :ref:`bake_mask` | ``4294967295`` | +---------------------------------------------------------------+-------------------------------------------------------------------------+----------------------+ | :ref:`Resolution` | :ref:`resolution` | ``2`` | +---------------------------------------------------------------+-------------------------------------------------------------------------+----------------------+ | :ref:`Vector3` | :ref:`size` | ``Vector3(2, 2, 2)`` | +---------------------------------------------------------------+-------------------------------------------------------------------------+----------------------+ | :ref:`Texture3D` | :ref:`texture` | | +---------------------------------------------------------------+-------------------------------------------------------------------------+----------------------+ | :ref:`float` | :ref:`thickness` | ``1.0`` | +---------------------------------------------------------------+-------------------------------------------------------------------------+----------------------+ .. rst-class:: classref-reftable-group Методи ------------ .. table:: :widths: auto +-------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`get_bake_mask_value`\ (\ layer_number\: :ref:`int`\ ) |const| | +-------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`set_bake_mask_value`\ (\ layer_number\: :ref:`int`, value\: :ref:`bool`\ ) | +-------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group Переліки ---------------- .. _enum_GPUParticlesCollisionSDF3D_Resolution: .. rst-class:: classref-enumeration enum **Resolution**: :ref:`🔗` .. _class_GPUParticlesCollisionSDF3D_constant_RESOLUTION_16: .. rst-class:: classref-enumeration-constant :ref:`Resolution` **RESOLUTION_16** = ``0`` Bake a 16×16×16 підписаний поле відстані. Це найшвидший варіант, але і найменш точний. .. _class_GPUParticlesCollisionSDF3D_constant_RESOLUTION_32: .. rst-class:: classref-enumeration-constant :ref:`Resolution` **RESOLUTION_32** = ``1`` Bake a 32×32×32 підписано поле відстані. .. _class_GPUParticlesCollisionSDF3D_constant_RESOLUTION_64: .. rst-class:: classref-enumeration-constant :ref:`Resolution` **RESOLUTION_64** = ``2`` Випікайте поле відстані зі знаком 64×64×64. .. _class_GPUParticlesCollisionSDF3D_constant_RESOLUTION_128: .. rst-class:: classref-enumeration-constant :ref:`Resolution` **RESOLUTION_128** = ``3`` Випікайте поле відстані зі знаком 128×128×128. .. _class_GPUParticlesCollisionSDF3D_constant_RESOLUTION_256: .. rst-class:: classref-enumeration-constant :ref:`Resolution` **RESOLUTION_256** = ``4`` Випікайте поле відстані зі знаком 256×256×256. .. _class_GPUParticlesCollisionSDF3D_constant_RESOLUTION_512: .. rst-class:: classref-enumeration-constant :ref:`Resolution` **RESOLUTION_512** = ``5`` Випікайте поле відстані зі знаком 512×512×512. Це найповільніший, але і найточніший варіант. .. _class_GPUParticlesCollisionSDF3D_constant_RESOLUTION_MAX: .. rst-class:: classref-enumeration-constant :ref:`Resolution` **RESOLUTION_MAX** = ``6`` Представляє розмір переліку :ref:`Resolution`. .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group Описи властивостей ------------------------------------ .. _class_GPUParticlesCollisionSDF3D_property_bake_mask: .. rst-class:: classref-property :ref:`int` **bake_mask** = ``4294967295`` :ref:`🔗` .. rst-class:: classref-property-setget - |void| **set_bake_mask**\ (\ value\: :ref:`int`\ ) - :ref:`int` **get_bake_mask**\ (\ ) Візуальні шари для обліку при випіканні зіткнень SDF. Тільки :ref:`MeshInstance3D`, чия ``u.layers`` матч з цим :ref:`bake_mask` буде включений в сформований зіткнення частинок SDF. За замовчуванням всі об'єкти враховуються для випікання частинок SDF. .. rst-class:: classref-item-separator ---- .. _class_GPUParticlesCollisionSDF3D_property_resolution: .. rst-class:: classref-property :ref:`Resolution` **resolution** = ``2`` :ref:`🔗` .. rst-class:: classref-property-setget - |void| **set_resolution**\ (\ value\: :ref:`Resolution`\ ) - :ref:`Resolution` **get_resolution**\ (\ ) Випікаєте дозвіл на використання для підписаного поля відстані :ref:`texture`. Текстура повинна бути запечена ще раз для зміни майна :ref:`resolution`. Вищі дозволи мають більш високу вартість виконання і приймають більше часу на випікання. Більшість дозволів також призводить до збільшення пряженої текстури, що призводить до збільшення вимог VRAM і простору зберігання. Щоб поліпшити продуктивність і зменшити час випікання, скористайтеся найнижчою роздільною здатністю, можливою для об'єкта, який ви представляєте зіткнення. .. rst-class:: classref-item-separator ---- .. _class_GPUParticlesCollisionSDF3D_property_size: .. rst-class:: classref-property :ref:`Vector3` **size** = ``Vector3(2, 2, 2)`` :ref:`🔗` .. rst-class:: classref-property-setget - |void| **set_size**\ (\ value\: :ref:`Vector3`\ ) - :ref:`Vector3` **get_size**\ (\ ) Розмір SDF в 3D блоках. Для поліпшення якості SDF, розмір :ref:`size` слід встановити якомога меншим за умови покриття деталей сцени вам потрібно. .. rst-class:: classref-item-separator ---- .. _class_GPUParticlesCollisionSDF3D_property_texture: .. rst-class:: classref-property :ref:`Texture3D` **texture** :ref:`🔗` .. rst-class:: classref-property-setget - |void| **set_texture**\ (\ value\: :ref:`Texture3D`\ ) - :ref:`Texture3D` **get_texture**\ (\ ) 3D текстура, що представляє собою підписане поле відстані. .. rst-class:: classref-item-separator ---- .. _class_GPUParticlesCollisionSDF3D_property_thickness: .. rst-class:: classref-property :ref:`float` **thickness** = ``1.0`` :ref:`🔗` .. rst-class:: classref-property-setget - |void| **set_thickness**\ (\ value\: :ref:`float`\ ) - :ref:`float` **get_thickness**\ (\ ) Товщина форми зіткнення. На відміну від інших комірок частинок, **GPUParticlesCollisionSDF3D** фактично порожня на внутрішній стороні. :ref:`thickness` може бути збільшена для запобігання частинок з тунелю через форму зіткнення на високих швидкостях, або коли переміщається [ГППППЧ-СхідникиCollisionSDF3D. .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group Описи методів -------------------------- .. _class_GPUParticlesCollisionSDF3D_method_get_bake_mask_value: .. rst-class:: classref-method :ref:`bool` **get_bake_mask_value**\ (\ layer_number\: :ref:`int`\ ) |const| :ref:`🔗` Повертає, чи увімкнено вказаний шар :ref:`bake_mask`, якщо задано ``layer_number`` значення від 1 до 32. .. rst-class:: classref-item-separator ---- .. _class_GPUParticlesCollisionSDF3D_method_set_bake_mask_value: .. rst-class:: classref-method |void| **set_bake_mask_value**\ (\ layer_number\: :ref:`int`, value\: :ref:`bool`\ ) :ref:`🔗` На основі значення параметра ``value`` вмикає або вимикає вказаний шар у :ref:`bake_mask`, маючи значення параметра ``layer_number`` від 1 до 32. .. |virtual| replace:: :abbr:`virtual (Зазвичай, цей метод перевизначається користувачем, щоб він мав вплив.)` .. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)` .. |const| replace:: :abbr:`const (Цей метод не має побічних ефектів. Не змінює ніяку змінну екземпляра об'єкта.)` .. |vararg| replace:: :abbr:`vararg (Цей метод приймає будь-яке число аргументів після описаних тут.)` .. |constructor| replace:: :abbr:`constructor (Цей метод використовується для побудови типів.)` .. |static| replace:: :abbr:`static (Цей метод не потребує екземпляра для виклику, його можна викликати безпосередньо за допомогою назви класу.)` .. |operator| replace:: :abbr:`operator (Цей метод описує дійсний оператор для взаємодії з цим типом як з лівим операндом.)` .. |bitfield| replace:: :abbr:`BitField (Це значення є цілим числом, складеним у вигляді бітової маски з наступних прапорів.)` .. |void| replace:: :abbr:`void (Значення не повертається.)`