mirror of
https://github.com/godotengine/godot-docs-l10n.git
synced 2025-12-31 09:49:22 +03:00
262 lines
16 KiB
ReStructuredText
262 lines
16 KiB
ReStructuredText
:github_url: hide
|
||
|
||
.. _class_GPUParticlesCollisionSDF3D:
|
||
|
||
GPUParticlesCollisionSDF3D
|
||
==========================
|
||
|
||
**Наследует:** :ref:`GPUParticlesCollision3D<class_GPUParticlesCollision3D>` **<** :ref:`VisualInstance3D<class_VisualInstance3D>` **<** :ref:`Node3D<class_Node3D>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
|
||
|
||
Запеченная знаковая форма столкновения частиц в трехмерном поле расстояний, влияющая на узлы :ref:`GPUParticles3D<class_GPUParticles3D>`.
|
||
|
||
.. rst-class:: classref-introduction-group
|
||
|
||
Описание
|
||
----------------
|
||
|
||
Запеченная форма столкновения частиц со знаком поля расстояний 3D, влияющая на узлы :ref:`GPUParticles3D<class_GPUParticles3D>`.
|
||
|
||
Знаковые поля расстояний (SDF) позволяют эффективно представлять приблизительные формы столкновений для выпуклых и вогнутых объектов любой формы. Это более гибко, чем :ref:`GPUParticlesCollisionHeightField3D<class_GPUParticlesCollisionHeightField3D>`, но требует этапа запекания.
|
||
|
||
\ **Запекание:** Текстуру поля расстояний со знаком можно запечь, выбрав узел **GPUParticlesCollisionSDF3D** в редакторе, а затем нажав **Запечь SDF** в верхней части 3D-окна просмотра. Любые *видимые* :ref:`MeshInstance3D<class_MeshInstance3D>` в пределах :ref:`size<class_GPUParticlesCollisionSDF3D_property_size>` будут учитываться при запекании, независимо от их :ref:`GeometryInstance3D.gi_mode<class_GeometryInstance3D_property_gi_mode>`.
|
||
|
||
\ **Примечание:** Запекание :ref:`texture<class_GPUParticlesCollisionSDF3D_property_texture>` **GPUParticlesCollisionSDF3D** возможно только в редакторе, так как нет метода запекания, доступного для использования в экспортированных проектах. Однако все еще возможно загружать предварительно запеченные :ref:`Texture3D<class_Texture3D>` в его свойство :ref:`texture<class_GPUParticlesCollisionSDF3D_property_texture>` в экспортированном проекте.
|
||
|
||
\ **Примечание:** :ref:`ParticleProcessMaterial.collision_mode<class_ParticleProcessMaterial_property_collision_mode>` должен быть :ref:`ParticleProcessMaterial.COLLISION_RIGID<class_ParticleProcessMaterial_constant_COLLISION_RIGID>` или :ref:`ParticleProcessMaterial.COLLISION_HIDE_ON_CONTACT<class_ParticleProcessMaterial_constant_COLLISION_HIDE_ON_CONTACT>` в материале процесса :ref:`GPUParticles3D<class_GPUParticles3D>`, чтобы столкновение работало.
|
||
|
||
\ **Примечание:** Столкновение частиц влияет только на :ref:`GPUParticles3D<class_GPUParticles3D>`, а не на :ref:`CPUParticles3D<class_CPUParticles3D>`.
|
||
|
||
.. rst-class:: classref-reftable-group
|
||
|
||
Свойства
|
||
----------------
|
||
|
||
.. table::
|
||
:widths: auto
|
||
|
||
+---------------------------------------------------------------+-------------------------------------------------------------------------+----------------------+
|
||
| :ref:`int<class_int>` | :ref:`bake_mask<class_GPUParticlesCollisionSDF3D_property_bake_mask>` | ``4294967295`` |
|
||
+---------------------------------------------------------------+-------------------------------------------------------------------------+----------------------+
|
||
| :ref:`Resolution<enum_GPUParticlesCollisionSDF3D_Resolution>` | :ref:`resolution<class_GPUParticlesCollisionSDF3D_property_resolution>` | ``2`` |
|
||
+---------------------------------------------------------------+-------------------------------------------------------------------------+----------------------+
|
||
| :ref:`Vector3<class_Vector3>` | :ref:`size<class_GPUParticlesCollisionSDF3D_property_size>` | ``Vector3(2, 2, 2)`` |
|
||
+---------------------------------------------------------------+-------------------------------------------------------------------------+----------------------+
|
||
| :ref:`Texture3D<class_Texture3D>` | :ref:`texture<class_GPUParticlesCollisionSDF3D_property_texture>` | |
|
||
+---------------------------------------------------------------+-------------------------------------------------------------------------+----------------------+
|
||
| :ref:`float<class_float>` | :ref:`thickness<class_GPUParticlesCollisionSDF3D_property_thickness>` | ``1.0`` |
|
||
+---------------------------------------------------------------+-------------------------------------------------------------------------+----------------------+
|
||
|
||
.. rst-class:: classref-reftable-group
|
||
|
||
Методы
|
||
------------
|
||
|
||
.. table::
|
||
:widths: auto
|
||
|
||
+-------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`bool<class_bool>` | :ref:`get_bake_mask_value<class_GPUParticlesCollisionSDF3D_method_get_bake_mask_value>`\ (\ layer_number\: :ref:`int<class_int>`\ ) |const| |
|
||
+-------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| |void| | :ref:`set_bake_mask_value<class_GPUParticlesCollisionSDF3D_method_set_bake_mask_value>`\ (\ layer_number\: :ref:`int<class_int>`, value\: :ref:`bool<class_bool>`\ ) |
|
||
+-------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
|
||
.. rst-class:: classref-section-separator
|
||
|
||
----
|
||
|
||
.. rst-class:: classref-descriptions-group
|
||
|
||
Перечисления
|
||
------------------------
|
||
|
||
.. _enum_GPUParticlesCollisionSDF3D_Resolution:
|
||
|
||
.. rst-class:: classref-enumeration
|
||
|
||
enum **Resolution**: :ref:`🔗<enum_GPUParticlesCollisionSDF3D_Resolution>`
|
||
|
||
.. _class_GPUParticlesCollisionSDF3D_constant_RESOLUTION_16:
|
||
|
||
.. rst-class:: classref-enumeration-constant
|
||
|
||
:ref:`Resolution<enum_GPUParticlesCollisionSDF3D_Resolution>` **RESOLUTION_16** = ``0``
|
||
|
||
Запекаем поле расстояний со знаком 16×16×16. Это самый быстрый вариант, но и наименее точный.
|
||
|
||
.. _class_GPUParticlesCollisionSDF3D_constant_RESOLUTION_32:
|
||
|
||
.. rst-class:: classref-enumeration-constant
|
||
|
||
:ref:`Resolution<enum_GPUParticlesCollisionSDF3D_Resolution>` **RESOLUTION_32** = ``1``
|
||
|
||
Запекаем поле расстояний со знаком 32×32×32.
|
||
|
||
.. _class_GPUParticlesCollisionSDF3D_constant_RESOLUTION_64:
|
||
|
||
.. rst-class:: classref-enumeration-constant
|
||
|
||
:ref:`Resolution<enum_GPUParticlesCollisionSDF3D_Resolution>` **RESOLUTION_64** = ``2``
|
||
|
||
Запекаем знаковое поле расстояний размером 64×64×64.
|
||
|
||
.. _class_GPUParticlesCollisionSDF3D_constant_RESOLUTION_128:
|
||
|
||
.. rst-class:: classref-enumeration-constant
|
||
|
||
:ref:`Resolution<enum_GPUParticlesCollisionSDF3D_Resolution>` **RESOLUTION_128** = ``3``
|
||
|
||
Запекаем поле расстояний со знаком 128×128×128.
|
||
|
||
.. _class_GPUParticlesCollisionSDF3D_constant_RESOLUTION_256:
|
||
|
||
.. rst-class:: classref-enumeration-constant
|
||
|
||
:ref:`Resolution<enum_GPUParticlesCollisionSDF3D_Resolution>` **RESOLUTION_256** = ``4``
|
||
|
||
Запекаем знаковое поле расстояний размером 256×256×256.
|
||
|
||
.. _class_GPUParticlesCollisionSDF3D_constant_RESOLUTION_512:
|
||
|
||
.. rst-class:: classref-enumeration-constant
|
||
|
||
:ref:`Resolution<enum_GPUParticlesCollisionSDF3D_Resolution>` **RESOLUTION_512** = ``5``
|
||
|
||
Выпекаем поле расстояний со знаком 512×512×512. Это самый медленный вариант, но и самый точный.
|
||
|
||
.. _class_GPUParticlesCollisionSDF3D_constant_RESOLUTION_MAX:
|
||
|
||
.. rst-class:: classref-enumeration-constant
|
||
|
||
:ref:`Resolution<enum_GPUParticlesCollisionSDF3D_Resolution>` **RESOLUTION_MAX** = ``6``
|
||
|
||
Представляет размер перечисления :ref:`Resolution<enum_GPUParticlesCollisionSDF3D_Resolution>`.
|
||
|
||
.. rst-class:: classref-section-separator
|
||
|
||
----
|
||
|
||
.. rst-class:: classref-descriptions-group
|
||
|
||
Описания свойств
|
||
--------------------------------
|
||
|
||
.. _class_GPUParticlesCollisionSDF3D_property_bake_mask:
|
||
|
||
.. rst-class:: classref-property
|
||
|
||
:ref:`int<class_int>` **bake_mask** = ``4294967295`` :ref:`🔗<class_GPUParticlesCollisionSDF3D_property_bake_mask>`
|
||
|
||
.. rst-class:: classref-property-setget
|
||
|
||
- |void| **set_bake_mask**\ (\ value\: :ref:`int<class_int>`\ )
|
||
- :ref:`int<class_int>` **get_bake_mask**\ (\ )
|
||
|
||
Визуальные слои, которые следует учитывать при запекании SDF столкновения частиц. Только :ref:`MeshInstance3D<class_MeshInstance3D>`, чьи :ref:`VisualInstance3D.layers<class_VisualInstance3D_property_layers>` соответствуют этому :ref:`bake_mask<class_GPUParticlesCollisionSDF3D_property_bake_mask>`, будут включены в сгенерированный SDF столкновения частиц. По умолчанию все объекты учитываются при запекании SDF столкновения частиц.
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_GPUParticlesCollisionSDF3D_property_resolution:
|
||
|
||
.. rst-class:: classref-property
|
||
|
||
:ref:`Resolution<enum_GPUParticlesCollisionSDF3D_Resolution>` **resolution** = ``2`` :ref:`🔗<class_GPUParticlesCollisionSDF3D_property_resolution>`
|
||
|
||
.. rst-class:: classref-property-setget
|
||
|
||
- |void| **set_resolution**\ (\ value\: :ref:`Resolution<enum_GPUParticlesCollisionSDF3D_Resolution>`\ )
|
||
- :ref:`Resolution<enum_GPUParticlesCollisionSDF3D_Resolution>` **get_resolution**\ (\ )
|
||
|
||
Разрешение запекания, используемое для поля расстояния со знаком :ref:`texture<class_GPUParticlesCollisionSDF3D_property_texture>`. Текстуру необходимо запечь снова, чтобы изменения свойства :ref:`resolution<class_GPUParticlesCollisionSDF3D_property_resolution>` вступили в силу. Более высокие разрешения имеют большую стоимость производительности и требуют больше времени для запекания. Более высокие разрешения также приводят к более крупным запеченным текстурам, что приводит к увеличению требований к VRAM и пространству хранения. Чтобы улучшить производительность и сократить время запекания, используйте наименьшее возможное разрешение для объекта столкновения которое вы представляете.
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_GPUParticlesCollisionSDF3D_property_size:
|
||
|
||
.. rst-class:: classref-property
|
||
|
||
:ref:`Vector3<class_Vector3>` **size** = ``Vector3(2, 2, 2)`` :ref:`🔗<class_GPUParticlesCollisionSDF3D_property_size>`
|
||
|
||
.. rst-class:: classref-property-setget
|
||
|
||
- |void| **set_size**\ (\ value\: :ref:`Vector3<class_Vector3>`\ )
|
||
- :ref:`Vector3<class_Vector3>` **get_size**\ (\ )
|
||
|
||
Размер SDF столкновения в 3D-единицах. Для улучшения качества SDF :ref:`size<class_GPUParticlesCollisionSDF3D_property_size>` следует установить как можно меньше, при этом охватывая нужные вам части сцены.
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_GPUParticlesCollisionSDF3D_property_texture:
|
||
|
||
.. rst-class:: classref-property
|
||
|
||
:ref:`Texture3D<class_Texture3D>` **texture** :ref:`🔗<class_GPUParticlesCollisionSDF3D_property_texture>`
|
||
|
||
.. rst-class:: classref-property-setget
|
||
|
||
- |void| **set_texture**\ (\ value\: :ref:`Texture3D<class_Texture3D>`\ )
|
||
- :ref:`Texture3D<class_Texture3D>` **get_texture**\ (\ )
|
||
|
||
Трехмерная текстура, представляющая поле расстояний со знаком.
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_GPUParticlesCollisionSDF3D_property_thickness:
|
||
|
||
.. rst-class:: classref-property
|
||
|
||
:ref:`float<class_float>` **thickness** = ``1.0`` :ref:`🔗<class_GPUParticlesCollisionSDF3D_property_thickness>`
|
||
|
||
.. rst-class:: classref-property-setget
|
||
|
||
- |void| **set_thickness**\ (\ value\: :ref:`float<class_float>`\ )
|
||
- :ref:`float<class_float>` **get_thickness**\ (\ )
|
||
|
||
Толщина формы столкновения. В отличие от других коллайдеров частиц, **GPUParticlesCollisionSDF3D** на самом деле полый внутри. :ref:`thickness<class_GPUParticlesCollisionSDF3D_property_thickness>` можно увеличить, чтобы предотвратить туннелирование частиц через форму столкновения на высоких скоростях или при перемещении **GPUParticlesCollisionSDF3D**.
|
||
|
||
.. rst-class:: classref-section-separator
|
||
|
||
----
|
||
|
||
.. rst-class:: classref-descriptions-group
|
||
|
||
Описания метода
|
||
------------------------------
|
||
|
||
.. _class_GPUParticlesCollisionSDF3D_method_get_bake_mask_value:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`bool<class_bool>` **get_bake_mask_value**\ (\ layer_number\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_GPUParticlesCollisionSDF3D_method_get_bake_mask_value>`
|
||
|
||
Возвращает, включен ли указанный слой :ref:`bake_mask<class_GPUParticlesCollisionSDF3D_property_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<class_int>`, value\: :ref:`bool<class_bool>`\ ) :ref:`🔗<class_GPUParticlesCollisionSDF3D_method_set_bake_mask_value>`
|
||
|
||
На основе ``value`` включает или отключает указанный слой в :ref:`bake_mask<class_GPUParticlesCollisionSDF3D_property_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 (Нет возвращаемого значения.)`
|