Quando utilizzare un albero di fusione e una macchina a stati per l'animazione


13

Sono un esperto di sviluppo e ho realizzato il mio primo gioco con personaggi animati in 3D (in Unity) e faccio fatica a capire quando usare alberi di fusione e macchine di stato di animazione. Comprendo sia concettualmente, ma ho visto sia alberi di fusione che macchine a stati di animazione usate per l'animazione dei personaggi in una serie di tutorial sia da Unity che da altre fonti. Non sono sicuro di quando / perché uno sia migliore dell'altro, spero che qualcuno possa indicarmi la giusta direzione.

Il mio gioco è un gioco di ruolo in terza persona con WoW o KOTOR o Mass Effect (diversi sistemi che conosco ma le prospettive e gli stili di combattimento sono piuttosto vicini a un livello elevato). Ho tonnellate e tonnellate di animazioni per attacchi, blocchi, finte, morti, camminare, correre, saltare, sparare ecc. Ma non sono chiaro su come metterle insieme in modo naturale.

Ho visto alberi di miscele usati per la locomozione che ha senso per me quando provo a mantenere fluido il movimento del personaggio, ma non capisco come passare da quell'albero di fusione a uno stato di attacco e nulla di ciò che ho visto finora è passato oltre la locomozione (nessun attacco eccetera). Devo creare alberi di fusione dai miei stati di movimento per attaccare / morte / schivare gli stati? Ho più controllo usando solo macchine a stati? Sono un po 'cauto nei confronti delle macchine statali a causa del gonfiore di transizione che è così comune con loro e perché sospetto che ci sia un maggiore potenziale per il sequenziamento di animazione janky senza fusione.

Sto programmando di utilizzare il controller dei caratteri Unity e scrivere i miei script logici per guidarlo. Per l'IA userò gli agenti mesh mesh integrati. Le animazioni del controller di carattere sono gestite in modo diverso rispetto a quelle AI?

Qualsiasi approfondimento sarebbe più che benvenuto!

Grazie

Risposte:


21

Ho lavorato parecchio con Mecanim in Unity e sento di avere una buona comprensione di come funziona.

Come dici tu, i misti sono quasi sicuramente la strada da percorrere per fare locomozione. Gli alberi di fusione sono generalmente indicati quando si desidera unire continuamente animazioni per creare l'output finale. Ad esempio, dai al giocatore il controllo della velocità di esecuzione dell'avatar.

Tutte le singole azioni sono probabilmente migliori da mantenere come singoli stati, in cui è possibile passare. A seconda di quanto intenso sarà il tuo gioco, potresti anche considerare di utilizzare lo stato Qualsiasi come punto di partenza per andare rapidamente a saltare, attaccare ecc., Senza dover aspettare che finisca un'altra animazione.

La chiave per fondere un albero di fusione con la corsa è usare le transizioni . Non c'è magia per renderlo fantastico, solo un'attenta pianificazione e modifiche durante l'anteprima della transizione in Unity. Gran parte del lavoro si basa sull'animatore per avere le basi per transizioni di successo.

Qualcosa da tenere a mente quando si eseguono le transizioni è quello di trovare un ottimo equilibrio tra loro e dare al giocatore il feedback previsto. Potresti scoprire che una transizione rapida funziona meglio per la sensazione di gioco, mentre una transizione più lenta può sembrare migliore ma fa desiderare ai tuoi giocatori di buttare via il controller.

Di seguito è una configurazione piuttosto semplice, in cui le frecce indicano come vanno le transizioni. Le transizioni si basano su condizioni per entrare e terminano quando l'animazione termina o viene soddisfatta una determinata condizione. Questo significa anche che uno stato può andare in vari altri stati a seconda delle diverse condizioni.

Macchina statale

Quello che probabilmente noterai è che questo può rapidamente diventare una grande pila di "spaghetti", e un modo per evitare un po 'di questo pasticcio è quello di utilizzare qualsiasi stato che è anche incluso nell'immagine sopra.

Il Ogni Stato ha il vantaggio di essere in grado di transizione verso qualsiasi cosa, da un dato momento. Le transizioni possono ancora essere utilizzate per fondere l'animazione, tuttavia, stai lavorando un po 'più al buio su come apparirà. Durante la configurazione è possibile visualizzare l'anteprima da / verso vari stati.

Qualcosa che non hai menzionato è Layers , che può essere estremamente utile per ferire il tuo personaggio o per scavalcare la parte superiore del corpo per trasportare armi diverse usando la stessa animazione per le gambe di tutte le armi. Anche i livelli sono mescolati e possono essere regolati gradualmente, quindi un personaggio potrebbe essere più o meno ferito, per esempio. Un altro esempio potrebbe essere quello di sollevare le braccia di un personaggio in aria (se il personaggio si è arreso o qualcosa del genere), mantenendo tutte le altre animazioni uguali.

Ma impostare un controller di animazione solido non è un lavoro di 1 ora. Ci vuole un po 'di pianificazione e posso solo incoraggiarti a provare a creare una semplice macchina a stati con due attacchi, un salto, un minimo e un albero misto di camminata / corsa. Potresti anche trovare estremamente utili i comportamenti introdotti in Unity 5 per controllare o interagire con gli script.

Sono sicuro al 99% che l'IA si comporterà allo stesso modo del controller del lettore, dato che sono i parametri modificati attraverso script che controllano il modo in cui l'animazione passa da uno stato all'altro.

Sommario

  • Blend-alberi per locomozione.
  • Stati per singole azioni definite o stati di loop semplici.
  • Sottostati per l'organizzazione di una serie di stati, come un salto.
  • Transizioni per la fusione / transizione tra stati diversi (uno stato può anche essere un albero misto).
  • Livelli per l'override o l'aggiunta all'animazione di base.

Pensa quindi agli alberi di fusione come stati espansi, che agiscono anche in base ai valori dei parametri.

Un po 'di un lungo divagare, ma spero che illumini un po' l'argomento :)


Grazie per la tua fantastica descrizione, ora ha molto senso
weichsem,

Fantastico, felice di aiutarti :)
Morten Andersen
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.