TECNOLOGIE 3D: DALLA MODELLAZIONE - DB&KB Group · Processo di creazione di un movimento e/o...
Transcript of TECNOLOGIE 3D: DALLA MODELLAZIONE - DB&KB Group · Processo di creazione di un movimento e/o...
TECNOLOGIE 3D:
DALLA MODELLAZIONE
ALL’ANIMAZIONE
BOLOGNA, 10 DICEMBRE 2014
Ing. Matteo Di Carlo, INAF-OATe
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
...
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
Structure From Motion
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
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
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
Comprende il processo di Lighting, cioè di illuminazione della scena
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
Algoritmo
esponenziale: sono
necessarie delle
approssimazioni!
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?
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