Informatica Grafica ][ Animazioni in Unreal Dopo aver esportato una Mesh con scheletro, e' possibile trasferire anche animazioni che la riguardino. Lo strumento con cui si esportano le animazioni, e' lo stesso utilizato per le Mesh con scheletro. Anche esso si richiama utilizzando il comando MEL axmain. Marco Gribaudo marcog@di.unito.it Si comincia caricando in Maya l'animazione del personaggio. Si richiama il comando MEL axmain, e si apre il menu per l'esportazione di personaggi ed animazioni. Per prima cosa si imposta il nome del file in cui inserire le animazioni nella casella Animation File Name. La cartella in cui verrano esportate le animazione e' la stessa in cui si e' salvato il personaggio (impostata premendo il pulsante Browse). Ogni file di animazione e' in grado di contenere piu' animazioni per lo stesso personaggio. Lo strumento di esportazione permette di creare nuovi file, oppure di aggiungere nuove animazioni a quelli esistenti.
Le animazioni devono essere "digerite" prima di poter essere esportate. Bisogna per pima cosa impostare il nome con cui si vorra' identificare la sequenza considerata nel gioco, ed i suoi fotogrammi iniziali e finali. Si preme quindi il pulsante Digest animation, per memorizzare l'animazione. In questa fase, lo strumento "campiona" la sequenza, traducendo nel formato interno di Unreal le chiavi impostate sul personaggio in FK, IK o FBIK. Nome Animazione Fotogramma iniziale - finale A questo punto e' possibile richiamare lo strumento con cui si gestiscono le animazioni, premendo il pulsante Animation Manager. L'Animation Manager, mostra tutte le animazioni digerite, e quelle presenti del file generato. Animazioni digerite Animazioni nel file Qualora si voglia aggiungere nuove animazioni ad un file precedentemente creato, e' possibile importarlo premendo il pulsante Load. Si selezionano le animazioni che si vuole inserire nel file di uscita, e si preme il pulsante a forma di freccia.
L'esportazione puo' essere completata permendo il pulsante Save. In Unreal, le animazioni vengono importate dalla stessa finestra in cui si caricano le Mesh con scheletro (Animation Browser): Dopo aver selezionato il personaggio per cui si voglio caricare le animazioni, si preme il pulsante Import skeletal animation. Anche se Unreal non prevede la suddivisione in gruppi dei pacchetti di personaggi, le animazioni possono essere suddivise in Animation Set. Al momento dell'importazione, occorre specificare l'animation set in cui inserire le sequenze presenti nel file importato, attraverso il campo Name. Unreal elenca sulla sinistra le animazioni caricate. Il nome con cui vengono identificate corrisponde a quello che e' stato loro assegnato quando sono state digerite.
E' possibile riprodurre l'animazione premendo i pulsanti stile videoregistratore presenti in fondo alla finestra. Animazioni presenti in altri file possono essere aggiunte all' Animation Set selezionato premendo il pulsante Import Additional animation data. In questo caso e' necessario specificare il nome dell'animation Set a cui si vogliono aggiungere le animazioni. L'elenco delle animazioni disponibili per il personaggio nell'animation Set selezionato, viene aggiornato con le nuove animazioni caricate. Infine, bisogna collegare l'animation Set alla Mesh facendo click sul pulsante Link animation to mesh. In Unreal, le animazioni delle Mesh scheletriche, sono intese come componenti utilizzabili per muovere personaggi gestiti da algoritmi di intelligenza artificiale. Per poter riprodurre animazioni nel gioco, occorre quindi utilizzare alcune funzionalita' avanzate di Unreal, studiate per l'implementazione di specifici algoritmi di AI.
In questo corso utilizzeremo i meccanismi delle Scripted Sequence e dei Triggers. Una Scripted Sequence, e' una sequenza di istruzioni che un personaggio puo' eseguire. Tra queste istruzioni vi e' anche quella che avvia la riproduzione di un'animazione. Si inizia inserendo nella scena un oggetto di classe Actor -> Keypoint -> AiScript -> ScriptedSequence. Un Trigger e' invece un oggetto capace di intercettare i movimenti del giocatore e scatenare eventi in corrispondenza. Questi eventi possono essere adoperati per avviare una Scripted Sequence. Una Scripted Sequence viene visualizzata nella scena con una apposita icona. Ogni Scripted Sequence possiede un identificatore, con cui puo' essere agganciata ai personaggi nella scena. L'identificatore si trova nel campo Tag della casella Events nelle sue proprieta ed e' scelto in modo arbitrario dal level desgner. Si seleziona il personaggio, e si inserisce nella proprieta' AIScriptTag della casella AI, lo stesso nome assegnato al Tag della Scripted Sequence. In questo modo si lega il personaggio alla Scripted Sequence corrispondente. Unreal visualizza questo legame collegando l'icona della Scripted Sequence al personaggio. ATTENZIONE: il collegamento e' visibile solamente quando il personaggio corrispondente e' selezionato.
A questo punto si deve scrivere la sequenza di azioni che guidera' il personaggio. Si inizia visualizzando le proprieta' dello Scripted Sequence... Si seleziona la voce ScriptedController dal menu' a tendina Controller Class della casella AIScript per abilitare l'esecuzione delle azioni. A questo punto si inseriscono in ordine tutte le azioni che il personaggio dovra' eseguire. Per aggiungere una nuova azione si preme il pulsante Add. Utilizzando il menu' a tendina a fianco di New, si seleziona il tipo di azione che si vuole inserire. La prima azione sara' un WaitForEvent per attendere che si verifichi un evento esterno. Per confermare l'immissione dell'azione si deve premere il pulsante New. Ogni azione possiede parametri che ne specificano il funzionamento. WaitForEvent richiede il nome dell'evento da attendere - una etichetta arbitraria (scelta dal level designer) che verra' utilizzata nel Trigger che avviera' l'animazione. Questa etichetta deve essere inserita nella casella ExternalEvent.
La seconda azione e' quello con cui si riproduce l'animazione: PLAYANIM. Si immette utilizzando lo stesso procedimento visto adoperato per l'azione WaitForEvent. In questa azione bisogna inserire nel parametro BaseAnim il nome dell'animazione da riprodurre. Deve essere un nome di sequenza scelto tra quelli presenti nell'animation Set della Mesh governata dallo script. Infine si inserisce una azione GotoAction, per ripetere l'intero script. In questo caso il parametro da specificare corrisponde al numero di azione a cui saltare (0 per ripetere lo script dall'inizio). Si inserisce il Trigger che generera' l'evento che avviera' l'animazione. Si seleziona un oggetto di classe Actor -> Tirggers -> Trigger nella finestra Actor Classes e lo si piazza sulla scena. Un Trigger viene visualizzato sotto forma di interruttore in UnrealEd, ma risulta invisibile durante il gioco. Generalmente si posiziona sopra una pedana o qualche altro oggetto capace di attirare l'attenzione del giocatore.
Per semplificare la creazione della scena, e' possibile visualizzare un Trigger anche durante il gioco impostando a false la sua proprieta' bhidden nella casella Advanced. Il Trigger deve scatenare l'evento atteso dalla Scripted Sequence. Per fare cio' si inserisce l'etichetta prima specificata nello Script, come valore della proprieta' Event. Compilando il mondo, UnrealEd segnalera' un errore. Tale problema e' pero' dovuto solamente ad baco di UnrealEd, e non pregiudica il funzionamento del livello. Per tanto non deve essere preso in considerazione. Provando il livello, camminando sul Trigger, il personaggio eseguira' l'animazione specificata dallo Script.