Warning: file_exists(): open_basedir restriction in effect. File(/tmp/rvpuuusc.txt) is not within the allowed path(s): (/membri/blendergameengineitalia/:/membri2/blendergameengineitalia/:/membri/.dummy/) in /membri/blendergameengineitalia/wp-includes/plugin.php(437) : runtime-created function on line 1

Warning: file_exists(): open_basedir restriction in effect. File(/tmp/rvpuuusc.txt) is not within the allowed path(s): (/membri/blendergameengineitalia/:/membri2/blendergameengineitalia/:/membri/.dummy/) in /membri/blendergameengineitalia/wp-includes/plugin.php(437) : runtime-created function on line 1

Le animazioni 4 – Animare un personaggio


Warning: file_exists(): open_basedir restriction in effect. File(/tmp/rvpuuusc.txt) is not within the allowed path(s): (/membri/blendergameengineitalia/:/membri2/blendergameengineitalia/:/membri/.dummy/) in /membri/blendergameengineitalia/wp-includes/plugin.php(437) : runtime-created function on line 1

Warning: file_exists(): open_basedir restriction in effect. File(/tmp/rvpuuusc.txt) is not within the allowed path(s): (/membri/blendergameengineitalia/:/membri2/blendergameengineitalia/:/membri/.dummy/) in /membri/blendergameengineitalia/wp-includes/plugin.php(437) : runtime-created function on line 1

Warning: file_exists(): open_basedir restriction in effect. File(/tmp/rvpuuusc.txt) is not within the allowed path(s): (/membri/blendergameengineitalia/:/membri2/blendergameengineitalia/:/membri/.dummy/) in /membri/blendergameengineitalia/wp-includes/plugin.php(437) : runtime-created function on line 1

Warning: file_exists(): open_basedir restriction in effect. File(/tmp/rvpuuusc.txt) is not within the allowed path(s): (/membri/blendergameengineitalia/:/membri2/blendergameengineitalia/:/membri/.dummy/) in /membri/blendergameengineitalia/wp-includes/plugin.php(437) : runtime-created function on line 1

Warning: file_exists(): open_basedir restriction in effect. File(/tmp/rvpuuusc.txt) is not within the allowed path(s): (/membri/blendergameengineitalia/:/membri2/blendergameengineitalia/:/membri/.dummy/) in /membri/blendergameengineitalia/wp-includes/plugin.php(437) : runtime-created function on line 1

Warning: file_exists(): open_basedir restriction in effect. File(/tmp/rvpuuusc.txt) is not within the allowed path(s): (/membri/blendergameengineitalia/:/membri2/blendergameengineitalia/:/membri/.dummy/) in /membri/blendergameengineitalia/wp-includes/plugin.php(437) : runtime-created function on line 1

Warning: file_exists(): open_basedir restriction in effect. File(/tmp/rvpuuusc.txt) is not within the allowed path(s): (/membri/blendergameengineitalia/:/membri2/blendergameengineitalia/:/membri/.dummy/) in /membri/blendergameengineitalia/wp-includes/plugin.php(437) : runtime-created function on line 1

Warning: file_exists(): open_basedir restriction in effect. File(/tmp/rvpuuusc.txt) is not within the allowed path(s): (/membri/blendergameengineitalia/:/membri2/blendergameengineitalia/:/membri/.dummy/) in /membri/blendergameengineitalia/wp-includes/plugin.php(437) : runtime-created function on line 1

Warning: file_exists(): open_basedir restriction in effect. File(/tmp/rvpuuusc.txt) is not within the allowed path(s): (/membri/blendergameengineitalia/:/membri2/blendergameengineitalia/:/membri/.dummy/) in /membri/blendergameengineitalia/wp-includes/plugin.php(437) : runtime-created function on line 1

Warning: file_exists(): open_basedir restriction in effect. File(/tmp/rvpuuusc.txt) is not within the allowed path(s): (/membri/blendergameengineitalia/:/membri2/blendergameengineitalia/:/membri/.dummy/) in /membri/blendergameengineitalia/wp-includes/plugin.php(437) : runtime-created function on line 1

Warning: file_exists(): open_basedir restriction in effect. File(/tmp/rvpuuusc.txt) is not within the allowed path(s): (/membri/blendergameengineitalia/:/membri2/blendergameengineitalia/:/membri/.dummy/) in /membri/blendergameengineitalia/wp-includes/plugin.php(437) : runtime-created function on line 1

Ultimo appuntamento con questa serie dedicata alle animazioni per i tuoi giochi in cui parlerò, come da titolo, dell’animazione di un personaggio, se voglio essere preciso dell’animazione dell’armatura di un personaggio. Prima di iniziare volevo spendere qualche riga sulle varie animazioni (si possono anche chiamare azioni) che si possono creare.

Un game developer ha quasi l’obbligo di giocare ai video giochi sia in commercio che gratis, questo per avere idee e analizzare in qualche modo come sono fatti i giochi; avrai notato nei giochi in terza persona, ma anche in molti 2D e RPG, ecc ecc, che i personaggi e i nemici hanno un numero di animazioni che gli permette di muoversi in modo fluido e abbastanza reale nel mondo di gioco. Molte di queste animazioni sono basilari come l’Idle (inattivo) quando non ci si muove, walk (camminata), run (corsa), swim (nuoto), ecc ecc. In quest’articolo spiegherò come realizzare le prime due (Idle e walk), ma puoi provare a creare le altre seguendo la tecnica che spiegherò. Per seguire questo tutorial scarica il file QUA, oppure se hai un modello con un rigging con Ik puoi usare il tuo.

Impostare il lavoro

Una volta scaricato il file e scompattato ci sono dei piccoli passaggi da fare per facilitarsi il lavoro. Ho incluso un file d’immagine con una camminata di riferimento, inseriscila come immagine di fondo, se non sai come fare segui i passaggi successivi, in caso salta questa procedura :

  1. Apri la Properties shelf con il tasto N.
  2. Scorri fino alla tab Background Image.
  3. Clicca sul pulsante Add Image, e poi su quello Open, e cerca l’immagine che ho incluso nel file.
  4. Nel menù a tendina Axis, il primo parametro, seleziona Left.
  5. Adesso inserisci i parametri come da figura nella parte finale della tab, per la posizione dell’immagine.

Uno strumento per velocizzare il flusso di lavoro è l’Outliner, da dove puoi selezionare le ossa che servono per creare le pose. A tale proposito ti faccio notare che il modello ha un rigging con IK (inverse kinematic), questo vuol dire che l’armatura ha dei punti di ancoraggio che una volta spostati muovono parte del modello senza dover selezionare e muovere più ossa, tali ossa si trovano sotto l’oggetto Armature e sono le ossa che mostro in figura, quelle sotto Controller.

Ultimo accorgimento sulla Time Line, nella parte destra c’è un menù a tendina con delle chiavi se cliccato mostra le varie opzioni che abbiamo anche quando premiamo la I con il mouse nella 3D view, seleziona LocRotScale, in questo modo ogni volta che premerai la I  (sempre con il mouse nella 3D view) verranno inseriti i KeyFrame in automatico, puoi anche cliccare sulla chiave che si trova subito alla destra del suddetto menù, è uguale. 

Animazione Idle

La Idle è un’animazione, come già detto, di quando il personaggio è inattivo, ovvero quando non si preme nessun tasto, viene implementata per evitare che il giocatore veda una figura ferma e poco reale, perché nella vita di tutti i giorni nessuno sta fermo come una statua. Si possono trovare diverse animazioni di questo tipo in un gioco e fatte eseguire in determinati momenti, per esempio una semplice può essere sostituita da una con un piede che martella come ad indicare che il personaggio sta aspettando. Nel nostro esempio ne realizzerò una simile.

Prima di tutto dai al modello una posizione normale rilassata, vai alla vista frontale (Tn1) e abbassa le braccia, seleziona mano IK.R e premi G per spostare la mano vicino al busto. Ruota la mano fino a dargli la posizione desiderata e fai la stessa cosa con l’altro braccio selezionando mano IK.L, la posizione non deve essere precisa. Adesso divarica leggermente le gambe selezionando prima piede IK.L e poi piede IK.R, in seguito ho abbassato un pò l’osso bacino IK e torace IK, in modo da fargli flettere un pò le gambe e le braccia, portando il torace un pò in avanti, la mia posizione è questa in figura

Quello che voglio ottenere è un movimento minimale di tutto il corpo. A questo punto, se la posa è di tuo gradimento puoi inserire il KeyFrame. Importantissimo (da tenere continuamente a mente) bisogna selezionare tutte le ossa prima di inserire il KeyFrame, quindi premi un paio di volte il tasto A e poi inserisci il KF. Sposta il cursore della Time Line al frame 31 e seleziona le ossa bacino IK e torace IK, premi G e Z e tenendo premuto lo Shift sposta l’osso leggermente verso l’alto, giusto un paio di millimetri. Adesso per fare tornare l’armatura come nel primo Keyframe senza dover impazzire troppo con cambia finestra dalla Time Line alla Dope Sheet, la finestra che ha come icona i tre puntini. Ti trovi davanti una serie di piccoli rombi, niente paura anche perché la userai spesso. Con il mouse posizionato sui rombi premi A per deselezionarli tutti, tenendo premuto ALT clicca col tasto destro del mouse sulla prima file, quella a sinistra, che rappresenta il primo KeyFrame. Come sai per copiare un elemento su Blender si preme Shift+D, anche questa finestra ha le stesse funzioni delle altre, quindi premi la combinazione di tasti e sposta la copia fatta al frame 61. Torna alla Time Line e cambia il frame finale dell’animazione a 60, questo perché il sessantunesimo file è uguale al primo e per un’istante l’animazione sembrerebbe fermarsi. Premi ora il play, oppure ALT+A, come puoi notare l’animazione viene eseguita e il personaggio sembra respirare, o qualcosa del genere, in ogni caso non è fermo come una statua e questo è già qualcosa.

Animazione walk (camminata)

Per aggiungere una nuova animazione torna alla finestra Drop Sheet e nella barra del menù si trova un menù a tendina dove poter scegliere la modalità della finestra, a noi interessa l’opzione Action Editor, come mostro nella figura seguente

Nello spazio a destra delle due frecce puoi rinominare l’animazione attuale in idle.

Sulla destra ci sono due pulsanti, Push Down e Stash, premi Stash per conservare l’azione attuale (idle) per usarla in seguito, a questo punto appare il pulsante New, premilo per aggiungere una nuova azione e rinominala subito walk.

Adesso che hai un foglio bianco puoi iniziare l’animazione, puoi restare su questa finestra o se gradisci spostarti sulla Time Line, a tua scelta, nota che dalla Dope Sheet puoi modificare i KeyFrame nel tempo quindi rallentare o accelerare l’animazione. E ora di usare l’immagine di riferimento, premi CTRL+Tn3 per passare alla vista da sinistra. Seleziona l’osso piede IK.R e sposta il piede come nella figura usando il tasto G, la punta del piede non punta nella direzione giusta, ruota l’osso sull’asse X. Fai la stessa cosa con il piede IK.L. Avrai notato che il modello è come sospeso in aria, questo perché bisogna aggiustare l’osso controller verso il basso in modo da fare poggiare i piedi sulla linea dell’asse Y, quindi selezionalo e spostalo sull’asse Z. Se noti qualche imperfezione prova ad aggiustarla. Adesso seleziona le ossa bacino IK e torace IK e ruotali leggermente sull’asse X, come puoi notare nella figura di riferimento il disegno è leggermente piegato in avanti. E’ ora di posizionare le braccia attraverso le ossa mano IK.R e mano IK.L, nella figura il braccio colorato di nero è quello sinistro. Quando sposti le ossa delle mani c’è un pò da modificare l’angolatura, prova a ruotarle in modo da trovare la posizione che ti piace, la mia è la seguente

A questo punto seleziona tutte le ossa (tasto A, non dimenticarlo è un passaggio indispensabile) e premi I. Prima posizione inserita, adesso passiamo alla prossima. Invece di spostare il modello che causerebbe un’errore nell’animazione una volta registrati i KeyFrame, fai scrollare sull’asse X l’immagine o immetti il valore 0.950 nell’apposito spazio visto all’inizio del tutorial; il punto di riferimento principale è la testa del modello con la testa delle varie posizioni del disegno. Sposta il cursore della Dope Sheet (o della Time Line se hai cambiato) al frame 11 ed esegui gli spostamenti come hai fatto fino ad ora. Questa procedura, ovviamente, richiede tempo e non sto a scriverla tutta, così facendo puoi imprimere nella tua mente questi concetti al meglio; ricorda di selezionare tutte le ossa prima di inserire il KeyFrame, perché bisogna registrare la posizione di tutte le ossa anche quelle che non hai spostato mai. Un piccolo accorgimento, le dita dei piedi non sono perfettamente in linea con l’IK del piede, quindi spesso tocca ruotarle manualmente, per farlo devi selezionare l’osso che evidenzio nell’immagine successiva

Una volta completate le posizioni fino a quella in verde (UP) puoi notare che l’ultima posizione è uguale alla prima ma con gambe e braccia opposti, a questo punto Blender ci viene in aiuto con uno strumento di questa finestra indispensabile per guadagnare tempo e lavorare con precisione. Scorrendo la barra del menù della finestra Dope Sheet, puoi notare tre icone con l’immagine di una cartelletta con delle frecce, la prima serve a copiare i Keyframe, la seconda a incollarli, e fino a qua niente di particolare, la terza invece incolla i Keyframe nella posizione opposta.

Deseleziona tutti i KeyFrame e seleziona solo la prima riga a destra (ALT+tasto destro del mouse), adesso premi sulla prima icona (copia), sposta il cursore al frame 41 e premi la terza icona (incolla inverso). Una magia che serve a risparmiare tanto tempo e a fare un’animazione abbastanza precisa. Avrai capito che non c’è più bisogno di spostare ossa, ma di copiare e incollare tutti i KeyFrame già creati in sequenza, la seconda fila al frame 51, la terza al 61 e la quarta al 71 e la prima al 81, evitando di far riprodurre l’ultimo frame per il motivo già spiegato. Anche se l’animazione non è perfetta non ha nessuna importanza ai fini di questo tutorial, l’importante è che tu abbia capito qual’è il procedimento per crearne una, facendo pratica sicuramente potrai creare animazioni sempre più precise e complesse. Ultima cosa se vai sulla Time Line puoi cambiare il frame finale e riprodurre l’animazione per vedere com’è venuta. Come puoi notare dalla mia animazione non è venuta perfetta, bisogna lavorarci un pò per renderla decente. 

Concludendo questo lungo articolo e questa serie di tutorial spero tu abbia appreso qualcosa di nuovo, ricorda di fare pratica e di sperimentare.


Warning: file_exists(): open_basedir restriction in effect. File(/tmp/rvpuuusc.txt) is not within the allowed path(s): (/membri/blendergameengineitalia/:/membri2/blendergameengineitalia/:/membri/.dummy/) in /membri/blendergameengineitalia/wp-includes/plugin.php(437) : runtime-created function on line 1

Warning: file_exists(): open_basedir restriction in effect. File(/tmp/rvpuuusc.txt) is not within the allowed path(s): (/membri/blendergameengineitalia/:/membri2/blendergameengineitalia/:/membri/.dummy/) in /membri/blendergameengineitalia/wp-includes/plugin.php(437) : runtime-created function on line 1

Warning: file_exists(): open_basedir restriction in effect. File(/tmp/rvpuuusc.txt) is not within the allowed path(s): (/membri/blendergameengineitalia/:/membri2/blendergameengineitalia/:/membri/.dummy/) in /membri/blendergameengineitalia/wp-includes/plugin.php(437) : runtime-created function on line 1

Warning: file_exists(): open_basedir restriction in effect. File(/tmp/rvpuuusc.txt) is not within the allowed path(s): (/membri/blendergameengineitalia/:/membri2/blendergameengineitalia/:/membri/.dummy/) in /membri/blendergameengineitalia/wp-includes/plugin.php(437) : runtime-created function on line 1

Warning: file_exists(): open_basedir restriction in effect. File(/tmp/rvpuuusc.txt) is not within the allowed path(s): (/membri/blendergameengineitalia/:/membri2/blendergameengineitalia/:/membri/.dummy/) in /membri/blendergameengineitalia/wp-includes/plugin.php(437) : runtime-created function on line 1

Warning: file_exists(): open_basedir restriction in effect. File(/tmp/rvpuuusc.txt) is not within the allowed path(s): (/membri/blendergameengineitalia/:/membri2/blendergameengineitalia/:/membri/.dummy/) in /membri/blendergameengineitalia/wp-includes/plugin.php(437) : runtime-created function on line 1