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.

Scheletri 2D

Introduzione

Quando si lavora con il 3D, le deformazioni scheletriche sono comuni per personaggi e creature e la maggior parte dei programmi di modellazione 3D le supporta. Per il 2D, poiché questa funzione non è utilizzata così spesso, è difficile trovare software convenzionale specificamente pensati per questo.

Un'opzione è quella di creare animazioni con software di terze parti come Spine o Dragonbones. Questa funzionalità è anche integrata nell'editor.

Perché mai vorresti realizzare animazioni scheletriche direttamente in Godot? La risposta è che offre numerosi vantaggi:

  • Migliore integrazione con il motore, quindi meno problemi di importazione e modifica da strumenti esterni.

  • Possibilità di controllare i sistemi di particelle, shader, suoni, script di chiamata, colori, trasparenza, ecc. nelle animazioni.

  • Il sistema scheletrico integrato in Godot è molto efficiente e progettato per le prestazioni.

Il seguente tutorial spiegherà quindi le deformazioni scheletriche in 2D.

Configura

Vedi anche

Prima di cominciare, consigliamo di seguire il tutorial Cutout animation per ottenere una comprensione generale dell'animazione in Godot.

Per questo tutorial, useremo una singola immagine per costruire il nostro personaggio. Scaricala da gBot_pieces.png oppure salva l'immagine qui sotto.

../../_images/gBot_pieces.png

Si consiglia inoltre di scaricare l'immagine finale del personaggio gBot_complete.png per avere un buon riferimento per assemblare i diversi pezzi.

../../_images/gBot_complete.png

Creazione dei poligoni

Crea una nuova scena per il tuo modello (se si tratta di un personaggio animato, potresti voler utilizzare un CharacterBody2D). Per facilità d'uso, è creato un nodo 2D vuoto come radice per i poligoni.

Comincia con un nodo Polygon2D. Per ora non è necessario posizionarlo da nessuna parte nella scena, quindi crealo semplicemente in questo modo:

../../_images/skel2d1.png

Selezionalo e assegna la texture con i pezzi del personaggio che hai scaricato prima:

../../_images/skel2d2.png

Non si consiglia disegnare direttamente un poligono. Invece, apri la finestra di dialogo "UV" per il poligono:

../../_images/skel2d3.png

Passa alla modalità Punti, seleziona la matita e disegna un poligono attorno al pezzo desiderato:

../../_images/skel2d4.png

Duplica il nodo poligono e assegnagli un nome appropriato. Quindi, apri nuovamente la finestra di dialogo "UV" e sostituisci il vecchio poligono con un altro nel nuovo pezzo desiderato.

Quando duplichi i nodi e il pezzo successivo ha una forma simile, puoi modificare il poligono precedente invece di disegnarne uno nuovo.

Dopo aver spostato il poligono, ricordati di aggiornare le coordinate UV selezionando Modifica > Copia poligono in UV nell'Editor di UV di poligoni 2D.

../../_images/skel2d5.png

Continua a fare così finché non avrai mappato tutti i pezzi.

../../_images/skel2d6.png

Noterai che i pezzi per i nodi appaiono con lo stessa disposizione che hanno nella texture originale. Questo perché, come predefinito, quando si disegna un poligono, gli UV e i punti sono gli stessi.

Riorganizza i pezzi e costruisci il personaggio. Dovrebbe essere abbastanza rapido. Non c'è bisogno di cambiare i punti di rotazione, quindi non preoccuparti di verificare che i punti di rotazione di ogni pezzo siano corretti; per ora puoi lasciarli così come sono.

../../_images/skel2d7.png

Ah, l'ordine visivo dei pezzi non è ancora corretto, poiché alcuni coprono i pezzi sbagliati. Riorganizza l'ordine dei nodi per risolvere il problema:

../../_images/skel2d8.png

Ed ecco fatto! È stato decisamente molto più facile che nel tutorial di cutout.

Creazione dello scheletro

Creiamo un nodo Skeleton2D come figlio del nodo radice. Questo sarà la base del nostro scheletro:

../../_images/skel2d9.png

Crea un nodo Bone2D come nodo figlio dello scheletro. Posizionalo sull'anca (di solito gli scheletri iniziano da qui). L'osso punterà verso destra, ma per ora puoi ignorarlo.

../../_images/skel2d10.png

Keep creating bones in hierarchy and naming them accordingly.

../../_images/skel2d11.png

At the end of this chain, there will be a jaw node. It is, again, very short and pointing to the right. This is normal for bones without children. The length of tip bones can be changed with a property in the inspector:

../../_images/skel2d12.png

In this case, we don't need to rotate the bone (coincidentally the jaw points right in the sprite), but in case you need to, feel free to do it. Again, this is only really needed for tip bones as nodes with children don't usually need a length or a specific rotation.

Continua così e costruisci l'intero scheletro:

../../_images/skel2d13.png

Noterai che tutte le ossa hanno un avviso riguardo una posa di riposo mancante. La posa di riposo è la posa predefinita di uno scheletro, a cui puoi tornare ogni volta che vuoi (il che è molto utile per le animazioni). Per impostarne una, clicca sul nodo skeleton nell'albero di scene, poi clicca sul pulsante Skeleton2D nella barra degli strumenti e seleziona Overwrite Rest Pose dal menu a tendina.

../../_images/skel2d14.webp

Gli avvisi scompariranno. Se modifichi lo scheletro (aggiungi/rimuovi ossa), sarà necessario impostare nuovamente la posa di riposo.

Deformare i poligoni

Seleziona i poligoni creati in precedenza e assegna il nodo scheletro alla loro proprietà Skeleton. Facendo così sarà possibile deformarli dallo scheletro.

../../_images/skel2d15.png

Clicca sulla proprietà evidenziata sopra e seleziona il nodo scheletro:

../../_images/skel2d16.png

Ancora una volta, apri l'editor UV per il poligono e passa alla sezione Ossa.

../../_images/skel2d17.png

Non potrai ancora dipingere i pesi. Per farlo, è necessario sincronizzare l'elenco delle ossa dello scheletro con il poligono. Questa operazione va fatta una sola volta e manualmente (a meno che tu non modifichi lo scheletro aggiungendo, rimuovendo o rinominando le ossa). Ciò assicura che le informazioni di rigging siano mantenute nel poligono, anche se un nodo nello scheletro viene perso accidentalmente o lo scheletro viene modificato. Clicca sul pulsante "Sincronizza ossa con il poligono" per sincronizzare l'elenco.

../../_images/skel2d18.png

L'elenco delle ossa apparirà automaticamente. Normalmente, al poligono non è stato assegnato alcun peso. Seleziona le ossa a cui vuoi assegnare un peso e dipingile:

../../_images/skel2d19.png

I punti in bianco hanno un peso assegnato totale, mentre i punti in nero non sono influenzati dall'osso. Se lo stesso punto è dipinto di bianco per più ossa, l'influenza sarà distribuita tra di esse (quindi di solito non c'è molto bisogno di usare toni intermedi a meno che non si voglia perfezionare l'effetto di piegatura).

../../_images/skel2d20.gif

Dopo aver dipinto i pesi, animare le ossa (NON i poligoni!) produrrà l'effetto desiderato di modificare e piegare i poligoni adeguatamente. Poiché con questo approccio è necessario animare solo le ossa, il lavoro diventa molto più facile!

Ma non è tutto rose e fiori. Cercare di animare ossa che piegano il poligono spesso produce risultati inaspettati:

../../_images/skel2d21.gif

This happens because Godot generates internal triangles that connect the points when drawing the polygon. They don't always bend the way you would expect. To solve this, you need to set hints in the geometry to clarify how you expect it to deform.

Vertici interni

Apri nuovamente il menu UV per ogni osso e vai alla sezione Punti. Aggiungi alcuni vertici interni nelle regioni in cui prevedi che la geometria si pieghi:

../../_images/skel2d22.png

Ora, vai alla sezione Poligono e ridisegna i tuoi propri poligoni con più dettagli. Immagina che, man mano che i poligoni si piegano, tu debba assicurarti che si deformino il meno possibile, quindi sperimenta un po' per trovare la configurazione giusta.

../../_images/skel2d23.png

Una volta cominciato a disegnare, il poligono originale scomparirà e sarai libero di crearne uno tuo:

../../_images/skel2d24.png

Questa quantità di dettaglio solitamente va bene, anche se potresti desiderare un controllo più preciso sulla posizione dei triangoli. Sperimenta da solo finché non ottieni risultati soddisfacenti.

Nota: non dimenticare che anche i vertici interni appena aggiunti necessitano di una mappatura dei pesi! Vai di nuovo alla sezione Ossa per assegnarli alle ossa corrette.

Una volta che avrai tutto pronto, otterrai risultati decisamente migliori:

../../_images/skel2d25.gif