mirror of
https://github.com/godotengine/godot-docs-l10n.git
synced 2026-01-04 10:09:56 +03:00
262 lines
14 KiB
ReStructuredText
262 lines
14 KiB
ReStructuredText
:github_url: hide
|
||
|
||
.. _class_GPUParticlesCollisionSDF3D:
|
||
|
||
GPUParticlesCollisionSDF3D
|
||
==========================
|
||
|
||
**Hérite de :** :ref:`GPUParticlesCollision3D<class_GPUParticlesCollision3D>` **<** :ref:`VisualInstance3D<class_VisualInstance3D>` **<** :ref:`Node3D<class_Node3D>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
|
||
|
||
Une forme de collision de particules 3D de champ de distance signée pré-calculé affectant les nœuds :ref:`GPUParticles3D<class_GPUParticles3D>`.
|
||
|
||
.. rst-class:: classref-introduction-group
|
||
|
||
Description
|
||
-----------
|
||
|
||
Une forme de collision de particules 3D avec un champ de distance signée affectant les nœuds :ref:`GPUParticles3D<class_GPUParticles3D>`.
|
||
|
||
Les champs de distance signées (CDS) permettent de représenter efficacement des formes de collision approximatives pour les objets convexes et concaves de toute forme. Ceci est plus flexible que :ref:`GPUParticlesCollisionHeightField3D<class_GPUParticlesCollisionHeightField3D>`, mais il nécessite une étape de pré-calcul.
|
||
|
||
\ **Pré-calcul :** La texture du champ de distance signée peut être pré-calculée en sélectionnant le nœud **GPUParticlesCollisionSDF3D** dans l'éditeur, puis en cliquant sur **Pré-calculer le CDS** en haut du viewport 3D. Tout :ref:`MeshInstance3D<class_MeshInstance3D>` *visible* dans la taille :ref:`size<class_GPUParticlesCollisionSDF3D_property_size>` sera pris en compte pour le calcul, peu importe leur :ref:`GeometryInstance3D.gi_mode<class_GeometryInstance3D_property_gi_mode>`.
|
||
|
||
\ **Note :** Calculer une :ref:`texture<class_GPUParticlesCollisionSDF3D_property_texture>` d'un **GPUParticlesCollisionSDF3D** n'est possible que dans l'éditeur, car il n'y a pas de méthode de pré-calcul exposée pour les projets exportés. Cependant, il est quand même possible de charger des :ref:`Texture3D<class_Texture3D>` pré-calculées dans sa propriété :ref:`texture<class_GPUParticlesCollisionSDF3D_property_texture>` dans un projet exporté.
|
||
|
||
\ **Note :** :ref:`ParticleProcessMaterial.collision_mode<class_ParticleProcessMaterial_property_collision_mode>` doit valoir :ref:`ParticleProcessMaterial.COLLISION_RIGID<class_ParticleProcessMaterial_constant_COLLISION_RIGID>` ou :ref:`ParticleProcessMaterial.COLLISION_HIDE_ON_CONTACT<class_ParticleProcessMaterial_constant_COLLISION_HIDE_ON_CONTACT>` sur le matériau de traitement du :ref:`GPUParticles3D<class_GPUParticles3D>` pour que la collision fonctionne.
|
||
|
||
\ **Note :** La collision de particules n'affecte que :ref:`GPUParticles3D<class_GPUParticles3D>`, pas :ref:`CPUParticles3D<class_CPUParticles3D>`.
|
||
|
||
.. rst-class:: classref-reftable-group
|
||
|
||
Propriétés
|
||
--------------------
|
||
|
||
.. 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
|
||
|
||
Méthodes
|
||
----------------
|
||
|
||
.. 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
|
||
|
||
Énumérations
|
||
------------------------
|
||
|
||
.. _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``
|
||
|
||
Pré-calculer un champ de distance signé 16×16×16. C'est l'option la plus rapide, mais aussi la moins précise.
|
||
|
||
.. _class_GPUParticlesCollisionSDF3D_constant_RESOLUTION_32:
|
||
|
||
.. rst-class:: classref-enumeration-constant
|
||
|
||
:ref:`Resolution<enum_GPUParticlesCollisionSDF3D_Resolution>` **RESOLUTION_32** = ``1``
|
||
|
||
Pré-calcule un champ de distance signée 32×32×32.
|
||
|
||
.. _class_GPUParticlesCollisionSDF3D_constant_RESOLUTION_64:
|
||
|
||
.. rst-class:: classref-enumeration-constant
|
||
|
||
:ref:`Resolution<enum_GPUParticlesCollisionSDF3D_Resolution>` **RESOLUTION_64** = ``2``
|
||
|
||
Pré-calcule un champ de distance signée 64x64x64.
|
||
|
||
.. _class_GPUParticlesCollisionSDF3D_constant_RESOLUTION_128:
|
||
|
||
.. rst-class:: classref-enumeration-constant
|
||
|
||
:ref:`Resolution<enum_GPUParticlesCollisionSDF3D_Resolution>` **RESOLUTION_128** = ``3``
|
||
|
||
Pré-calcule un champ de distance signée 128x128x128.
|
||
|
||
.. _class_GPUParticlesCollisionSDF3D_constant_RESOLUTION_256:
|
||
|
||
.. rst-class:: classref-enumeration-constant
|
||
|
||
:ref:`Resolution<enum_GPUParticlesCollisionSDF3D_Resolution>` **RESOLUTION_256** = ``4``
|
||
|
||
Pré-calcule un champ de distance signée 256x256x256.
|
||
|
||
.. _class_GPUParticlesCollisionSDF3D_constant_RESOLUTION_512:
|
||
|
||
.. rst-class:: classref-enumeration-constant
|
||
|
||
:ref:`Resolution<enum_GPUParticlesCollisionSDF3D_Resolution>` **RESOLUTION_512** = ``5``
|
||
|
||
Pré-calculer un champ de distance signé 512×512×512. C'est l'option la plus lente, mais aussi la plus précise.
|
||
|
||
.. _class_GPUParticlesCollisionSDF3D_constant_RESOLUTION_MAX:
|
||
|
||
.. rst-class:: classref-enumeration-constant
|
||
|
||
:ref:`Resolution<enum_GPUParticlesCollisionSDF3D_Resolution>` **RESOLUTION_MAX** = ``6``
|
||
|
||
Représente la taille de l'énumération :ref:`Resolution<enum_GPUParticlesCollisionSDF3D_Resolution>`.
|
||
|
||
.. rst-class:: classref-section-separator
|
||
|
||
----
|
||
|
||
.. rst-class:: classref-descriptions-group
|
||
|
||
Descriptions des propriétés
|
||
------------------------------------------------------
|
||
|
||
.. _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**\ (\ )
|
||
|
||
Les couches visuelles à prendre en compte lors du pré-calcul du CDS de collision de particule. Seuls les :ref:`MeshInstance3D<class_MeshInstance3D>` dont :ref:`VisualInstance3D.layers<class_VisualInstance3D_property_layers>` correspondent à ce :ref:`bake_mask<class_GPUParticlesCollisionSDF3D_property_bake_mask>` seront inclus dans le CDS de collision de particule généré. Par défaut, tous les objets sont pris en compte pour le pré-calcul du CDS de collision de particule.
|
||
|
||
.. 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**\ (\ )
|
||
|
||
La résolution du pré-calcul à utiliser pour le champ de distance signé :ref:`texture<class_GPUParticlesCollisionSDF3D_property_texture>`. La texture doit encore être pré-calculée pour que les modifications à la propriété :ref:`resolution<class_GPUParticlesCollisionSDF3D_property_resolution>` soient effectives. Les résolutions plus élevées ont un coût de performance plus élevé et prennent plus de temps à calcul. Des résolutions plus élevées entraînent également des textures calculées plus grandes, ce qui entraîne une augmentation des besoins en RAM vidéo et en espace de stockage. Pour améliorer les performances et réduire les temps de calcul, utilisez la résolution la plus basse possible pour l'objet dont vous représentez la collision.
|
||
|
||
.. 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**\ (\ )
|
||
|
||
La taille de la collision CDS en 3D. Pour améliorer la qualité du CDS, la taille :ref:`size<class_GPUParticlesCollisionSDF3D_property_size>` devrait être aussi petite que possible tout en couvrant les parties de la scène dont vous avez besoin.
|
||
|
||
.. 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**\ (\ )
|
||
|
||
La texture 3D représentant le champ de distance signée.
|
||
|
||
.. 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**\ (\ )
|
||
|
||
L'épaisseur de la forme de collision. Contrairement à d'autres colliders de particules, **GPUParticlesCollisionSDF3D** est en fait creux à l'intérieur. :ref:`thickness<class_GPUParticlesCollisionSDF3D_property_thickness>` peut être augmentée pour empêcher les particules de traverser les bords de la forme de collision à haute vitesse, ou lorsque le **GPUParticlesCollisionSDF3D** est déplacé.
|
||
|
||
.. rst-class:: classref-section-separator
|
||
|
||
----
|
||
|
||
.. rst-class:: classref-descriptions-group
|
||
|
||
Descriptions des méthodes
|
||
--------------------------------------------------
|
||
|
||
.. _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>`
|
||
|
||
Renvoie si la couche spécifiée de :ref:`bake_mask<class_GPUParticlesCollisionSDF3D_property_bake_mask>` est activée, étant donné un numéro de couche ``layer_number`` entre 1 et 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>`
|
||
|
||
Selon ``value``, active ou désactive la couche spécifiée dans le :ref:`bake_mask<class_GPUParticlesCollisionSDF3D_property_bake_mask>`, étant donné un numéro de couche ``layer_number`` entre 1 et 32.
|
||
|
||
.. |virtual| replace:: :abbr:`virtual (Cette méthode doit typiquement être redéfinie par l'utilisateur pour avoir un effet.)`
|
||
.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
|
||
.. |const| replace:: :abbr:`const (Cette méthode n'a pas d'effets de bord. Elle ne modifie aucune des variables membres de l'instance.)`
|
||
.. |vararg| replace:: :abbr:`vararg (Cette méthode accepte n'importe quel nombre d'arguments après ceux décris ici.)`
|
||
.. |constructor| replace:: :abbr:`constructor (Cette méthode est utilisée pour construire un type.)`
|
||
.. |static| replace:: :abbr:`static (Cette méthode n'a pas besoin d'instance pour être appelée, elle peut donc être directement appelée en utilisant le nom de la classe.)`
|
||
.. |operator| replace:: :abbr:`operator (Cette méthode décrit un opérateur valide à utiliser avec ce type en tant qu'opérande gauche.)`
|
||
.. |bitfield| replace:: :abbr:`BitField (Cette valeur est un nombre entier composé d'un masque de bits des options suivantes.)`
|
||
.. |void| replace:: :abbr:`void (Aucune valeur de retour.)`
|