Files
godot-docs-l10n/classes/it/class_gpuparticlescollisionheightfield3d.rst
2025-09-30 13:31:55 +02:00

292 lines
17 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_GPUParticlesCollisionHeightField3D:
GPUParticlesCollisionHeightField3D
==================================
**Eredita:** :ref:`GPUParticlesCollision3D<class_GPUParticlesCollision3D>` **<** :ref:`VisualInstance3D<class_VisualInstance3D>` **<** :ref:`Node3D<class_Node3D>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
Una forma di collisione di particelle 3D a forma di heightmap in tempo reale che influenza i nodi :ref:`GPUParticles3D<class_GPUParticles3D>`.
.. rst-class:: classref-introduction-group
Descrizione
----------------------
Una forma di collisione di particelle 3D a forma di heightmap in tempo reale che influenza i nodi :ref:`GPUParticles3D<class_GPUParticles3D>`.
Le forme heightmap consentono di rappresentare in modo efficiente le collisioni per oggetti convessi e concavi con un singolo "piano" (come il terreno). Questo è meno flessibile di :ref:`GPUParticlesCollisionSDF3D<class_GPUParticlesCollisionSDF3D>`, ma non richiede una fase di precalcolo.
\ **GPUParticlesCollisionHeightField3D** può anche essere rigenerato in tempo reale quando viene spostato, quando la telecamera si muove o persino in modo continuo. Ciò rende **GPUParticlesCollisionHeightField3D** una buona scelta per effetti meteorologici come pioggia e neve e giochi con geometria altamente dinamica. Tuttavia, questa classe è limitata poiché le heightmap non possono rappresentare sporgenze (ad esempio al chiuso o nelle grotte).
\ **Nota:** :ref:`ParticleProcessMaterial.collision_mode<class_ParticleProcessMaterial_property_collision_mode>` deve essere ``true`` sul materiale di processo di :ref:`GPUParticles3D<class_GPUParticles3D>` affinché la collisione funzioni.
\ **Nota:** La collisione delle particelle influenza solo i :ref:`GPUParticles3D<class_GPUParticles3D>`, non i :ref:`CPUParticles3D<class_CPUParticles3D>`.
.. rst-class:: classref-reftable-group
Proprietà
------------------
.. table::
:widths: auto
+-----------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------+
| :ref:`bool<class_bool>` | :ref:`follow_camera_enabled<class_GPUParticlesCollisionHeightField3D_property_follow_camera_enabled>` | ``false`` |
+-----------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------+
| :ref:`int<class_int>` | :ref:`heightfield_mask<class_GPUParticlesCollisionHeightField3D_property_heightfield_mask>` | ``1048575`` |
+-----------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------+
| :ref:`Resolution<enum_GPUParticlesCollisionHeightField3D_Resolution>` | :ref:`resolution<class_GPUParticlesCollisionHeightField3D_property_resolution>` | ``2`` |
+-----------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------+
| :ref:`Vector3<class_Vector3>` | :ref:`size<class_GPUParticlesCollisionHeightField3D_property_size>` | ``Vector3(2, 2, 2)`` |
+-----------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------+
| :ref:`UpdateMode<enum_GPUParticlesCollisionHeightField3D_UpdateMode>` | :ref:`update_mode<class_GPUParticlesCollisionHeightField3D_property_update_mode>` | ``0`` |
+-----------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------+
.. rst-class:: classref-reftable-group
Metodi
------------
.. table::
:widths: auto
+-------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`bool<class_bool>` | :ref:`get_heightfield_mask_value<class_GPUParticlesCollisionHeightField3D_method_get_heightfield_mask_value>`\ (\ layer_number\: :ref:`int<class_int>`\ ) |const| |
+-------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`set_heightfield_mask_value<class_GPUParticlesCollisionHeightField3D_method_set_heightfield_mask_value>`\ (\ layer_number\: :ref:`int<class_int>`, value\: :ref:`bool<class_bool>`\ ) |
+-------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
.. rst-class:: classref-section-separator
----
.. rst-class:: classref-descriptions-group
Enumerazioni
------------------------
.. _enum_GPUParticlesCollisionHeightField3D_Resolution:
.. rst-class:: classref-enumeration
enum **Resolution**: :ref:`🔗<enum_GPUParticlesCollisionHeightField3D_Resolution>`
.. _class_GPUParticlesCollisionHeightField3D_constant_RESOLUTION_256:
.. rst-class:: classref-enumeration-constant
:ref:`Resolution<enum_GPUParticlesCollisionHeightField3D_Resolution>` **RESOLUTION_256** = ``0``
Genera una heightmap di 256×256. Pensata per scene su piccola scala o scene più grandi senza particelle distanti.
.. _class_GPUParticlesCollisionHeightField3D_constant_RESOLUTION_512:
.. rst-class:: classref-enumeration-constant
:ref:`Resolution<enum_GPUParticlesCollisionHeightField3D_Resolution>` **RESOLUTION_512** = ``1``
Genera una heightmap di 512×512. Pensata per scene di media scala o scene più grandi senza particelle distanti.
.. _class_GPUParticlesCollisionHeightField3D_constant_RESOLUTION_1024:
.. rst-class:: classref-enumeration-constant
:ref:`Resolution<enum_GPUParticlesCollisionHeightField3D_Resolution>` **RESOLUTION_1024** = ``2``
Genera una heightmap di 1024×1024. Pensata per scene di grandi dimensioni con particelle distanti.
.. _class_GPUParticlesCollisionHeightField3D_constant_RESOLUTION_2048:
.. rst-class:: classref-enumeration-constant
:ref:`Resolution<enum_GPUParticlesCollisionHeightField3D_Resolution>` **RESOLUTION_2048** = ``3``
Genera una heightmap di 2048×2048. Pensata per scene molto grandi con particelle distanti.
.. _class_GPUParticlesCollisionHeightField3D_constant_RESOLUTION_4096:
.. rst-class:: classref-enumeration-constant
:ref:`Resolution<enum_GPUParticlesCollisionHeightField3D_Resolution>` **RESOLUTION_4096** = ``4``
Genera una heightmap di 4096×4096. Pensata per scene enormi con particelle distanti.
.. _class_GPUParticlesCollisionHeightField3D_constant_RESOLUTION_8192:
.. rst-class:: classref-enumeration-constant
:ref:`Resolution<enum_GPUParticlesCollisionHeightField3D_Resolution>` **RESOLUTION_8192** = ``5``
Genera una heightmap di 8192×8192. Pensata per scene gigantesche con particelle distanti.
.. _class_GPUParticlesCollisionHeightField3D_constant_RESOLUTION_MAX:
.. rst-class:: classref-enumeration-constant
:ref:`Resolution<enum_GPUParticlesCollisionHeightField3D_Resolution>` **RESOLUTION_MAX** = ``6``
Rappresenta la dimensione dell'enumerazione :ref:`Resolution<enum_GPUParticlesCollisionHeightField3D_Resolution>`.
.. rst-class:: classref-item-separator
----
.. _enum_GPUParticlesCollisionHeightField3D_UpdateMode:
.. rst-class:: classref-enumeration
enum **UpdateMode**: :ref:`🔗<enum_GPUParticlesCollisionHeightField3D_UpdateMode>`
.. _class_GPUParticlesCollisionHeightField3D_constant_UPDATE_MODE_WHEN_MOVED:
.. rst-class:: classref-enumeration-constant
:ref:`UpdateMode<enum_GPUParticlesCollisionHeightField3D_UpdateMode>` **UPDATE_MODE_WHEN_MOVED** = ``0``
Aggiorna la heightmap solo quando il nodo **GPUParticlesCollisionHeightField3D** viene spostato, o quando la telecamera si sposta se :ref:`follow_camera_enabled<class_GPUParticlesCollisionHeightField3D_property_follow_camera_enabled>` è ``true``. È possibile forzare un aggiornamento spostando leggermente il **GPUParticlesCollisionHeightField3D** in qualsiasi direzione o chiamando :ref:`RenderingServer.particles_collision_height_field_update()<class_RenderingServer_method_particles_collision_height_field_update>`.
.. _class_GPUParticlesCollisionHeightField3D_constant_UPDATE_MODE_ALWAYS:
.. rst-class:: classref-enumeration-constant
:ref:`UpdateMode<enum_GPUParticlesCollisionHeightField3D_UpdateMode>` **UPDATE_MODE_ALWAYS** = ``1``
Aggiorna la heightmap a ogni frame. Ciò ha un impatto notevole sulle prestazioni. Questo aggiornamento si dovrebbe utilizzare solo quando la geometria con cui le particelle possono collidere cambia significativamente durante il gioco.
.. rst-class:: classref-section-separator
----
.. rst-class:: classref-descriptions-group
Descrizioni delle proprietà
------------------------------------------------------
.. _class_GPUParticlesCollisionHeightField3D_property_follow_camera_enabled:
.. rst-class:: classref-property
:ref:`bool<class_bool>` **follow_camera_enabled** = ``false`` :ref:`🔗<class_GPUParticlesCollisionHeightField3D_property_follow_camera_enabled>`
.. rst-class:: classref-property-setget
- |void| **set_follow_camera_enabled**\ (\ value\: :ref:`bool<class_bool>`\ )
- :ref:`bool<class_bool>` **is_follow_camera_enabled**\ (\ )
Se ``true``, **GPUParticlesCollisionHeightField3D** seguirà la telecamera attuale nello spazio globale. **GPUParticlesCollisionHeightField3D** non deve essere un nodo figlio del nodo :ref:`Camera3D<class_Camera3D>` affinché questo funzioni.
Seguire la telecamera ha un costo in termini di prestazioni, poiché costringerà la heightmap ad aggiornarsi ogni volta che la telecamera si muove. Considera di abbassare :ref:`resolution<class_GPUParticlesCollisionHeightField3D_property_resolution>` per migliorare le prestazioni se :ref:`follow_camera_enabled<class_GPUParticlesCollisionHeightField3D_property_follow_camera_enabled>` è ``true``.
.. rst-class:: classref-item-separator
----
.. _class_GPUParticlesCollisionHeightField3D_property_heightfield_mask:
.. rst-class:: classref-property
:ref:`int<class_int>` **heightfield_mask** = ``1048575`` :ref:`🔗<class_GPUParticlesCollisionHeightField3D_property_heightfield_mask>`
.. rst-class:: classref-property-setget
- |void| **set_heightfield_mask**\ (\ value\: :ref:`int<class_int>`\ )
- :ref:`int<class_int>` **get_heightfield_mask**\ (\ )
Gli strati visuali da considerare quando si aggiorna la heightmap. Solo i :ref:`MeshInstance3D<class_MeshInstance3D>` i cui :ref:`VisualInstance3D.layers<class_VisualInstance3D_property_layers>` corrispondono a questa :ref:`heightfield_mask<class_GPUParticlesCollisionHeightField3D_property_heightfield_mask>` saranno inclusi nell'aggiornamento della collisione della heightmap. Per impostazione predefinita, sono considerati tutti i 20 strati visibili all'utente per aggiornare la collisione della heightmap.
\ **Nota:** Poiché :ref:`heightfield_mask<class_GPUParticlesCollisionHeightField3D_property_heightfield_mask>` consente di memorizzare 32 strati in totale, ci sono altri 12 strati che sono utilizzati solo internamente dal motore e non sono esposti nell'editor. Impostare :ref:`heightfield_mask<class_GPUParticlesCollisionHeightField3D_property_heightfield_mask>` tramite uno script consente di attivare o disattivare i livelli riservati, il che può essere utile per le estensioni dell'editor.
Per regolare :ref:`heightfield_mask<class_GPUParticlesCollisionHeightField3D_property_heightfield_mask>` più facilmente tramite uno script, usa :ref:`get_heightfield_mask_value()<class_GPUParticlesCollisionHeightField3D_method_get_heightfield_mask_value>` e :ref:`set_heightfield_mask_value()<class_GPUParticlesCollisionHeightField3D_method_set_heightfield_mask_value>`.
.. rst-class:: classref-item-separator
----
.. _class_GPUParticlesCollisionHeightField3D_property_resolution:
.. rst-class:: classref-property
:ref:`Resolution<enum_GPUParticlesCollisionHeightField3D_Resolution>` **resolution** = ``2`` :ref:`🔗<class_GPUParticlesCollisionHeightField3D_property_resolution>`
.. rst-class:: classref-property-setget
- |void| **set_resolution**\ (\ value\: :ref:`Resolution<enum_GPUParticlesCollisionHeightField3D_Resolution>`\ )
- :ref:`Resolution<enum_GPUParticlesCollisionHeightField3D_Resolution>` **get_resolution**\ (\ )
Le risoluzioni più elevate possono rappresentare piccoli dettagli in modo più accurato in scene di grandi dimensioni, a scapito delle prestazioni. Se :ref:`update_mode<class_GPUParticlesCollisionHeightField3D_property_update_mode>` è :ref:`UPDATE_MODE_ALWAYS<class_GPUParticlesCollisionHeightField3D_constant_UPDATE_MODE_ALWAYS>`, considera di usare la risoluzione più bassa possibile.
.. rst-class:: classref-item-separator
----
.. _class_GPUParticlesCollisionHeightField3D_property_size:
.. rst-class:: classref-property
:ref:`Vector3<class_Vector3>` **size** = ``Vector3(2, 2, 2)`` :ref:`🔗<class_GPUParticlesCollisionHeightField3D_property_size>`
.. rst-class:: classref-property-setget
- |void| **set_size**\ (\ value\: :ref:`Vector3<class_Vector3>`\ )
- :ref:`Vector3<class_Vector3>` **get_size**\ (\ )
La dimensione della heightmap di collisione in unità 3D. Per migliorare la qualità della heightmap, :ref:`size<class_GPUParticlesCollisionHeightField3D_property_size>` dovrebbe essere impostato il più piccolo possibile, coprendo le parti della scena di cui hai bisogno.
.. rst-class:: classref-item-separator
----
.. _class_GPUParticlesCollisionHeightField3D_property_update_mode:
.. rst-class:: classref-property
:ref:`UpdateMode<enum_GPUParticlesCollisionHeightField3D_UpdateMode>` **update_mode** = ``0`` :ref:`🔗<class_GPUParticlesCollisionHeightField3D_property_update_mode>`
.. rst-class:: classref-property-setget
- |void| **set_update_mode**\ (\ value\: :ref:`UpdateMode<enum_GPUParticlesCollisionHeightField3D_UpdateMode>`\ )
- :ref:`UpdateMode<enum_GPUParticlesCollisionHeightField3D_UpdateMode>` **get_update_mode**\ (\ )
Il criterio di aggiornamento da usare per la heightmap generata.
.. rst-class:: classref-section-separator
----
.. rst-class:: classref-descriptions-group
Descrizioni dei metodi
--------------------------------------------
.. _class_GPUParticlesCollisionHeightField3D_method_get_heightfield_mask_value:
.. rst-class:: classref-method
:ref:`bool<class_bool>` **get_heightfield_mask_value**\ (\ layer_number\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_GPUParticlesCollisionHeightField3D_method_get_heightfield_mask_value>`
Restituisce ``true`` se lo strato specificato di :ref:`heightfield_mask<class_GPUParticlesCollisionHeightField3D_property_heightfield_mask>` è abilitato, dato un ``layer_number`` compreso tra ``1`` e ``20``, inclusivo.
.. rst-class:: classref-item-separator
----
.. _class_GPUParticlesCollisionHeightField3D_method_set_heightfield_mask_value:
.. rst-class:: classref-method
|void| **set_heightfield_mask_value**\ (\ layer_number\: :ref:`int<class_int>`, value\: :ref:`bool<class_bool>`\ ) :ref:`🔗<class_GPUParticlesCollisionHeightField3D_method_set_heightfield_mask_value>`
In base a ``value``, abilita o disabilita lo strato specificato in :ref:`heightfield_mask<class_GPUParticlesCollisionHeightField3D_property_heightfield_mask>`, dato un ``layer_number`` compreso tra ``1`` e ``20``.
.. |virtual| replace:: :abbr:`virtual (Questo metodo dovrebbe solitamente essere sovrascritto dall'utente per aver un effetto.)`
.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
.. |const| replace:: :abbr:`const (Questo metodo non ha effetti collaterali. Non modifica alcuna variabile appartenente all'istanza.)`
.. |vararg| replace:: :abbr:`vararg (Questo metodo accetta qualsiasi numero di argomenti oltre a quelli descritti qui.)`
.. |constructor| replace:: :abbr:`constructor (Questo metodo è utilizzato per creare un tipo.)`
.. |static| replace:: :abbr:`static (Questo metodo non necessita di alcun'istanza per essere chiamato, quindi può essere chiamato direttamente usando il nome della classe.)`
.. |operator| replace:: :abbr:`operator (Questo metodo descrive un operatore valido da usare con questo tipo come operando di sinistra.)`
.. |bitfield| replace:: :abbr:`BitField (Questo valore è un intero composto da una maschera di bit dei seguenti flag.)`
.. |void| replace:: :abbr:`void (Nessun valore restituito.)`