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...
Utilizzare SoftBody3D
I corpi deformabili (o dinamica dei corpi deformabili) simulano il movimento, il cambiamento di forma e altre proprietà fisiche degli oggetti deformabili. Ad esempio, possono servire per simulare i tessuti o per creare personaggi più realistici.
Considerazioni sul motore di fisica
Il supporto per i corpi deformabili è generalmente più robusto in Jolt Physics rispetto a GodotPhysics3D. È possibile cambiare motore di fisica modificando Fisica > 3D > Motore di fisica nelle Impostazioni del progetto. I progetti creati con Godot 4.6 e superiori utilizzano Jolt Physics come predefinito, ma i progetti esistenti si dovranno convertire manualmente.
Inoltre, l'interpolazione della fisica attualmente non influisce sui corpi deformabili. Se si desidera che la simulazione dei corpi deformabili appaia più fluida a frame rate più elevati, è necessario aumentare l'impostazione del progetto Fisica > Comune > Tick fisici al secondo, il che ha un impatto sulle prestazioni.
Basic setup
Il nodo SoftBody3D serve per le simulazioni dei corpi deformabili. A differenza di altri nodi per corpi fisici come RigidBody3D o StaticBody3D, non ha un nodo figlio CollisionShape3D o un nodo figlio MeshInstance3D. Invece, la forma di collisione è derivata dalla mesh assegnata al nodo. Questa mesh è anche utilizzata direttamente per il rendering, il che significa che non è necessario creare nodi figli per una configurazione funzionale e visibile.
Creeremo un cubo elastico per dimostrare la configurazione di un corpo deformabile.
Crea una nuova scena con un nodo Node3D come radice. Quindi, crea un nodo SoftBody3D. Aggiungi un BoxMesh alla proprietà Mesh del nodo nell'ispettore e aumenta la suddivisione della mesh per la simulazione.
Il livello di suddivisione determina il livello di precisione della deformazione: valori più elevati consentono deformazioni più piccole e dettagliate, a scapito delle prestazioni. In questo esempio, lo imposteremo a 3 per ciascun asse:
Regolamento delle proprietà di una BoxMesh nell'ispettore
Ora, imposta i parametri per ottenere il tipo di corpo deformabile che desideri. Cerca di mantenere Simulation Precision superiore a 5, altrimenti il corpo deformabile potrebbe collassare.
Regolamento delle proprietà di simulazione di un SoftBody3D nell'ispettore
Nota
Gestire alcuni parametri con cautela, poiché alcuni valori possono portare a risultati strani. Ad esempio, se la forma non è completamente chiusa e si imposta pressure a un valore superiore a 0.0, il corpo deformabile volerà in giro come un sacchetto di plastica sotto un vento forte.
Avvia la scena per visualizzare la simulazione. Ecco un esempio di come dovrebbe apparire:
Suggerimento
Per migliorare il risultato della simulazione, aumenta Simulation Precision; potrebbe risultare in un notevole miglioramento a scapito delle prestazioni.
Alternativamente, è possibile aumentare l'impostazione del progetto Fisica > Generale > Tick fisici al secondo, il che influirà anche sulla qualità della simulazione dei corpi deformabili.
Simulazione di un mantello
Creiamo un mantello nella demo di piattaforme 3D.
Nota
È possibile scaricare la demo di piattaforme 3D su GitHub o sulla Libreria dei contenuti.
Apri la scena player/player.tscn, aggiungi un nodo SoftBody3D sotto il nodo radice, e poi assegnagli una risorsa PlaneMesh nella sua proprietà Mesh.
Apri le proprietà della PlaneMesh e imposta size su (0.5, 1.0), poi imposta Subdivide Width e Subdivide Depth a 5. Regola la posizione e rotazione del nodo SoftBody3D affinché il piano sembri essere vicino al retro del personaggio. Dovresti ottenere qualcosa del genere:
Suddividere la PlaneMesh e posizionarla sul retro del personaggio
Suggerimento
La suddivisione genera una mesh più tassellata per simulazioni migliori. Tuttavia, livelli di suddivisione più elevati influiranno sulle prestazioni. Cerca di trovare un equilibrio tra prestazioni e qualità. Questo dipende dal numero di simulazioni di corpi deformabili che prevedi siano attive allo stesso tempo, nonché dalla distanza tra la telecamera e il corpo deformabile.
Aggiungi un nodo BoneAttachment3D sotto il nodo scheletro e seleziona l'osso del collo (Neck) per collegare il mantello allo scheletro del personaggio.
Nota
Il nodo BoneAttachment3D serve per attaccare oggetti a un osso di un'armatura. L'oggetto attaccato seguirà il movimento dell'osso. Ad esempio, è possibile attaccare l'arma mantenuta da un personaggio in questo modo.
Per il momento, non spostare il nodo SoftBody3D sotto il nodo BoneAttachment3D. Invece, configureremo i suoi punti fissati in modo che seguano il nodo BoneAttachment3D.
Configurazione del nodo BoneAttachment3D nell'ispettore
Per creare punti fissati, seleziona i vertici superiori nel nodo SoftBody3D. Un punto fissato appare blu nella viewport dell'editor 3D:
Fissaggio dei punti del SoftBody3D nell'ispettore
I punti fissati si trovano nella proprietà Attachments del SoftBody3D, che si trova sotto la sezione Collision da espandere prima. Scegli il nodo BoneAttachment3D come Spatial Attachment Path per ciascun punto fissato. I punti fissati sono ora attaccati al collo.
Suggerimento
Per assegnare le proprietà più velocemente, puoi trascinare il nodo BoneAttachment3D dal pannello dell'albero di scene al campo della proprietà Spatial Attachment Path.
Tieni presente che potrebbe essere necessario deselezionare e poi riselezionare il nodo SoftBody3D affinché la sezione Attachments sia visualizzata.
Configurazione dei punti fissati da collegare al nodo BoneAttachment3D nell'ispettore di SoftBody3D
L'ultimo passaggio consiste nell'evitare il clipping, aggiungendo il nodo CharacterBody3D Player (il nodo radice della scena) alla proprietà Parent Collision Ignore del SoftBody3D.
Configurazione dell'eccezione di collisione nell'ispettore di SoftBody3D
Avvia la scena e il mantello dovrebbe simularsi correttamente.
Risultato finale all'esecuzione della scena principale del progetto
Questo copre le impostazioni base di un corpo deformabile. Sperimenta con i parametri per ottenere l'effetto desiderato per il tuo gioco.
Nota
The cloak will not appear when viewed from certain angles due to backface culling. To resolve this, you can disable backface culling by assigning a new StandardMaterial3D, then setting its cull mode to Disabled. This will make the material render both sides of the plane.
Utilizzare le mesh importate
L'opzione Salva su file nella finestra Impostazioni di importazione avanzate consente di salvare una mesh in un file di risorse autonomo che è possibile attaccare ai nodi SoftBody3D.
Si consiglia inoltre di disabilitare la generazione dei LOD o di modificarne le opzioni durante l'importazione di una mesh da utilizzare con SoftBody3D. Le impostazioni predefinite produrranno un LOD che unisce facce adiacenti quasi piatte tra loro, anche da molto vicino per il rendering. Ciò funziona bene per le mesh statiche, ma è spesso sconsigliata all'uso con SoftBody3D se si desidera che queste facce possano piegarsi e muoversi l'una rispetto all'altra, anziché essere renderizzate come un unico piano.
Consulta Configurazione di importazione e Mesh level of detail (LOD) per maggiori dettagli.