Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
CSGShape3D
Eredita: GeometryInstance3D < VisualInstance3D < Node3D < Node < Object
Ereditato da: CSGCombiner3D, CSGPrimitive3D
La classe di base CSG.
Descrizione
Questa è la classe base CSG che fornisce supporto delle operazioni CSG ai vari nodi CSG in Godot.
Prestazioni: I nodi CSG sono progettati solo alla prototipazione, poiché hanno un impatto significativo sulle prestazioni della CPU. Si consiglia di preparare i risultati finali delle operazioni CSG in una geometria statica che sostituisce i nodi CSG.
È possibile preparare i singoli risultati del nodo CSG radice in nodi con risorse statiche attraverso il menu dell'editor che appare quando un nodo CSG radice è selezionato.
È possibile anche preparare i singoli nodi CSG radice in risorse statiche tramite script, chiamando bake_static_mesh() per la mesh visiva o bake_collision_shape() per la collisione fisica.
È possibile preparare intere scene di nodi CSG in geometria statica ed esportarle con l'esportatore di scene gltf dell'editor: Scena > Esporta come... > Scena glTF 2.0...
Tutorial
Proprietà
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
Metodi
get_collision_layer_value(layer_number: int) const |
|
get_collision_mask_value(layer_number: int) const |
|
get_meshes() const |
|
is_root_shape() const |
|
void |
set_collision_layer_value(layer_number: int, value: bool) |
void |
set_collision_mask_value(layer_number: int, value: bool) |
Enumerazioni
enum Operation: 🔗
Operation OPERATION_UNION = 0
La geometria di entrambe i primitivi è unita, mentre la geometria intersecante è rimossa.
Operation OPERATION_INTERSECTION = 1
Rimane solo la geometria intersecante, il resto viene rimosso.
Operation OPERATION_SUBTRACTION = 2
La seconda forma è sottratta dalla prima, lasciando un incavo nella sua forma.
Descrizioni delle proprietà
Enables automatic smoothing. This overrides any smoothing on the CSG node and instead uses smoothing_angle to calculate normals based on the angle between faces.
Children of a CSGCombiner3D node will be treated as a single mesh.
bool calculate_tangents = true 🔗
Calcola le tangenti per la forma CSG che consente l'uso di mappe normali. Questo è applicato solo alla forma radice, questa impostazione è ignorata su qualsiasi figlio. Impostando questo valore su false si può velocizzare leggermente la generazione delle forme.
Gli strati di fisica in cui si trova quest'area.
Gli oggetti collidibili possono esistere in uno qualsiasi dei 32 livelli diversi. Questi livelli funzionano come un sistema di marcatura e non sono visivi. Un collidibile può usare questi livelli per selezionare con quali oggetti esso può collidere, attraverso la proprietà collision_mask.
Un contatto viene rilevato se l'oggetto A è in uno qualsiasi degli strati scansionati dall'oggetto B, o se l'oggetto B è in uno qualsiasi degli strati scansionati dall'oggetto A. Consulta Strati e maschere di collisione nella documentazione per ulteriori informazioni.
Gli strati di fisica che questa forma CSG scansiona per le collisioni. Efficace solo se use_collision è true. Consulta Strati e maschere di collisione nella documentazione per ulteriori informazioni.
float collision_priority = 1.0 🔗
La priorità utilizzata per risolvere la collisione quando si verifica una penetrazione. Efficace solo se use_collision è true. Più alta è la priorità, minore sarà la penetrazione nell'oggetto. Questo può essere utilizzato, ad esempio, per impedire al giocatore di sfondare i confini di un livello.
L'operazione che è eseguita su questa forma. Viene ignorata per il primo nodo figlio CSG poiché l'operazione avviene tra questo nodo e il figlio precedente del genitore di questo nodo.
float smoothing_angle = 50.0 🔗
When autosmooth is enabled, faces with an angle between them greater than this will be smoothed, while faces with a smaller angle will remain sharp.
Note: An angle lower than 0.1 will cause all smoothing to be disabled, this can be used to increase performance.
Deprecato: The CSG library no longer uses snapping.
Questa proprietà non fa nulla.
Aggiunge una forma di collisione al motore fisico per la nostra forma CSG. Questa funzionerà sempre come un corpo statico. Nota che la forma di collisione è ancora attiva anche se la forma CSG stessa è nascosta. Vedi anche collision_mask e collision_priority.
Descrizioni dei metodi
ConcavePolygonShape3D bake_collision_shape() 🔗
Restituisce un ConcavePolygonShape3D preparato per la fisica del risultato dell'operazione CSG di questo nodo. Restituisce una forma vuota se il nodo non è un nodo radice CSG o non ha una geometria valida.
Prestazioni: Se l'operazione CSG produce una geometria molto dettagliata con molte facce, le prestazioni sulla fisica saranno molto lente. Le forme concave dovrebbero in generale essere utilizzate solo per la geometria statica di un livello e non con gli oggetti dinamici in movimento.
Nota: Gli aggiornamenti dei dati delle mesh CSG sono differiti, il che significa che si aggiornano con un ritardo di un frame renderizzato. Per evitare di ottenere una forma vuota o dati obsoleti di mesh, assicurarsi di chiamare await get_tree().process_frame prima di usare bake_collision_shape() in Node._ready() o dopo aver modificato le proprietà sul CSGShape3D.
ArrayMesh bake_static_mesh() 🔗
Restituisce un ArrayMesh statico preparato dal risultato dell'operazione CSG di questo nodo. I materiali dei nodi CSG coinvolti vengono inclusi come superfici aggiuntive alla mesh. Restituisce una mesh vuota se il nodo non è un nodo radice CSG o non ha una geometria valida.
Nota: Gli aggiornamenti dei dati delle mesh CSG sono differiti, il che significa che si aggiornano con un ritardo di un frame renderizzato. Per evitare di ottenere una forma vuota o dati obsoleti di mesh, assicurarsi di chiamare await get_tree().process_frame prima di usare bake_collision_shape() in Node._ready() o dopo aver modificato le proprietà sul CSGShape3D.
bool get_collision_layer_value(layer_number: int) const 🔗
Restituisce se lo strato specificato di collision_layer è abilitato o meno, fornito un numero di strato layer_number tra 1 e 32.
bool get_collision_mask_value(layer_number: int) const 🔗
Restituisce se lo strato specificato della collision_mask è abilitato, fornito un numero di strato layer_number tra 1 e 32.
Restituisce un Array con due elementi, il primo è il Transform3D di questo nodo e il secondo è la Mesh radice di questo nodo. Funziona solo quando questo nodo è la forma radice.
Nota: Gli aggiornamenti dei dati delle mesh CSG sono differiti, il che significa che si aggiornano con un ritardo di un frame renderizzato. Per evitare di ottenere una forma vuota o dati obsoleti di mesh, assicurarsi di chiamare await get_tree().process_frame prima di usare bake_collision_shape() in Node._ready() o dopo aver modificato le proprietà sul CSGShape3D.
Restituisce true se questa è una forma radice ed è quindi l'oggetto che viene renderizzato.
void set_collision_layer_value(layer_number: int, value: bool) 🔗
In base a value, abilita o disabilita lo strato specificato nel collision_layer, fornito un layer_number compreso tra 1 e 32.
void set_collision_mask_value(layer_number: int, value: bool) 🔗
In base a value, abilita o disabilita lo strato specificato nel collision_mask, fornito un layer_number compreso tra 1 e 32.