mirror of
https://github.com/godotengine/godot-docs-l10n.git
synced 2025-12-31 09:49:22 +03:00
580 lines
33 KiB
ReStructuredText
580 lines
33 KiB
ReStructuredText
:github_url: hide
|
|
|
|
.. meta::
|
|
:keywords: batch
|
|
|
|
.. _class_MultiMesh:
|
|
|
|
MultiMesh
|
|
=========
|
|
|
|
**Eredita:** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
|
|
|
|
Fornisce il disegno ad alte prestazioni di una mesh più volte tramite l'istanzamento sulla GPU.
|
|
|
|
.. rst-class:: classref-introduction-group
|
|
|
|
Descrizione
|
|
----------------------
|
|
|
|
MultiMesh fornisce istanze di mesh di basso livello. Disegnare migliaia di nodi :ref:`MeshInstance3D<class_MeshInstance3D>` può essere lento, poiché ogni oggetto viene inviato alla GPU e poi disegnato individualmente.
|
|
|
|
MultiMesh è molto più veloce poiché può disegnare migliaia di istanze con una singola chiamata di disegno, con conseguente minore sovraccarico sull'API.
|
|
|
|
Come svantaggio, se le istanze sono troppo distanti tra loro, le prestazioni potrebbero essere ridotte poiché ogni singola istanza sarà sempre renderizzata (sono indicizzate spazialmente come una, per l'intero oggetto).
|
|
|
|
Poiché le istanze possono avere qualsiasi comportamento, l'AABB utilizzato per la visibilità deve essere fornito dall'utente.
|
|
|
|
\ **Nota:** Un MultiMesh è un singolo oggetto, pertanto si applica la stessa restrizione di luci massime per oggetto. Ciò significa che una volta che le luci massime sono consumate da una o più istanze, il resto delle istanze di MultiMesh **non** riceveranno alcuna illuminazione.
|
|
|
|
\ **Nota:** Le forme di fusione saranno ignorate se utilizzate in un MultiMesh.
|
|
|
|
.. rst-class:: classref-introduction-group
|
|
|
|
Tutorial
|
|
----------------
|
|
|
|
- :doc:`Utilizzo di MultiMeshInstance <../tutorials/3d/using_multi_mesh_instance>`
|
|
|
|
- :doc:`Ottimizzazione utilizzando i MultiMesh <../tutorials/performance/using_multimesh>`
|
|
|
|
- :doc:`Animare migliaia di pesci con MultiMeshInstance <../tutorials/performance/vertex_animation/animating_thousands_of_fish>`
|
|
|
|
.. rst-class:: classref-reftable-group
|
|
|
|
Proprietà
|
|
------------------
|
|
|
|
.. table::
|
|
:widths: auto
|
|
|
|
+--------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------+----------------------------+
|
|
| :ref:`PackedFloat32Array<class_PackedFloat32Array>` | :ref:`buffer<class_MultiMesh_property_buffer>` | ``PackedFloat32Array()`` |
|
|
+--------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------+----------------------------+
|
|
| :ref:`PackedColorArray<class_PackedColorArray>` | :ref:`color_array<class_MultiMesh_property_color_array>` | |
|
|
+--------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------+----------------------------+
|
|
| :ref:`AABB<class_AABB>` | :ref:`custom_aabb<class_MultiMesh_property_custom_aabb>` | ``AABB(0, 0, 0, 0, 0, 0)`` |
|
|
+--------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------+----------------------------+
|
|
| :ref:`PackedColorArray<class_PackedColorArray>` | :ref:`custom_data_array<class_MultiMesh_property_custom_data_array>` | |
|
|
+--------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------+----------------------------+
|
|
| :ref:`int<class_int>` | :ref:`instance_count<class_MultiMesh_property_instance_count>` | ``0`` |
|
|
+--------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------+----------------------------+
|
|
| :ref:`Mesh<class_Mesh>` | :ref:`mesh<class_MultiMesh_property_mesh>` | |
|
|
+--------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------+----------------------------+
|
|
| :ref:`PhysicsInterpolationQuality<enum_MultiMesh_PhysicsInterpolationQuality>` | :ref:`physics_interpolation_quality<class_MultiMesh_property_physics_interpolation_quality>` | ``0`` |
|
|
+--------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------+----------------------------+
|
|
| :ref:`PackedVector2Array<class_PackedVector2Array>` | :ref:`transform_2d_array<class_MultiMesh_property_transform_2d_array>` | |
|
|
+--------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------+----------------------------+
|
|
| :ref:`PackedVector3Array<class_PackedVector3Array>` | :ref:`transform_array<class_MultiMesh_property_transform_array>` | |
|
|
+--------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------+----------------------------+
|
|
| :ref:`TransformFormat<enum_MultiMesh_TransformFormat>` | :ref:`transform_format<class_MultiMesh_property_transform_format>` | ``0`` |
|
|
+--------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------+----------------------------+
|
|
| :ref:`bool<class_bool>` | :ref:`use_colors<class_MultiMesh_property_use_colors>` | ``false`` |
|
|
+--------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------+----------------------------+
|
|
| :ref:`bool<class_bool>` | :ref:`use_custom_data<class_MultiMesh_property_use_custom_data>` | ``false`` |
|
|
+--------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------+----------------------------+
|
|
| :ref:`int<class_int>` | :ref:`visible_instance_count<class_MultiMesh_property_visible_instance_count>` | ``-1`` |
|
|
+--------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------+----------------------------+
|
|
|
|
.. rst-class:: classref-reftable-group
|
|
|
|
Metodi
|
|
------------
|
|
|
|
.. table::
|
|
:widths: auto
|
|
|
|
+---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
|
| :ref:`AABB<class_AABB>` | :ref:`get_aabb<class_MultiMesh_method_get_aabb>`\ (\ ) |const| |
|
|
+---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
|
| :ref:`Color<class_Color>` | :ref:`get_instance_color<class_MultiMesh_method_get_instance_color>`\ (\ instance\: :ref:`int<class_int>`\ ) |const| |
|
|
+---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
|
| :ref:`Color<class_Color>` | :ref:`get_instance_custom_data<class_MultiMesh_method_get_instance_custom_data>`\ (\ instance\: :ref:`int<class_int>`\ ) |const| |
|
|
+---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
|
| :ref:`Transform3D<class_Transform3D>` | :ref:`get_instance_transform<class_MultiMesh_method_get_instance_transform>`\ (\ instance\: :ref:`int<class_int>`\ ) |const| |
|
|
+---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
|
| :ref:`Transform2D<class_Transform2D>` | :ref:`get_instance_transform_2d<class_MultiMesh_method_get_instance_transform_2d>`\ (\ instance\: :ref:`int<class_int>`\ ) |const| |
|
|
+---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
|
| |void| | :ref:`reset_instance_physics_interpolation<class_MultiMesh_method_reset_instance_physics_interpolation>`\ (\ instance\: :ref:`int<class_int>`\ ) |
|
|
+---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
|
| |void| | :ref:`reset_instances_physics_interpolation<class_MultiMesh_method_reset_instances_physics_interpolation>`\ (\ ) |
|
|
+---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
|
| |void| | :ref:`set_buffer_interpolated<class_MultiMesh_method_set_buffer_interpolated>`\ (\ buffer_curr\: :ref:`PackedFloat32Array<class_PackedFloat32Array>`, buffer_prev\: :ref:`PackedFloat32Array<class_PackedFloat32Array>`\ ) |
|
|
+---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
|
| |void| | :ref:`set_instance_color<class_MultiMesh_method_set_instance_color>`\ (\ instance\: :ref:`int<class_int>`, color\: :ref:`Color<class_Color>`\ ) |
|
|
+---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
|
| |void| | :ref:`set_instance_custom_data<class_MultiMesh_method_set_instance_custom_data>`\ (\ instance\: :ref:`int<class_int>`, custom_data\: :ref:`Color<class_Color>`\ ) |
|
|
+---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
|
| |void| | :ref:`set_instance_transform<class_MultiMesh_method_set_instance_transform>`\ (\ instance\: :ref:`int<class_int>`, transform\: :ref:`Transform3D<class_Transform3D>`\ ) |
|
|
+---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
|
| |void| | :ref:`set_instance_transform_2d<class_MultiMesh_method_set_instance_transform_2d>`\ (\ instance\: :ref:`int<class_int>`, transform\: :ref:`Transform2D<class_Transform2D>`\ ) |
|
|
+---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
|
|
|
.. rst-class:: classref-section-separator
|
|
|
|
----
|
|
|
|
.. rst-class:: classref-descriptions-group
|
|
|
|
Enumerazioni
|
|
------------------------
|
|
|
|
.. _enum_MultiMesh_TransformFormat:
|
|
|
|
.. rst-class:: classref-enumeration
|
|
|
|
enum **TransformFormat**: :ref:`🔗<enum_MultiMesh_TransformFormat>`
|
|
|
|
.. _class_MultiMesh_constant_TRANSFORM_2D:
|
|
|
|
.. rst-class:: classref-enumeration-constant
|
|
|
|
:ref:`TransformFormat<enum_MultiMesh_TransformFormat>` **TRANSFORM_2D** = ``0``
|
|
|
|
Usa questo quando esegui trasformazioni 2D.
|
|
|
|
.. _class_MultiMesh_constant_TRANSFORM_3D:
|
|
|
|
.. rst-class:: classref-enumeration-constant
|
|
|
|
:ref:`TransformFormat<enum_MultiMesh_TransformFormat>` **TRANSFORM_3D** = ``1``
|
|
|
|
Usa questo quando esegui trasformazioni 3D.
|
|
|
|
.. rst-class:: classref-item-separator
|
|
|
|
----
|
|
|
|
.. _enum_MultiMesh_PhysicsInterpolationQuality:
|
|
|
|
.. rst-class:: classref-enumeration
|
|
|
|
enum **PhysicsInterpolationQuality**: :ref:`🔗<enum_MultiMesh_PhysicsInterpolationQuality>`
|
|
|
|
.. _class_MultiMesh_constant_INTERP_QUALITY_FAST:
|
|
|
|
.. rst-class:: classref-enumeration-constant
|
|
|
|
:ref:`PhysicsInterpolationQuality<enum_MultiMesh_PhysicsInterpolationQuality>` **INTERP_QUALITY_FAST** = ``0``
|
|
|
|
Always interpolate using Basis lerping, which can produce warping artifacts in some situations.
|
|
|
|
.. _class_MultiMesh_constant_INTERP_QUALITY_HIGH:
|
|
|
|
.. rst-class:: classref-enumeration-constant
|
|
|
|
:ref:`PhysicsInterpolationQuality<enum_MultiMesh_PhysicsInterpolationQuality>` **INTERP_QUALITY_HIGH** = ``1``
|
|
|
|
Attempt to interpolate using Basis slerping (spherical linear interpolation) where possible, otherwise fall back to lerping.
|
|
|
|
.. rst-class:: classref-section-separator
|
|
|
|
----
|
|
|
|
.. rst-class:: classref-descriptions-group
|
|
|
|
Descrizioni delle proprietà
|
|
------------------------------------------------------
|
|
|
|
.. _class_MultiMesh_property_buffer:
|
|
|
|
.. rst-class:: classref-property
|
|
|
|
:ref:`PackedFloat32Array<class_PackedFloat32Array>` **buffer** = ``PackedFloat32Array()`` :ref:`🔗<class_MultiMesh_property_buffer>`
|
|
|
|
.. rst-class:: classref-property-setget
|
|
|
|
- |void| **set_buffer**\ (\ value\: :ref:`PackedFloat32Array<class_PackedFloat32Array>`\ )
|
|
- :ref:`PackedFloat32Array<class_PackedFloat32Array>` **get_buffer**\ (\ )
|
|
|
|
.. container:: contribute
|
|
|
|
There is currently no description for this property. Please help us by `contributing one <https://contributing.godotengine.org/en/latest/documentation/class_reference.html>`__!
|
|
|
|
**Note:** The returned array is *copied* and any changes to it will not update the original property value. See :ref:`PackedFloat32Array<class_PackedFloat32Array>` for more details.
|
|
|
|
.. rst-class:: classref-item-separator
|
|
|
|
----
|
|
|
|
.. _class_MultiMesh_property_color_array:
|
|
|
|
.. rst-class:: classref-property
|
|
|
|
:ref:`PackedColorArray<class_PackedColorArray>` **color_array** :ref:`🔗<class_MultiMesh_property_color_array>`
|
|
|
|
**Deprecato:** Accessing this property is very slow. Use :ref:`set_instance_color()<class_MultiMesh_method_set_instance_color>` and :ref:`get_instance_color()<class_MultiMesh_method_get_instance_color>` instead.
|
|
|
|
Array contenente ciascun :ref:`Color<class_Color>` utilizzato da tutte le istanze di questa mesh.
|
|
|
|
**Note:** The returned array is *copied* and any changes to it will not update the original property value. See :ref:`PackedColorArray<class_PackedColorArray>` for more details.
|
|
|
|
.. rst-class:: classref-item-separator
|
|
|
|
----
|
|
|
|
.. _class_MultiMesh_property_custom_aabb:
|
|
|
|
.. rst-class:: classref-property
|
|
|
|
:ref:`AABB<class_AABB>` **custom_aabb** = ``AABB(0, 0, 0, 0, 0, 0)`` :ref:`🔗<class_MultiMesh_property_custom_aabb>`
|
|
|
|
.. rst-class:: classref-property-setget
|
|
|
|
- |void| **set_custom_aabb**\ (\ value\: :ref:`AABB<class_AABB>`\ )
|
|
- :ref:`AABB<class_AABB>` **get_custom_aabb**\ (\ )
|
|
|
|
L'AABB personalizzato per questa risorsa MultiMesh. Impostandolo manualmente si evitano costosi ricalcoli dell'AABB in fase di esecuzione.
|
|
|
|
.. rst-class:: classref-item-separator
|
|
|
|
----
|
|
|
|
.. _class_MultiMesh_property_custom_data_array:
|
|
|
|
.. rst-class:: classref-property
|
|
|
|
:ref:`PackedColorArray<class_PackedColorArray>` **custom_data_array** :ref:`🔗<class_MultiMesh_property_custom_data_array>`
|
|
|
|
**Deprecato:** Accessing this property is very slow. Use :ref:`set_instance_custom_data()<class_MultiMesh_method_set_instance_custom_data>` and :ref:`get_instance_custom_data()<class_MultiMesh_method_get_instance_custom_data>` instead.
|
|
|
|
L'array contenente ciascun valore di dati personalizzati utilizzato da tutte le istanze di questa mesh, sotto forma di :ref:`PackedColorArray<class_PackedColorArray>`.
|
|
|
|
**Note:** The returned array is *copied* and any changes to it will not update the original property value. See :ref:`PackedColorArray<class_PackedColorArray>` for more details.
|
|
|
|
.. rst-class:: classref-item-separator
|
|
|
|
----
|
|
|
|
.. _class_MultiMesh_property_instance_count:
|
|
|
|
.. rst-class:: classref-property
|
|
|
|
:ref:`int<class_int>` **instance_count** = ``0`` :ref:`🔗<class_MultiMesh_property_instance_count>`
|
|
|
|
.. rst-class:: classref-property-setget
|
|
|
|
- |void| **set_instance_count**\ (\ value\: :ref:`int<class_int>`\ )
|
|
- :ref:`int<class_int>` **get_instance_count**\ (\ )
|
|
|
|
Numero di istanze che saranno disegnate. Questo svuota e (ri)dimensiona i buffer. Impostare il formato dei dati o dei flag successivamente non avrà alcun effetto.
|
|
|
|
Per impostazione predefinita, sono disegnate tutte le istanze, ma è possibile limitarlo con :ref:`visible_instance_count<class_MultiMesh_property_visible_instance_count>`.
|
|
|
|
.. rst-class:: classref-item-separator
|
|
|
|
----
|
|
|
|
.. _class_MultiMesh_property_mesh:
|
|
|
|
.. rst-class:: classref-property
|
|
|
|
:ref:`Mesh<class_Mesh>` **mesh** :ref:`🔗<class_MultiMesh_property_mesh>`
|
|
|
|
.. rst-class:: classref-property-setget
|
|
|
|
- |void| **set_mesh**\ (\ value\: :ref:`Mesh<class_Mesh>`\ )
|
|
- :ref:`Mesh<class_Mesh>` **get_mesh**\ (\ )
|
|
|
|
Risorsa :ref:`Mesh<class_Mesh>` da istanziare.
|
|
|
|
L'aspetto delle singole istanze può essere modificato utilizzando :ref:`set_instance_color()<class_MultiMesh_method_set_instance_color>` e :ref:`set_instance_custom_data()<class_MultiMesh_method_set_instance_custom_data>`.
|
|
|
|
.. rst-class:: classref-item-separator
|
|
|
|
----
|
|
|
|
.. _class_MultiMesh_property_physics_interpolation_quality:
|
|
|
|
.. rst-class:: classref-property
|
|
|
|
:ref:`PhysicsInterpolationQuality<enum_MultiMesh_PhysicsInterpolationQuality>` **physics_interpolation_quality** = ``0`` :ref:`🔗<class_MultiMesh_property_physics_interpolation_quality>`
|
|
|
|
.. rst-class:: classref-property-setget
|
|
|
|
- |void| **set_physics_interpolation_quality**\ (\ value\: :ref:`PhysicsInterpolationQuality<enum_MultiMesh_PhysicsInterpolationQuality>`\ )
|
|
- :ref:`PhysicsInterpolationQuality<enum_MultiMesh_PhysicsInterpolationQuality>` **get_physics_interpolation_quality**\ (\ )
|
|
|
|
Scegli se usare un metodo di interpolazione che favorisca la velocità o la qualità.
|
|
|
|
Quando usi frequenze basse per i tick di fisica (tipicamente inferiori a 20) o alte frequenze di rotazione degli oggetti, potresti ottenere risultati migliori con l'impostazione dell'alta qualità.
|
|
|
|
\ **Nota:** Una qualità veloce non equivale a una bassa qualità. Tranne nei casi speciali menzionati sopra, la qualità dovrebbe essere paragonabile a una qualità alta.
|
|
|
|
.. rst-class:: classref-item-separator
|
|
|
|
----
|
|
|
|
.. _class_MultiMesh_property_transform_2d_array:
|
|
|
|
.. rst-class:: classref-property
|
|
|
|
:ref:`PackedVector2Array<class_PackedVector2Array>` **transform_2d_array** :ref:`🔗<class_MultiMesh_property_transform_2d_array>`
|
|
|
|
**Deprecato:** Accessing this property is very slow. Use :ref:`set_instance_transform_2d()<class_MultiMesh_method_set_instance_transform_2d>` and :ref:`get_instance_transform_2d()<class_MultiMesh_method_get_instance_transform_2d>` instead.
|
|
|
|
L'array contenente ciascun valore :ref:`Transform2D<class_Transform2D>` utilizzato da tutte le istanze di questa mesh, sotto forma di :ref:`PackedVector2Array<class_PackedVector2Array>`. Ogni trasformazione è divisa in 3 valori :ref:`Vector2<class_Vector2>` corrispondenti a ``x``, ``y`` e ``origin`` delle trasformazioni.
|
|
|
|
**Note:** The returned array is *copied* and any changes to it will not update the original property value. See :ref:`PackedVector2Array<class_PackedVector2Array>` for more details.
|
|
|
|
.. rst-class:: classref-item-separator
|
|
|
|
----
|
|
|
|
.. _class_MultiMesh_property_transform_array:
|
|
|
|
.. rst-class:: classref-property
|
|
|
|
:ref:`PackedVector3Array<class_PackedVector3Array>` **transform_array** :ref:`🔗<class_MultiMesh_property_transform_array>`
|
|
|
|
**Deprecato:** Accessing this property is very slow. Use :ref:`set_instance_transform()<class_MultiMesh_method_set_instance_transform>` and :ref:`get_instance_transform()<class_MultiMesh_method_get_instance_transform>` instead.
|
|
|
|
L'array contenente ciascun valore :ref:`Transform3D<class_Transform3D>` utilizzato da tutte le istanze di questa mesh, sotto forma di :ref:`PackedVector3Array<class_PackedVector3Array>`. Ogni trasformazione è divisa in 4 valori :ref:`Vector3<class_Vector3>` corrispondenti a ``x``, ``y``, ``z`` e ``origin`` delle trasformazioni.
|
|
|
|
**Note:** The returned array is *copied* and any changes to it will not update the original property value. See :ref:`PackedVector3Array<class_PackedVector3Array>` for more details.
|
|
|
|
.. rst-class:: classref-item-separator
|
|
|
|
----
|
|
|
|
.. _class_MultiMesh_property_transform_format:
|
|
|
|
.. rst-class:: classref-property
|
|
|
|
:ref:`TransformFormat<enum_MultiMesh_TransformFormat>` **transform_format** = ``0`` :ref:`🔗<class_MultiMesh_property_transform_format>`
|
|
|
|
.. rst-class:: classref-property-setget
|
|
|
|
- |void| **set_transform_format**\ (\ value\: :ref:`TransformFormat<enum_MultiMesh_TransformFormat>`\ )
|
|
- :ref:`TransformFormat<enum_MultiMesh_TransformFormat>` **get_transform_format**\ (\ )
|
|
|
|
Il formato della trasformazione utilizzata per trasformare la mesh, 2D o 3D.
|
|
|
|
.. rst-class:: classref-item-separator
|
|
|
|
----
|
|
|
|
.. _class_MultiMesh_property_use_colors:
|
|
|
|
.. rst-class:: classref-property
|
|
|
|
:ref:`bool<class_bool>` **use_colors** = ``false`` :ref:`🔗<class_MultiMesh_property_use_colors>`
|
|
|
|
.. rst-class:: classref-property-setget
|
|
|
|
- |void| **set_use_colors**\ (\ value\: :ref:`bool<class_bool>`\ )
|
|
- :ref:`bool<class_bool>` **is_using_colors**\ (\ )
|
|
|
|
Se ``true``, il **MultiMesh** utilizzerà i dati dei colori (vedi :ref:`set_instance_color()<class_MultiMesh_method_set_instance_color>`). Può essere impostato solo quando :ref:`instance_count<class_MultiMesh_property_instance_count>` è ``0`` o inferiore. Ciò significa che è necessario chiamare questo metodo prima di impostare il conteggio delle istanze o reimpostarlo temporaneamente su ``0``.
|
|
|
|
.. rst-class:: classref-item-separator
|
|
|
|
----
|
|
|
|
.. _class_MultiMesh_property_use_custom_data:
|
|
|
|
.. rst-class:: classref-property
|
|
|
|
:ref:`bool<class_bool>` **use_custom_data** = ``false`` :ref:`🔗<class_MultiMesh_property_use_custom_data>`
|
|
|
|
.. rst-class:: classref-property-setget
|
|
|
|
- |void| **set_use_custom_data**\ (\ value\: :ref:`bool<class_bool>`\ )
|
|
- :ref:`bool<class_bool>` **is_using_custom_data**\ (\ )
|
|
|
|
Se ``true``, il **MultiMesh** utilizzerà i dati personalizzati (vedi :ref:`set_instance_custom_data()<class_MultiMesh_method_set_instance_custom_data>`). Può essere impostato solo quando :ref:`instance_count<class_MultiMesh_property_instance_count>` è ``0`` o inferiore. Ciò significa che è necessario chiamare questo metodo prima di impostare il conteggio delle istanze o reimpostarlo temporaneamente su ``0``.
|
|
|
|
.. rst-class:: classref-item-separator
|
|
|
|
----
|
|
|
|
.. _class_MultiMesh_property_visible_instance_count:
|
|
|
|
.. rst-class:: classref-property
|
|
|
|
:ref:`int<class_int>` **visible_instance_count** = ``-1`` :ref:`🔗<class_MultiMesh_property_visible_instance_count>`
|
|
|
|
.. rst-class:: classref-property-setget
|
|
|
|
- |void| **set_visible_instance_count**\ (\ value\: :ref:`int<class_int>`\ )
|
|
- :ref:`int<class_int>` **get_visible_instance_count**\ (\ )
|
|
|
|
Limita il numero di istanze disegnate, -1 disegna tutte le istanze. Cambiando questo non si cambiano le dimensioni dei buffer.
|
|
|
|
.. rst-class:: classref-section-separator
|
|
|
|
----
|
|
|
|
.. rst-class:: classref-descriptions-group
|
|
|
|
Descrizioni dei metodi
|
|
--------------------------------------------
|
|
|
|
.. _class_MultiMesh_method_get_aabb:
|
|
|
|
.. rst-class:: classref-method
|
|
|
|
:ref:`AABB<class_AABB>` **get_aabb**\ (\ ) |const| :ref:`🔗<class_MultiMesh_method_get_aabb>`
|
|
|
|
Restituisce la bounding box di visibilità allineato all'asse nello spazio locale.
|
|
|
|
.. rst-class:: classref-item-separator
|
|
|
|
----
|
|
|
|
.. _class_MultiMesh_method_get_instance_color:
|
|
|
|
.. rst-class:: classref-method
|
|
|
|
:ref:`Color<class_Color>` **get_instance_color**\ (\ instance\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_MultiMesh_method_get_instance_color>`
|
|
|
|
Ottiene il moltiplicatore di colore di un'istanza specifica.
|
|
|
|
.. rst-class:: classref-item-separator
|
|
|
|
----
|
|
|
|
.. _class_MultiMesh_method_get_instance_custom_data:
|
|
|
|
.. rst-class:: classref-method
|
|
|
|
:ref:`Color<class_Color>` **get_instance_custom_data**\ (\ instance\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_MultiMesh_method_get_instance_custom_data>`
|
|
|
|
Restituisce i dati personalizzati impostati per un'istanza specifica.
|
|
|
|
.. rst-class:: classref-item-separator
|
|
|
|
----
|
|
|
|
.. _class_MultiMesh_method_get_instance_transform:
|
|
|
|
.. rst-class:: classref-method
|
|
|
|
:ref:`Transform3D<class_Transform3D>` **get_instance_transform**\ (\ instance\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_MultiMesh_method_get_instance_transform>`
|
|
|
|
Restituisce il :ref:`Transform3D<class_Transform3D>` di un'istanza specifica.
|
|
|
|
.. rst-class:: classref-item-separator
|
|
|
|
----
|
|
|
|
.. _class_MultiMesh_method_get_instance_transform_2d:
|
|
|
|
.. rst-class:: classref-method
|
|
|
|
:ref:`Transform2D<class_Transform2D>` **get_instance_transform_2d**\ (\ instance\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_MultiMesh_method_get_instance_transform_2d>`
|
|
|
|
Restituisce il :ref:`Transform2D<class_Transform2D>` di un'istanza specifica.
|
|
|
|
.. rst-class:: classref-item-separator
|
|
|
|
----
|
|
|
|
.. _class_MultiMesh_method_reset_instance_physics_interpolation:
|
|
|
|
.. rst-class:: classref-method
|
|
|
|
|void| **reset_instance_physics_interpolation**\ (\ instance\: :ref:`int<class_int>`\ ) :ref:`🔗<class_MultiMesh_method_reset_instance_physics_interpolation>`
|
|
|
|
Quando si usa l'*interpolazione della fisica*, questa funzione consente di impedire l'interpolazione su un'istanza nel tick attuale di fisica.
|
|
|
|
Ciò consente di spostare le istanze istantaneamente e dovrebbe essere solitamente utilizzato quando si posiziona inizialmente un'istanza, come un proiettile, per impedire errori grafici.
|
|
|
|
.. rst-class:: classref-item-separator
|
|
|
|
----
|
|
|
|
.. _class_MultiMesh_method_reset_instances_physics_interpolation:
|
|
|
|
.. rst-class:: classref-method
|
|
|
|
|void| **reset_instances_physics_interpolation**\ (\ ) :ref:`🔗<class_MultiMesh_method_reset_instances_physics_interpolation>`
|
|
|
|
When using *physics interpolation*, this function allows you to prevent interpolation for all instances in the current physics tick.
|
|
|
|
This allows you to move all instances instantaneously, and should usually be used when initially placing instances to prevent graphical glitches.
|
|
|
|
.. rst-class:: classref-item-separator
|
|
|
|
----
|
|
|
|
.. _class_MultiMesh_method_set_buffer_interpolated:
|
|
|
|
.. rst-class:: classref-method
|
|
|
|
|void| **set_buffer_interpolated**\ (\ buffer_curr\: :ref:`PackedFloat32Array<class_PackedFloat32Array>`, buffer_prev\: :ref:`PackedFloat32Array<class_PackedFloat32Array>`\ ) :ref:`🔗<class_MultiMesh_method_set_buffer_interpolated>`
|
|
|
|
Un'alternativa a impostare la proprietà :ref:`buffer<class_MultiMesh_property_buffer>`, che può essere utilizzata con l'*interpolazione della fisica*. Questo metodo prende due array e può impostare i dati per il tick attuale e quello precedente in una volta sola. Il renderer interpolerà automaticamente i dati a ogni frame.
|
|
|
|
Ciò è utile per le situazioni in cui l'ordine delle istanze può cambiare da tick a tick, come i sistemi di particelle.
|
|
|
|
Quando l'ordine delle istanze è coerente, è possibile comunque utilizzare l'alternativa più semplice di impostare :ref:`buffer<class_MultiMesh_property_buffer>` con l'interpolazione.
|
|
|
|
.. rst-class:: classref-item-separator
|
|
|
|
----
|
|
|
|
.. _class_MultiMesh_method_set_instance_color:
|
|
|
|
.. rst-class:: classref-method
|
|
|
|
|void| **set_instance_color**\ (\ instance\: :ref:`int<class_int>`, color\: :ref:`Color<class_Color>`\ ) :ref:`🔗<class_MultiMesh_method_set_instance_color>`
|
|
|
|
Imposta il colore di un'istanza specifica *moltiplicando* i colori dei vertici esistenti della mesh. Ciò consente diverse tinte di colore per istanza.
|
|
|
|
\ **Nota:** Ogni componente è memorizzato in 32 bit nei metodi di rendering Forward+ e Mobile, ma è compresso in 16 bit nel metodo di rendering Compatibilità.
|
|
|
|
Affinché il colore abbia effetto, assicurati che :ref:`use_colors<class_MultiMesh_property_use_colors>` sia ``true`` sul **MultiMesh** e che :ref:`BaseMaterial3D.vertex_color_use_as_albedo<class_BaseMaterial3D_property_vertex_color_use_as_albedo>` sia ``true`` sul materiale. Se intendi impostare un colore assoluto anziché una tinta, assicurati che il colore dell'albedo del materiale sia impostato su bianco puro (``Color(1, 1, 1)``).
|
|
|
|
.. rst-class:: classref-item-separator
|
|
|
|
----
|
|
|
|
.. _class_MultiMesh_method_set_instance_custom_data:
|
|
|
|
.. rst-class:: classref-method
|
|
|
|
|void| **set_instance_custom_data**\ (\ instance\: :ref:`int<class_int>`, custom_data\: :ref:`Color<class_Color>`\ ) :ref:`🔗<class_MultiMesh_method_set_instance_custom_data>`
|
|
|
|
Imposta i dati personalizzati per un'istanza specifica. ``custom_data`` è un tipo :ref:`Color<class_Color>` che contiene solo 4 numeri in virgola mobile.
|
|
|
|
\ **Nota:** Ogni componente è memorizzato in 32 bit nei metodi di rendering Forward+ e Mobile, ma è compresso in 16 bit nel metodo di rendering Compatibilità.
|
|
|
|
Per utilizzare i dati personalizzati, assicurati che :ref:`use_custom_data<class_MultiMesh_property_use_custom_data>` sia ``true``.
|
|
|
|
Questi dati di istanza personalizzati devono essere accessibili manualmente nel tuo shader personalizzato tramite ``INSTANCE_CUSTOM``.
|
|
|
|
.. rst-class:: classref-item-separator
|
|
|
|
----
|
|
|
|
.. _class_MultiMesh_method_set_instance_transform:
|
|
|
|
.. rst-class:: classref-method
|
|
|
|
|void| **set_instance_transform**\ (\ instance\: :ref:`int<class_int>`, transform\: :ref:`Transform3D<class_Transform3D>`\ ) :ref:`🔗<class_MultiMesh_method_set_instance_transform>`
|
|
|
|
Imposta il :ref:`Transform3D<class_Transform3D>` per un'istanza specifica.
|
|
|
|
.. rst-class:: classref-item-separator
|
|
|
|
----
|
|
|
|
.. _class_MultiMesh_method_set_instance_transform_2d:
|
|
|
|
.. rst-class:: classref-method
|
|
|
|
|void| **set_instance_transform_2d**\ (\ instance\: :ref:`int<class_int>`, transform\: :ref:`Transform2D<class_Transform2D>`\ ) :ref:`🔗<class_MultiMesh_method_set_instance_transform_2d>`
|
|
|
|
Imposta il :ref:`Transform2D<class_Transform2D>` per un'istanza specifica.
|
|
|
|
.. |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.)`
|