Files
godot-docs-l10n/classes/ru/class_gpuparticlescollisionsdf3d.rst

262 lines
16 KiB
ReStructuredText
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

: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 (Нет возвращаемого значения.)`