TECNOLOGIE 3D: DALLA MODELLAZIONE ALL ANIMAZIONE BOLOGNA, 10 DICEMBRE 2014 Ing. Matteo Di Carlo, INAF-OATe
Topics Modellazione Rigging Animazione Rendering Game logic Interazioni Composizioni Scripting
Modellazione In genere è il primo step di qualsiasi elaborato Processo atto a definire una qualsiasi forma tridimensionale in uno spazio virtuale generata su computer (da wikipedia) Structure from motion e Image-based Modeling: processo attraverso il quale si ricostruisce una struttura 3D ad alta risoluzione, partendo da un insieme di immagini 2D di un unica scena; Utilizzo di sensori di profondità (kinect) e modellazione manuale tramite software dedicati; Estruzione artistica NURBS...
Structure From Motion Come persone percepiamo molte informazioni riguardo la struttura 3D attorno a noi: per fare ciò ci muoviamo attorno con la conseguenza di muovere gli oggetti attorno a noi (rispetto alla nostra prospettiva) nel tempo Gli algoritmi di SFM presentano lo stesso problema: trovare strutture, cioè capire I movimenti degli oggetti attorno a noi Per trovare delle corrispondenze tra immagini vengono estratte dei punti "caratteristici" (features), come ad esempio angoli, per poi tracciarli da un immagine all'altra. Quindi la struttura 3D è ricostruita dalle posizioni 3D di questi punti nel tempo Un altro approccio è quello di stimare la struttura geometrica 3D direttamente da un immagine 2D; il risultato viene poi unito con quelli di tutte le immagini prese
Modellazione tramite Curve «Curve e superfici sono oggetti come le mesh, ma differiscono perché sono espresse in termini di funzioni matematiche, invece che una serie di punti» (da wiki.blender.org) vertici di controllo poligono di controllo Buoni risultati usando meno memoria durante la modellazione, ma più tempo per il rendering
La Scena 3D Composizioni di «primitive» (mesh semplici), ossia di modelli matematici rappresentanti primitive geometriche Organizzazione ad albero Organizzazione «piatta» Mesh posizionate all interno della scena attraverso opportune trasformazioni (traslazione, rotazione, omotetia)
Animazioni Processo di creazione di un movimento e/o cambiamento di forma Letteralmente: «portare alla vita»
Animazioni Con l avvento dei computer, l animazione è divenuta un processo di generazione di immagini (CGI Computer generated imagery) Successione di Frame (min 12 per sec) Successore dello Stop-Motion
Rigging - Skeletal animation Carattere/Personaggio/Modello rappresentato in 2 parti Mesh: superficie usata per disegnare un modello Skeleton/Rig: insieme gerarchico di «ossa» usate per animare la mesh «Rigging is making our characters able to move. The process of rigging is we take that digital sculpture, and we start building the skeleton, the muscles, and we attach the skin to the character, and we also create a set of animation controls, which our animators use to push and pull the body around»; Frank Hanner, character CG supervisor of the Walt Disney
Rigging - Skeletal animation Rig Mesh
Blender As an animatic artist working in the storyboard department of Spider-Man 2, I used Blender ' s 3D modeling and character animation tools to enhance the storyboards, re-creating sets and props, and putting into motion action and camera moves in 3D space to help make Sam Raimi ' s vision as clear to other departments as possible. Anthony Zierhut, Animatic Artist, Los Angeles. Difficile da usare? Open source Principi di interfaccia utente Modalità di modifica e modalità oggetto Uso massivo della tastiera e quindi di scorciatoie da tastiera Spazio di lavoro completamente ad oggetti
Blender - Componenti principali 3D View Hierarchy Properties Timeline
Blender Object mode shortcuts
Blender Edit mode shortcuts
Esempio Blender Modelliamo un cubo..
Esempio Blender - Walk cycle Pose to pose
Blender Nato come applicazione interna dallo studio di animazione olandese NeoGeo, oggi è una degli strumenti più diffusi per lo sviluppo di scene 3D Supporto per una grande varietà di primitive geometriche Conversione da e verso numerosi formati per applicazione 3D Strumenti per gestire le animazioni Gestione dell'editing video non lineare Caratteristiche interattive attraverso il Blender Game Engine Diversi motori di rendering Possibilità di scripting pythoon
Concetti Cinematica e la cinematica inversa Studio del moto dei corpi Studio del moto dei corpi in base al solo posizionamento delle estremità Armature (scheletri) e la deformazione lattice Un lattice inserisce un oggetto in una gabbia, definita da un ristretto numero di vertici; quindi deforma l'oggetto originale in funzione delle modifiche avvenute sulla gabbia. Gestione dei keyframe Animazioni non lineari (NLA)
Rendering Il rendering è il processo di produzione dell'immagine finale a partire dal modello matematico del soggetto (scena): è un punto di vista della scena! Algoritmi di rendering implicano la proiezione dei modelli 3D su una superficie 2D Scanline renderers: operano oggetto per oggetto disegnando sullo schermo ogni poligono Ray tracers: operano pixel per pixel colorando il punto considerato analizzando l intersezione nella scena Algoritmo del pittore: dagli oggetti lontani a quelli vicini Z-buffering: un buffer per la coordinata Z Riproduzione di fenomeni visibili: shading, texture mapping, normal mapping, trasparency, etc etc
Illuminazione Texture mapping Processo di incremento dei dettagli di un modello 3D Assegnamo alle facce di una mesh, un colore o un immagine affinchè l algoritmo di mapping riesca ad elaborarne il colore Bump mapping Processo di aumento della complessità di un oggetto senza modificarne i poligoni, assegnando una texture utilizzata per modellare asperità, sporgenze o solchi Normal mapping Sostituzione delle normali della superficie della mesh; permette di simulare la complessità di un oggetto senza modificare il suo modello I pixel da visualizzare sullo schermo sono calcolati a partire dai pixel della texture assegnata
Shading Processo di determinazione dell ombreggiatura di un pixel Algoritmo Comprende il processo di Lighting, esponenziale: cioè di sono necessarie delle illuminazione della scena approssimazioni! Modelli matematico per stimare il riflesso di un oggetto (normale di una superficie) Equazione di rendering Luce uscente = luce emessa + luce riflessa Luce riflessa = luce che arriva da tutte le direzioni * coefficiente di riflessione * angolo di arrivo
Illuminazione e Shading
Interazioni e Game logic Blender permette inoltre di: Simulare effetti reali attraverso il motore delle collisioni (rigid body, soft body, cloth etc) Programmazione della logica Come realizzare un gioco in blender? Come realizzare un video in blender?
Esempio Blender - Bowling
Unity Strumento di creazione di giochi 3D o altri contenuti interattivi Compatibile con la maggior parte dei formati 3D in circolazione Supporto nativo per blender Possibilità di animazioni anche complesse
Unity Componenti principali insieme di oggetti 3D lista di oggetti 3D presenti nella scena proprietà dell oggetto selezionato preview del giochi in esecuzione insieme di asset (script, modelli 3D, prefab ect) Scena=Gerarchia
Unity - Scripting MONO compiler Linguaggi supportati JavaScript C# Integrazione con Microsoft Visual Studio editor BOO (Python) in sviluppo dal 2003
Unity Scene Tipicamente un gioco è composto da: Welcome / Main menù GUI play game / see high scores / read instructions / change input settings Level 1 / Level complete / Level 2 etc Mission 1/ Mission complete / Mission 2 etc Game Over / Save score Livelli/Missioni sono separati in scene Anche le GUI possono essere separate in scene specifiche
Unity - Asset Un asset è una risorsa per un progetto: Scene Contenuti multimediali (immagini, suoni, modelli 3d) C#/javascript file packages (collezione di altri asset compatta) Progetto Unity = Insieme di asset Asset driven development (Asset store)
Unity Creazione di un gioco Realizzare un gioco significa cercare e/o creare gli asset necessari In unity le scene sono composte da «GameObject» Un GameObject è un insieme di componenti più le trasformazioni base 3D (posizione, rotazione, omotetia) Un gameobject può diventare qualsiasi cosa aggiungendo componenti (luci, mesh, audio, camera etc) e contenere altri GameObject in gerarchia
Unity - Prefab Nella programmazione a oggetti si hanno le classi e si istanziano in oggetti a run-time In Unity esiste il concetto di PREFAB, cioè un template per un GameObject DESIGN TIME: è possibile trascinare il prefab nella scena (o gerarchia) per create l istanza RUN TIME: è possibile creare un GameObjetc istanziando dinamicamente un PREFAB
Esempio Unity - Space Shooter
Conclusioni Domande? Riferimento: matteo@oa-teramo.inaf.it