Modellazione 3D Trasformazioni Spaziali

of 27 /27
Uni Pisa - Modellazione 3D 16/05/2014 Marco Tarini - 2014 1 Modellazione 3D Trasformazioni Spaziali Marco Tarini Marco Tarini Trasformazioni spaziali: intro Concetto molto generale… Le abbiamo usate in molte strutture dati: nello scene graph (trasf. di modellazione) nelle animazioni cinematiche nelle animazioni rigged (skeleton based) Vengono usate in molti processi nel rendering, dalla GPU trasformazione di mollezione, di vista, di proiezione trasformano geometria e normali delle mesh renderizzate nella modellazione, interattivamente, dall’artista x deformare un’intero oggetto o una sua sottoparte etc etc

Embed Size (px)

Transcript of Modellazione 3D Trasformazioni Spaziali

Microsoft PowerPoint - rappr_rotazioni.pptxMarco Tarini - 2014 1
Marco TariniMarco Tarini
Trasformazioni spaziali: intro
Concetto molto generale…
Le abbiamo usate in molte strutture dati: nello scene graph (trasf. di modellazione)
nelle animazioni cinematiche
Vengono usate in molti processi nel rendering, dalla GPU
trasformazione di mollezione, di vista, di proiezione
trasformano geometria e normali delle mesh renderizzate
nella modellazione, interattivamente, dall’artista x deformare un’intero oggetto o una sua sottoparte
etc etc
Marco Tarini - 2014 2
Punti, Vettori, Transformazioni Spaziali
Eric Lengyel
p
f
f
f
q
Marco Tarini - 2014 3
Dare ad ogni oggetto il suo sistema di coordiante privato:
il suo Object Space;
Marco Tarini - 2014 4
Spazio Oggetto
spazio oggetto
x
y
1
2
3
-1
-2
-3
Marco Tarini - 2014 5
1.5
x
y
1.5
Marco Tarini - 2014 6
x
y
x
y
1
1
11
5.8
coordinate in spazio oggetto
coordinate in spazio mondo
9.71
1
4.2
Marco Tarini - 2014 7
coordiante affini di p : (x,y,z,1)
DIREZIONI / SPOSTAMENTI
coordiante affini di v : (x,y,z,0)
Classi utili di trasformazioni spaziali
Isometrie (rototraslazione)
Marco Tarini - 2014 8
Lineari (trasformaz. affini)
Rotaz + Traslaz + Scaling uniforme
Rotaz + Traslaz
con ultima riga: 0,0,0,1
cambio di frame
da: spazio di origine a: spazio di destinazione
trasf lineari: cioè t.c.
(in 2D: di un triagolo in un triangolo)
)()()( 1010
Marco Tarini - 2014 9
Trasformazioni affini: cosa fanno
non ha senso)
rispetto a combinazioni…
non includono:
defomazioni prospettiche
Marco Tarini - 2014 10
nota: questi controlli familiari (piu’ la traslazione, effettuata con drag-and-drop)
sono sufficienti a specificare ogni possibile trasf affine in 2D
[DEMO]
Controllers (concetto generale)
aka: handles (maniglie)
Elementi delle GUI per specificare… cose
Esempio: handles per specificare le trasf affini in 2D:
rotaz
Marco Tarini - 2014 11
Classi utili di trasformazioni
Rotaz + Traslaz + Scaling uniforme
Rotaz + Traslaz
Una classe di trasformazioni (senza nome) molto usata in pratica
Trasformazioni ottenibili combinando: rotazioni
(un altro sottoinsieme delle trasformazioni affini)
Utile in pratica
Bruttina in teoria non e’ chiusa rispetto a combinazione :-O :-(
non mantiene… angoli, nulla
Marco Tarini - 2014 12
Reminder
Tutte e sole le isometrie (trasf. rigide) = roto-traslazioni = rotazioni (*) + traslazioni
Rotazioni (*) : quante possibili?
come rappresentarle (internamente)?
Uni Pisa - Modellazione 3D 16/05/2014
Marco Tarini - 2014 13
R0
R1
R2
R3
R4
R5
R6
R7
R8
R9
R10
R11
R12
R13
R0
Marco Tarini - 2014 14
Reppresentazioni possibili per rotazioni
Buone (o meno) per: compattezza
quanto sono prolisse in memoria?
facilità di applicazione quanto è oneroso applicare ad uno (o ventimila) punti / vettori?
interpolabilità è possibile/facile trovare un’inerpolazione fra N rotazioni date?
quanto è “buono” il risultato
combinabilità è facile trovare la risultante di N rotazioni date,
eseguite in successione?
Per paragone:
(verificare!)
Marco Tarini - 2014 15
Modi per passare da una rappr. all’altra?
Perché è utile interpolare rotazioni:
esempio: animazioni
tempo 100
tempo 200
tempo 150
Marco Tarini - 2014 16
esempio: scenegraph
esempio: scenegraph
Rc R0
R1 R2
Marco Tarini - 2014 17
Reppresentazioni principali delle rotazioni
dopotutto, una rot è un es di trasf affine
(sottomatrice 3x3 della matrice di trasf 4x4)
come sappiamo, R ortonormale con det = 1
R 0
Marco Tarini - 2014 18
Facile da applicare (molt matrice-vettore) come sappiamo, cumulabile con qualunque altra trasf. affine
Abb. facile da cumulare (molt matrice-matrice)
Facilissima da invertire (trasposiz matrice)
Problematica da interpolare:
Molto efficiente da applicare
cumulabile con tutte le altre trasf affini
come una sola matrice 4x4
metodo universalmente adottato per memorizzare ed eseguire trasformazioni spaziali nel GPU-based rendering!
Uni Pisa - Modellazione 3D 16/05/2014
Marco Tarini - 2014 19
Reppresentazioni principali delle rotazioni
per specificare a mano una rot
il più usato nei software
di modellazione
Qualunque rotazione (*)
rotazione lungo asse Z (di γ gradi):
Angoli α β γ :
oridine (X-Y-Z)
Marco Tarini - 2014 20
In linguaggio nautico / areonautico:
rollio
Implementaz.
fisica:
“mappamondo
Marco Tarini - 2014 21
Compattezza: perfect!
(tre rotazioni in fila)
…ma risultati non sempre intuitivi)
Da cumulare e invertire: problematico…
perché sommare e invertire
gli angoli non funziona?
Facile!
( ) ( ) ( )αβγ xyz RRRM ⋅⋅=
Marco Tarini - 2014 22
Reppresentazioni principali delle rotazioni
Qualunque rotazione (*) data
attorno ad un asse
Asse: un vettore normale (3 float)
(asse passante per l’origine)
opportunamente
scelti
Marco Tarini - 2014 23
Compattezza: molto buono
(nb: rinormalizzare asse!)
funziona alla grande
(o a quaternione)
Invertire: facilissimo (invertire angolo oppure asse)
Modo 3: asse e angolo: variante
asse: v (vett normale, |v | = 1)
angolo: α (scalare)
rappresentarli internamente come 1 solo vett: v’ (3 float in tutto)
v’ = α v angolo α = |v’ |
asse v = v’ / |v’ |
(nota: se angolo = 0, asse si perde… infatti non conta)
Più coinciso, ma per il resto equivalente (molto comune es. in fisica)
Uni Pisa - Modellazione 3D 16/05/2014
Marco Tarini - 2014 24
Reppresentazioni principali delle rotazioni
Moltiplicaz fra complessi: … interpretaz geom: …
Dunque: moltiplicare per ruotare in 2D
numero complesso (attorno (a norma 1) all’origine)
numeri complessi rappresentaz (a norma 1) rotazioni in 2D
Assunzione
“fantasiosa”:
Marco Tarini - 2014 25
interpr. geom: punti 3D (a,b,c), quando d=0
Molitplicare due quat: …
Invertire un quat: …
Coniungare due quat q e p (fare q p q-1 ): … interpretaz geom: ruotare p
con la rotaz def da q
Dunque: coniugare con un ruotare in 3D
quat (con norma 1) (asse pass. x ori)
quaternioni rappresentaz (a norma 1) rotazioni in 3D
Assunzione
“fantasiosa”:
Compattezza: abbastanza bene
Applicazione diretta: facillimo ;)
Uni Pisa - Modellazione 3D 16/05/2014
Marco Tarini - 2014 26
Modo 4: “quaternioni” (cenni)
analogo (in 4D) dei numeri complessi (in 2D) struttura simile ad asse + angolo:
q = (assex , assey , assez , cos( angolo / 2) ) | q | = 1
teoria molto elegante e solida ecco un altro “vec4” molto utile! storia:
roba di mezz’800!
nati proprio per lo scopo (rappresentare rotazioni)
GUI: come specifico le rotazioni in 3D?
Metodo ricorrente: rotation gizmo
tre handles per controllare i tre angoli di Eulero
o “free”, drag-n-drop “intuitivo” (metafora trackball)
convenzione: Rosso = X Verde = Y Blu = Z
Uni Pisa - Modellazione 3D 16/05/2014
Marco Tarini - 2014 27
“free”: drag-and-drop 2D in spazio immagine,
mantendo distanza da osservatore
orientato nello spazio oggetto
es: x spostare
scaling gizmo
tre handles per le scalature anisotropichje
+ un handle centrale per scalature uniformi
convenzione: Rosso = X Verde = Y Blu = Z