1 / 27

Easy Animations

Easy Animations. Software di creazione e gestione di semplici animazioni. Scenario . Attività come il Motion Capture ( MoCap ) generano file specifici di animazione e descrizione di posizioni ( keyframe );

zea
Download Presentation

Easy Animations

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Easy Animations Software di creazione e gestione di semplici animazioni

  2. Scenario • Attività come il Motion Capture (MoCap) generano file specifici di animazione e descrizione di posizioni (keyframe); • Questi dati possono essere estrapolati ed elaborati per ricreare una propria animazione partendo dai tasselli di base; • Il materiale deve essere utilizzabile anche senza una conoscenza specifica della struttura di una posa o di una animazione su file. • Sono disponibili una serie di file di descrizione di pose semplici per iniziare il lavoro. • Necessità di un software che renda facile la generazione di nuove animazioni, la gestione e la modifica di quelle esistenti tramite una rappresentazione interna semplificata.

  3. Obiettivi • Rappresentazione interna di un’animazione semplice da esplorare; • Creazione di un linguaggio semplice ed intuitivo per la descrizione di una animazione suddiviso in due parti: • Definizione di un’animazione; • Definizione di una posa singola. • Realizzazione di un interprete in grado di fornire un forte supporto al controllo semantico delle animazioni in ingresso; • Creazione di un’interfaccia grafica semplice ed efficace come supporto alla creazione, alla gestione ed alla modifica intuitiva delle animazioni presenti.

  4. Analisi del Problema • Il progetto prevede due compilatori che prendono in ingresso una sequenza di caratteri capaci di: • Riconoscere ed analizzare un’animazione; • Riconoscere ed analizzare una posa. • Entrambi devono effettuare i relativi controlli sintattici e semantici; • Se tali operazioni vanno a buon fine viene generata una rappresentazione interna dell’oggetto analizzato ed una sua eventuale struttura ad albero di supporto; • In caso di errori questi verranno catalogati per natura e segnalati nella maniera più dettagliata possibile.

  5. Strumenti • Java 1.7.0 come valido linguaggio multipiattaforma; • EclipseJunocome ambiente di sviluppo; • JavaCCEclipse Plug-in 1.5.27 come strumento per la generazione automatica del parser del linguaggio; • J.T.B 1.4.7 come strumento di supporto alla generazione dei Visitor associati ad una animazione ed una posa. • WindowBuilderEclipse Plug-in come valido strumento di supporto alla creazione di interfacce grafiche;

  6. Un’Animazione a parole Prima ancora della modellazione della nostra grammatica e del nostro linguaggio è necessario parlare di rappresentazione interna di animazione: • Un’Animazione è un «oggetto» definito da un nome unico; • Deve avere una durata; • Deve avere almeno una Posa; • Può avere delle sotto-animazioni; Potremmo modellare un numero di proprietà arbitrarie all’interno di una animazione senza problemi.

  7. Una Posa a parole Per definire un’Animazione è necessario dare i concetti base ed una descrizione interna di una Posa: • Una Posa è un «oggetto» definito da un nome unico; • Deve contenere un numero prestabilito di «bones»; • Ogni Bone deve essere costituito da due posizioni nello spazio 3d.

  8. Un primo esempio (1/2) AnimationtestAnimation Duration: 12 frames SubAnimations { AddAnimationwavingpersonatframe 0 Duration: 2 frames Poses { Add Pose standing at frame 0 { //Posedef } Add Pose wavingat frame 1 { //Posedef } }; AddAnimationrunningpersonat frame 2 Duration: 2 frames Poses { Add Pose standing at frame 0 { //Posedef } Add Pose runningatframe 1 { //Posedef } }; Poses { Add Pose wavingat frame 4 { //Posedef } Add Pose standing at frame 5 { //Posedef } }

  9. Un primo esempio (2/2) Per quanto riguarda la definizione di una Posa vera e propria possiamo esaminare un file a parte incaricato di salvare questi dati. Pose waving { HEAD: ( 0.5,0.1,0.5 ),( 0.5,0.2,0.5 ) CHEST: ( 0.5,0.2,0.5 ),( 0.5,0.5,0.5 ) R SHOULDER: ( 0.5,0.2,0.5 ),( 0.4,0.25,0.5 ) L SHOULDER: ( 0.5,0.2,0.5 ),( 0.6,0.25,0.5 ) UPPER R ARM: ( 0.4,0.25,0.5 ),( 0.3,0.2,0.5 ) LOWER R ARM: ( 0.3,0.2,0.5 ),( 0.2,0.05,0.5 ) UPPER L ARM: ( 0.6,0.25,0.5 ),( 0.6,0.36,0.5 ) LOWER L ARM: ( 0.6,0.36,0.5 ),( 0.6,0.58,0.5 ) R HIP: ( 0.5,0.5,0.5 ),( 0.43,0.55,0.5 ) L HIP: ( 0.5,0.5,0.5 ),( 0.57,0.55,0.5 ) UPPER R LEG: ( 0.43,0.55,0.5 ),( 0.43,0.8,0.5 ) LOWER R LEG: ( 0.43,0.8,0.5 ),( 0.43,1.0,0.5 ) UPPER L LEG: ( 0.57,0.55,0.5 ),( 0.57,0.8,0.5 ) LOWER L LEG: ( 0.57,0.8,0.5 ),( 0.57,1.0,0.5 ) } Il tutto corrisponde ad una definizione compatta di una serie di «Bones» all’interno di uno spazio tridimensionale che vanno a formare una Posa.

  10. La Grammatica (1/4) La grammatica che descrive l’Animazione è divisa in quattro sezioni: • Nome dell’Animazione; • Durata dell’Animazione; • Eventuali sotto Animazioni; • Pose che la costituiscono.

  11. La Grammatica (2/4) Scope Animation::= "Animation" AnimationNameAnimationDef Definizione Animation AnimationDef::="Duration:" Duration( "SubAnimations" <LPAR > (SubAnimation)+ < RPAR >)? "Poses" < LPAR > (Pose)+ <RPAR > (";" |< EOF >) Definizione Sub Animation SubAnimation::="Add" "Animation" AnimationName"at" "frame" FrameAnimationDef

  12. La Grammatica (3/4) Definizione Pose Pose ::= "Add" "Pose" PoseName "at" "frame" FramePoseDef Struttura Pose PoseDef ::= < LPAR > (BoneNameBoneDef)+ < RPAR > Definizione Bone BoneDef ::= Position","Position

  13. La Grammatica (4/4) Definizione Position Position ::= "("< FLOAT > "," < FLOAT > "," < FLOAT >")" Valori di input < NUM : "0" | [ "1"-"9" ] ([ "0"-"9" ])* > < FLOAT : [ "0"-"9" ] ([ "0"-"9" ])* ("." [ "0"-"9" ] ([ "0"-"9" ])*)? > < LPAR : "{" > < RPAR : "}" > < STRING : ( ["a"-"z","A"-"Z","\'","_",".","!","?","(",")","0"-"9","\u00e0","\u00F2","\u00F9","\u00E8","\u00E9","\u00EC"] )+> Token Frame ::= < NUM > AnimationName ::= (< STRING >)+ PoseName ::= (< STRING >)+ Duration ::= < NUM > "frames"

  14. Il Linguaggio La Grammatica, secondo la classificazione di Chomsky, è di tipo 2 (context – free). Infatti le produzioni sono vincolate alla forma A → α con α є (VT ∪ VN)*, A є VN Il linguaggio è anch’esso di tipo 2 in questo caso in quanto è presente self – embedding ovvero sono presenti simboli autoinclusivi del tipo: A → β A δ dove A є VN, β ,δ є V+ Il linguaggio generato risulta LL(1) in quanto non genera la stringa vuota e gli insiemi di startersymbols corrispondenti alla parte destra delle produzioni alternative di uno stesso metasimbolo sono tra loro disgiunti.

  15. Controlli semantici (1/3) Una struttura dati come quella di un’Animazione è prona a numerosi tipi di errori semantici: • Il nome di ogni Animazione deve essere unico; • Ogni frame di un’Animationpuò essere occupato da al più un elemento (Pose o SubAnimation che sia); • Ogni elemento di un Animationdeve essere posizionato all’interno dei margini temporali della stessa; • Ogni Animationdeve avere una durata sufficiente a contenere tutti i suoi sotto elementi;

  16. Controlli semantici (2/3) Allo stesso modo è necessario controllare semanticamente anche l’integrità delle Pose caricate nel sistema: • Il nome di ogni Posa deve essere unico; • Ogni Bone deve essere unico all’interno di una Pose; • Ogni Pose deve contenere un set completo di Bones relativo alla rappresentazione di una figura umanoide.

  17. Controlli semantici (3/3) Tutti i controlli semantici vengono effettuati durante la generazione della struttura dati associata ad Animazioni e Pose che si accinge a caricare da file. Nel caso le operazioni non vadano a buon fine viene generato un errore semantico ed il caricamento viene annullato segnalando all’utente il problema. Errore Semantico Errore Sintattico

  18. L’albero astratto Animation Ogni Animazione viene preservata nel sistema sotto forma di albero generato secondo lo schema seguente: • Ogni Animazione e sotto-Animazione è un nodo dell’albero; • Ogni Posa è una foglia dell’Animazione a cui appartiene; • Ogni Duration è un’informazione legata alla sua Animation; • Ogni Bone è un’informazione legata alla sua Posa. Duration Animation Pose Duration Bones Animation Pose Animation Duration Bones Duration Pose Pose Bones Bones Pose Pose Bones Bones

  19. Architettura (1/2) Per affrontare meglio lo svolgimento del progetto questo è stato diviso in due macro sezioni: • La prima relativa alla grammatica delle Animations ed al programma vero e proprio; easyAnimations Contiene tutte le classi relative alla rappresentazione interna dei dati ed il main stesso. easyAnimations.gui Contiene tutte le classi relative alle interfacce grafiche. exceptions Contiene tutte le classi che rappresentano eccezioni di tipo semantico all’interno dell’applicazione. parser.syntaxtree (Autogenerato) Contiene tutte le classi generate da JTB che rappresentano i nodi esplorabili dai visitors. parser (Autogenerato) Contiene la grammatica relativa all’Animation e tutte le classi generate da JavaCC per fare il parsing di un file in input. parser.visitor (Autogenerato) Contiene i visitors vuoti generati da JTB. E’ presente il visitorrelativo al controllo semantico e la rappresentazione interna dell’Animation.

  20. Architettura (2/2) Per affrontare meglio lo svolgimento del progetto questo è stato diviso in due macro sezioni: • La seconda relativa alla grammatica e rappresentazione interna delle Poses. poseParser.syntaxtree (Autogenerato) Contiene tutti i file generati da JTB per la rappresentazione ad albero del file di ingresso dopo aver effettuato il parsing. poseParser (Autogenerato) Contiene la grammatica relativa alla Pose e tutti i file generati da JavaCC per il parsing. poseParser.visitor (Autogenerato) Contiene tutti i visitor vuoti generati da JTB nonché il visitor per il controllo semantico e la rappresentazione interna della Pose.

  21. Capacità Software Il software implementato garantisce la capacità di: • Generare nuove animazioni partendo da Pose già presenti nel file systemed Animazioni create in precedenza; • Modificare tali Animazioni in un secondo momento tramite l’interazione con un albero rappresentante le stesse. Il software può essere facilmente ampliato con l’inserimento di una quantità di servizi di comodo come la stampa di Animazioni in altri formati e l’interazione con un database. In questo caso si è voluta rivolgere l’attenzione alla capacità di gestione nel complesso lasciando i dettagli ad una seconda analisi.

  22. Interfaccia Grafica (1/3) L’interfaccia grafica punta ad essere più immediata e semplice possibile per quanto riguarda la modifica in tempo reale dell’Animazione sulla quale si sta lavorando. La GUI risulta quindi molto intuitiva e ricca di materiale grafico al supporto della gestione dei dati salvati su file. La schermata principale è divisa in diversi settori: • Area di testo per la lettura del file di input; • Area grafica per la generazione dell’albero dell’Animazione; • Area grafica per la visualizzazione di una Posa selezionata; • Area di testo per effettuare il log delle operazioni intraprese.

  23. Interfaccia Grafica (2/3) Area di testo file di input Area grafica generazione e modifica albero Animation Area grafica visualizzazione Poses Area di testo log

  24. Interfaccia Grafica (3/3) Un discorso a parte vale per la creazione di nuove Animazioni in quanto è presente una interfaccia specifica molto semplice da usare. Permette l’inserimento di sottoAnimazioni e Pose anche specificando il frame di interesse ed effettua a sua volta i controlli semantici del caso.

  25. Collaudo Il sistema è stato collaudato con l’inserimento di opportuni file di Animazione in input per : • Verificare la corretta segnalazione di errori sintattici; • Verificare la corretta segnalazione di errori semantici; • Verificare la corretta generazione e visualizzazione dell’albero; • Verificare la corretta visualizzazione della Posa selezionata. Inoltre è stata verificata la corretta modifica di albero e struttura dati interna a fronte di una modifica all’albero. Infine è stata verificata la corretta generazione di una nuova Animazione tramite l’interfaccia apposita.

  26. Sviluppi futuri Il sistema offre numerosi spunti dai quali partire per aggiungere nuove funzionalità, alcune delle quali decisamente più interessanti: • Possibilità di creare file di Pose partendo da una figura umanoide possibile da modificare grazie all’interazione con le sue Bones tramite il mouse; • Capacità di leggere Pose da file di input di formato differente come quello relativo al Motion Capture (MoCap); • Capacità di generare un file riassuntivo di output facile da interpretare in un qualsivoglia formato; • Capacità di interagire con un database di Pose e Animazioni; • Possibilità di interagire direttamente con programmi atti all’utilizzo di tali animazioni come Blender.

  27. Grazie per l’attenzione

More Related