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 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 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 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 sono Comprende il processo di Lighting, esponenziale: cioè di 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 preview del giochi in esecuzione proprietà dell’oggetto selezionato lista di oggetti 3D presenti nella scena insieme di asset (script, Scena=Gerarchia modelli 3D, prefab ect) Unity - Scripting MONO compiler Linguaggi supportati JavaScript C# Integrazione BOO con Microsoft Visual Studio editor (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: [email protected]