• Non ci sono risultati.

Vettorie TransformazioniSpaziali Marco Tarini RappresentazioneTrasformazioni

N/A
N/A
Protected

Academic year: 2021

Condividi "Vettorie TransformazioniSpaziali Marco Tarini RappresentazioneTrasformazioni"

Copied!
18
0
0

Testo completo

(1)

Game Dev Verona 2014

Rappresentazione Trasformazioni

Marco Tarini

Vettori e

Transformazioni Spaziali

Mathematics for 3D Game Progr. and C.G. (3za ed) Eric Lengyel

Capitoli 2, 3, 4

(2)

Intro

Vettori

n-ple di scalari

Nei games, tipicamente, con n = 2,3,4 nei games usati per rappresentare:

Posizioni (punti)

Direzioni (vettori direzione) E anche:

delta fra posizioni (spostamenti) Quantità fisiche correlate

(velocità, momenti, momenti angolari) e: piani, sfere, rette, raggi...

Posizioni e direzioni

g

(3)

Classi utili

di trasformazioni

Lineari (trasformaz. affini)

Similitudini (trasformaz. conformali)

“Mantengono gli angoli”

Rotaz + Traslaz + Scaling uniforme

Isometrie (rototraslazione)

“Mantengono la magnitudine”

Rotaz + Traslaz

) ( )

( )

(

v0 v1 f v0 f v1

f

α + β = α + β

Come rappresento le rotazioni in 3D?

Cioè anche gli orientamenti

di un oggetto nello spazio

(4)

Reminder

Tutte e sole le isometrie (trasf. rigide)

= roto-traslazioni

= rotazioni (*) + traslazioni

Rotazioni (*) :

quante possibili?

come rappresentarle (internamente)?

(*) generiche = attorno ad assi passanti per l’origine

Rotazioni in R3:

quante possibili?

R0

R1

R2

R3

R4

R5

R6

R7

R8

R9

R10

R11

R12

R13

etc etc

(5)

Rotazioni in R3:

quante possibili?

R0

(e ovviamente includono l’identità)

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?

invertibilità

è facile trovare l’inversa?

(6)

Per paragone:

reppresentazione delle traslazioni

Banale:

vettore di displacement (tre float)!

perfetta secondo tutti i criteri (verificare!)

Reppresentazioni per rotazioni

Molte possibili,

con vantaggi e svantaggi diversi Tutte molto diffuse ed usate

Modi per passare da una rappr. all’altra?

(7)

Perché è utile interpolare rotazioni:

esempio: animazioni

tempo 100

tempo 200 tempo 150

R 1

R 2 R i

?

Perché è utile cumulare rotazioni:

esempio: scenegraph

spazio mondo (globale) spazio oggetto ruota 1 spazio oggetto automobile

(8)

Perché è utile cumulare rotazioni:

esempio: scenegraph

R

c

R0

R1 R2

R3 R4 R5 R6

R3

seguito da R0

Reppresentazioni principali delle rotazioni

Matrici 3x3

(9)

Modo 1: matrice 3x3

(9 floats)

(sottomatrice 3x3 della matrice di rot 4x4)

come sappiamo, R ortonormale con det = 1

R 0 0

0 0 0 0 1

Modo 1: matrice 3x3

(9 floats)

Prolissa (9 numeri invece di 3)

Abb. 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:

R 0

k + (1-k) R 1 = M

in genere NON di rotazione (non ortonormale)

perché?

(10)

Reppresentazioni principali delle rotazioni

Matrici 3x3

Angoli di Eulero

Modo 2: angoli di eulero

(3 floats)

Qualunque rotazione (*) può essere espressa come:

rotazione lungo asse X (di α gradi), seguita da:

rotazione lungo asse Y (di β gradi), seguita da:

rotazione lungo asse Z (di γgradi):

Angoli α β γ :

“angoli di Eulero” di quella rotazione

(quindi: le “coordinate” di quella rotaz)

oridine (X-Y-Z) arbitrariamente scelto,

(ma 1 volta x tutte)

(11)

Modo 2: angoli di eulero

(3 floats)

In linguaggio nautico / areonautico:

angoli di “rollio, beccheggio, imbardata”

rollio (roll )

beccheggio (pitch )

imbardata (yaw )

Modo 2: angoli di eulero

(3 floats)

Implementaz.

fisica:

“mappamondo

a tre assi”

(12)

Modo 2: angoli di eulero

(3 floats)

Compattezza: perfect!

Da applicare: facilino

(se a molti punti, meglio passare a matrice)

Da interpolare: possibile…

intrerpolaz dei tre angoli (occhio ad interpolare angoli:

ricordarsi equivalenza angoli: α = α +360 (k) )

…ma risultati non sempre intuitivi) Da cumulare e invertire: problematico…

perché sommare e invertire gli angoli non funziona?

da: angoli di eulero a: matrice 3x3

Facile!

Il viceversa?

(solo a suon di conti e funz trigon. inverse)

( ) γ y ( ) ( ) β x α

z R R

R

M = ⋅ ⋅

(13)

Reppresentazioni principali delle rotazioni

Matrici 3x3

Angoli di Eulero Asse + angolo

Modo 3: asse e angolo

Qualunque rotazione (*) data può essere espressa come:

una (sola!) rotazione (di un angolo ) attorno ad un asse

Angolo: uno scalare

(1 float)

Asse: un vettore normale

(3 float)

(asse passante per l’origine)

opportunamente scelti

(14)

Modo 3: asse e angolo

Compattezza: molto buono Interpolazione: ottimo!

interpolare asse, intrerpolare angolo (nb: rinormalizzare asse!)

Applicare: male

modo migliore: passare a matrice 3x3 (o a quaternione)

Cumulare: male 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

(comune es. in fisica)

(15)

Reppresentazioni principali delle rotazioni

Matrici 3x3

Angoli di Eulero Asse + angolo Quaternioni

Ripasso: numeri complessi

Conseguenze:

“Num complesso”: (a + b i ) interpretaz geom: punti 2D (a , b) 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”:

c’è un t.c.

1

(16)

Passare ai quaternioni

Conseguenze:

“Quaternione”: (a i+bj+ck+d )

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: ruoto p

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”:

ci sono t.c.

cioè:

i2= j2= k2= -1 ij = k ji = -k jk = i kj = -j ki = j ij = -k

x i j k

i -1 -k -j

j k -1 -i

k j i -1

Modo 4: “quaternioni”

(4 float)

Compattezza: abbastanza bene Cumulare: facillimo ;)

Invertire: facillimo ;)

Interpolare: facillimo ;) e best results!

Applicazione diretta: facillimo ;)

(ma, per cumulare con altre trasformazioni, meglio passare a forma matriciale cmq)

(17)

Modo 4: “quaternioni”

(cenni)

analogo (in 4D) dei numeri complessi (in 2D) struttura simile ad asse + angolo:

q = (asse

x

, asse

y

, asse

z

, cos( angolo / 2) )

| q | = 1

teoria molto elegante e solida ecco un altro “vec4” molto utile!

storia:

roba di mezz’800!

cross e dot products emergono dalla loro teoria (!) nati proprio per lo scopo (rappresentare rotazioni)

Reppresentare rotazioni

Matrici 3x3

Angoli di Eulero Asse + angolo Quaternioni

+ Traslazione

(displ. vec)

Dual Quaternions

roto-traslazioni

(18)

Reminder:

Trasformazioni nel pipeline grafico

Spazio

Oggetto

Spazio Mondo

Spazio Schermo Spazio

Vista

Trasforamzione di Modellazione

Trasforamzione di Vista

Trasforamzione di Proiezione e Viewport

Esempio:

Trasformazioni in unity

Lineari (trasformaz. affini)

Similitudini (trasformaz. conformali)

“Mantengono gli angoli”

Rotaz + Traslaz + Scaling uniforme

Isometrie (rototraslazione)

“Mantengono la magnitudine”

Rotaz + Traslaz

) ( )

( )

(

v0 v1 f v0 f v1

f

α + β = α + β

anisotropico anisotropico anisotropico anisotropico

class Transform

Riferimenti

Documenti correlati

A simple rendering method is presented to avoid vertex seams in cylindrical and toroidal uv-mappings used for texture mapping (a vertex seam is a vertex dupli- cation of a

volumetric data, polygonal meshes, NURBS, splines, subdivision surfaces, LODs, multiresolution structures…. • 3D acquisition (catturare modelli 3D

Trasformazioni affini (nelle GUI) : come si possono specificare. nota: questi controlli familiari (piu’ la traslazione, effettuata con drag-and-drop) sono sufficienti a

much cheaper than sampled sound to store, but requires instrument liberary at runtime not much used anymore (in games) still most convenient for procedural music. Specialized

3D data models textures materials shaders animations collision objects scenes etc audio. music sound fxs ambient sounds voice

3D models meshes textures materials shaders animations collision objects scenes.

Per fare questo, ogni volta che emerge un nuovo pesce dominante, si vuole sapere la sua posizione (cio` e quella della sua tana) e il suo peso, al momento del “sorpasso”... Nota:

Bisogna scrivere un programma che legga da un file una sequenza di eventi, come l’introduzione di una nuova persona nel gruppo delle cene, l’estromissione dallo stesso gruppo