interaction with virtual environments - percro laboratory · interaction with virtual environments...
Post on 17-Dec-2018
240 Views
Preview:
TRANSCRIPT
Interaction with Virtual Environments
15th May 2012 – Physical Based Modeling
Emanuele Ruffaldi
e.ruffaldi@sssup.it
David Mumford
Physically Based Modeling
• What does it mean?
– In Engineering we always do PBM
• But PBM is being used in:
– Virtual Reality
– Computer Graphics
– Movies
– Visualization
– Animation
Entities of Physical Based Modeling
Rigid Body Simulation
Deformable Body
Simulation
Fluids Particle Systems
Physical Phenomena
Collision Detection
Simulation Architecture
Collision Detection
Collision detection
Contact Management
300 Hz
Haptic device
Haptic Rendering
Control Algorithms
Virtual Coupling
X, R
Fr, Tr
Simulation
Contact response
Rigid Body Simulation
X,R
Fc, Tc
F,T
-Fc, -Tc
1 kHz
C
C
Graphics
50 Hz
X,R
PARTICLE SYSTEMS
Particle Systems
• Modeling the World with Discrete entities
• For some entities it is the natural choice
– Smoke
– Natural Phenomena
• Original Paper
– R.W Hocknew and J.W. Eastwood. Computer Simulation Using Particles. Adam Hilger, New York, 1988.
• First from Star Trek II Genesis http://www.youtube.com/watch?v=QXbWCrzWJo4
A Particle
• A discrete entity in our World
• Described by position, mass, and other means
– Temperature, Age, or other properties
• Just make the particle move
Particle Simulator
• Manage the State of the Particles
• Compute the Force acting over the Particles
particles time
x v
Simulator
Particle forces m
solver
Simulator Phases
Zero Forces
Compute Forces
Handle Collision Detection
Update States
Compute Time Step
Init
Forces acting over a Particle
• Which types of forces?
– Constant Forces – gravity
– Position-Time Forces – force fields
– Velocity - drag
– Interaction - spring
Spring Forces
Implementing Force Fields
• Force Fields as Black Boxes
• Just plug them into the Simulator
• Compute the Force given the particle at given State
• The Simulator Loop Deriv becomes:
1. Clear Force Accumulators
2. Compute Forces for Every Force Field
3. Return to Solver
Handling Collisions
• Simple Computation of Collision
• Discussion on Collision Detection Pipeline with Rigid Bodies
Handling Collisions
• Check for Collision
• Collision Cases
– Moving along the wall
– Moving away
N
V0
V1
²
Particle Generation
• For some Phenomena Particles are being generated
• Particle Emitters
Constrained Dynamics
• Masses and Springs are very flexible
• It is difficult to make stiff things
• Alternatives
– Weak Spring
– Instability
• Example of Stiff System
RIGID BODY MOTION
Rigid Body Particles
r i (t) = R(t)pi + x(t)
x(t)
pi
State Space of Rigid Body
ddt
0
BB@
x(t)
q(t)
P(t)
L (t)
1
CCA =
0
BB@
v(t)12! (t)q(t)
F (t)
¿(t)
1
CCA
0
BB@
x(t)
R(t)
P(t)
L (t)
1
CCA
0
BB@
x(t)
q(t)
P(t)
L (t)
1
CCA
L(t) = R(t)I bodyR(t)T ! (t) = I (t)! (t)
P(t) = m _x(t)
COLLISION DETECTION
Collision Detection
• The geometrical techniques that allow to manage interaction between objects in a Virtual Environment
• Collision Response manages the computation of the effects of the collision in the simulation
• Feature: – Computational Load
– Realism issues expressed by Latency and Accuracy
– Heavily based on geometrical model
http://www.youtube.com/watch?v=tT81VPk_ukU
Application Areas
• Robotics
– industrial, medical, spatial
– Path Planning
– Simulation
• Physics in Video Games
• Virtual Prototyping for CAD
• Virtual Environments
Extremal Points and Local Minimal Distance
Local Minima Distance
• General Mathematical approach for computing distance between two objects
• We can easily compute it for two spheres
– Result is the two pairs of points that are nearest
• Computationally intensive for non implicit objects
Primitives and Tests
Ray Intersection Point
Distance Distance Intersection
Intersezione sfera-raggio
Segmento
Sfera
Intersezione
…
L’equazione precedente ha tre casi per le soluzioni di t, che deve avere
valore tra 0 ed 1:
• Nessuna intersezione
• Raggio tangente
• Intersezione
Intersezione Sfera Sfera
La distanza tra due sfere si ottiene dalla distanza dei due centri:
Se la distanza e’ negativa allora le due sfere si intersecano in due punti
oppure una delle sfere e’ dentro all’altra
Il volume delle due calotte di intersezione vale
Intersezione Sfera Sfera in movimento
Date due sfere con velocita’ v0 e v1 per un tempo t compreso tra 0 ed 1 la
distanza dei centri e’:
L’istante di contatto si ottiene risolvendo:
Un modo alternativo [Gomez99] consiste nel considerare una delle sfere ferma e
trasformando una delle sfere in un punto:
CA
CB rA+rB
CA
vA
vB
vB - vA
CB
Intersezione Triangolo - Raggio
1. Calcolare l’intersezione P0 del raggio con il piano del triangolo 2. Testare se il punto P0 e’ dentro al triangolo usando le coordinate
parametriche Nota: questa funzione e’ fornita da XVR con il metodo IsColliding di CVmObj
IsColliding(from, to, &ContactPoint, & ContactNormal, & TriangleID, & ComponentID, NoHidden)
Piano del triangolo
Intersezione con il raggio
Alternativamente si puo’ usare il prodotto scalare triplo che testa
l’intersezione senza calcolare prima il punto
Distanza Punto - Triangolo
Dipende dalla regione di Voronoi giusta
F
E3
E1
E2
V3
V2 V1
1. Proiettare il
punto P sul
piano del
triangolo
2. Testare se il
punto e’
dentro al
triangolo
3. Proiettare il
punto su
ogni Edge
4. Testare
Edge e
Vertici
Intersezione Triangolo Triangolo 1. Compute plane of triangle B 2. False if all vertices on A are on same
side of plane B 3. Compute plane of triangle A 4. False if all vertices on B are on same
side of plane A 5. Compute line of intersection between
two planes 6. Compute intervals for both the triangles
on the line 7. True if intervals overlap
Brute Force
• Collision Between all triangles of two Meshes
– For each triangle in mesh 1
• For each triangle in mesh 2
– Test mesh-mesh
• Too complex computation
Bounding Volume Hierarchies
Bounding Volume Hierarchies
Bounding Volume Hierarchies
Bounding Volume Hierarchies
l = 0 l = 1 l = 2 l = 3
l = 4 l = 5 l = 6 l = 7
Collision between BVH
• Hierarchical collision between two hierarchies
BVH oggetto 1
A
B C
A
B C
BVH oggetto 2
B C
B C A
A
Which Bounding Volumes?
Axis Aligned Bounding Boxes
AABB, scatole con facce parallele ai piani individuati dai tre assi principali
Il piu’ piccolo volume convesso (di questa forma) contenente l'oggetto.
Costruzione: ricerca dei valori di minimo e di massimo delle coordinate dei
vertici delle primitive dell'oggetto.
Ix = [xmin, xmax], Iy = [ymin, ymax], Iz = [zmin, zmax]
Definiscono univocamente le dimensioni dell'AABB [Ix * Iy * Iz].
Bounding Spheres
La piu’ piccola sfera che racchiude il volume dell’oggetto
Oriented Bounding Boxes
Parallelepipedi con gli assi
orientati. Seguono la
geometria dell’oggetto quindi
aderiscono piu’ degli AABB
Per il calcolo si usano metodi
basati sulla distribuzione
statistica dei vertici
dell’oggetto (Principal
Component Analysis)
Generalizzazione: Bounding Boxes. Molto simili agli OBB,
differenti per la politica in cui
viene decisa l’orientazione
Discrete Orientation Polytopes
DOP
Poliedri convessi, con facce
delimitate da semispazi con
vettori normali uscenti da un
insieme piccolo ma fissato di k
orientazioni discrete.
L’obiettivo e’ approssimare al
meglio la convex hull (il
guscio convesso minimo che
racchiude l’oggetto) degli
oggetti all’aumentare di k.
Space Partitioning
• Invece di strutturare l’oggetto per via gerarchica strutturiamo lo Spazio
• Il test tra paia di primitive avviene solo per quelle nella stessa regione di Spazio
Uniform Spatial Sub Quadtree/Octree kd-tree BSP-tree
Esempio di Quad Tree
Funzione di costo
Il costo complessivo dell'algoritmo per l'individuazione delle collisioni tra 2 modelli puo’ essere espresso dalla seguente funzione costo T:
T = Nv * Cv + Np * Cp + Nu * Cu T e’ il costo complessivo dell'algoritmo di CD Nv e’ il numero totale di coppie di bounding volumes da testare per cercarne le sovrapposizioni
Cv indica il costo per testare una coppia di bv per le sovrapposizioni Np indica il numero di coppie di primitive testate per le collisioni, relativamente ad Nv Cp e’ il costo di un test di contatto per ogni coppia di primitive
Nu e’ il numero di nodi della gerarchia che bisogna aggiornare a seguito di un moto rotatorio Cu e’ il costo per l'aggiornamento di ognuno degli Nu nodi. Il fattore Nu * Cu e’ importante in quanto alcuni BV comportano costi non trascurabili
nell’aggiornamento in seguito a moto rotatorio di oggetti flying. Questa funzione non prevede I costi introdotti dalle deformazioni.
Uso di AABB
vantaggi: calcolo, aggiornamento
ed intersezione semplici. Due
AABB si sovrappongono se e solo
se esiste intersezione lungo tutti i
tre intervalli del bv.
Memorizzazione: 3 reali per la
posizione, 3 reali per l’estensione
lungo gli assi
svantaggi: approssimazioni molto
povere (aumenta Nv e Np).
Occorre ricalcolare il BV dopo ogni
movimento rotatorio dell'oggetto
Uso di Bounding Spheres
vantaggi: basso costo per
aggiornamento (Cu).
Intersezione efficiente: se la
somma dei raggi delle due sfere e’
maggiore della distanza tra i raggi.
Memoria: 3 reali per il centro, 1
per il raggio.
svantaggi: scarsa aderenza, alla
convex hull, specialmente per
forme lunghe e sottili (aumento
Nv).
Uso di OBB
vantaggi: migliore aderenza rispetto ad AABB (bassi valori
di Nv).
L'aggiornamento efficiente: moltiplicazione di due matrici
di trasformazione.
Test per il controllo intersezione: efficiente.
svantaggi: Il costo Cv e’ abbastanza elevato in confronto
a quello ottenuto con le AABB o le sfere. Memoria: 15 reali
(matrice 3*3 per l’orientazione, 3 per la posizione, 3 per le
estensioni).
Space-Time Bound
• Organizzazione proposta da Hubbard, usa strutture 4-
dimensionali, che rappresentano il volume di massimo
spostamento di un oggetto in un intervallo di tempo t [0,1].
• Strutture denominate space-time bounds che sfruttano
informazioni sulla posizione, e sui limiti alla velocita’ e alle
accelerazioni.
• La validita’ di un space-time bound e’ limitata all'intervallo di
tempo per cui valgono le informazioni conosciute sul suo moto
• Allo scadere dell’intervallo occorre calcolare di nuovo la
struttura.
• L’algoritmo di CD interseca le strutture restituendo il piu’ piccolo
istante di tempo a partire dal quale i due oggetti potrebbero
collidere. Questo consente di considerare per alcuni intervalli di
tempo, solo gli oggetti che potrebbero collidere.
• Le superfici sono approssimate mediante sphere-tree, a
differenti livelli di dettaglio.
Gerarchie di sfere (1)
Costruzione dell’albero:
• A partire dalla struttura scheletrica dell'oggetto vengono
posizionate le sfere, usando metodi quasi ottimali per ridurne il
numero e preservarne la migliore aderenza alla superfici
• Ogni nodo ha in genere 8 figli.
• Ogni livello dell'albero di sfere copre la superficie dell'oggetto.
All'aumentare del livello, aumenta la risoluzione.
L’algoritmo si integra in sistemi di grafica e collision response:
• Determina le collisioni avvenute a un certo frame
1. Ricerca delle collisioni tra gli space-time bounds (non
interrompibile)
2. Ricerca delle collisioni esatte, discesa delle gerarchie
(interrompibile per garantire il real-time della risposta!)
• Le informazioni sono passate al modulo di Collision Response.
Gerarchie di sfere (2)
• Performance real-time 10-100 volte migliori di approcci BSP-tree • Bassa latenza e garanzia di frame-rate indipendentemente dalla
complessita’ geometrica degli oggetti.
• Importante sono la proprieta’ di invarianza rotazionale e l’alta
simmetria di cui godono le sfere: costruite una sola volta in fase di preelaborazione. A run-time si applicano alle sfere le
trasformazioni subite dagli oggetti.
Gerarchie di sfere (3)
• Approcci AABB e OCTree richiedono la ricostruzione da
zero delle strutture in seguito ai movimenti degli oggetti;
l'algoritmo CD e’ dunque fortemente caricato anche dal
costo di mantenimento delle gerarchie.
• L’uso delle sfere oltre a non richiedere la ricostruzione
completa, riduce anche l’occupazione di memoria.
• L’efficienza non dipende dalla complessita’ geometrica
degli oggetti ma dalla risoluzione degli alberi
• OCTree ad esempio richiede la discesa completa della
gerarchia per arrivare alle intersezioni reali con le superfici!
Quindi l’efficienza e’ legata fortemente alla complessita’
degli oggetti!
Accelerating Physics Simulation
• GPU is great for accelerating simulation
– 32 cores in a notebook GPU
– 240 cores in a GTX 280
• How?
• Directly in libraries
– Nvidia PhysX and Bullet
• Manually
– Nvidia CUDA
– New OpenCL standard
Software for Collision Detection
• OPCODE OPtimized COllision Detection. Versione moderna e alleggerita di RAPID (used by Bullet and ODE)
• RAPID (1997) Polygon soup, OBBTree, deformable objects
• QHULL Decomposition of polygon in convex units
• I-Collide for collision between convex polygons
• V-Collide (1998) RAPID for any geometrical model
• SOLID (Jan 2004)
• Sphere Tree Construction Kit
Software for PBM
• Tools for playing
– Box2D (C++ Java JavaScript Flash)
• SOFA general framework for simulation
• Nvidia PhysX (Commercial)
• Open Source Libraries
– Bullet
– Open Tissue
• Other: ODE, Tokamak, Newton Game Dynamics
• Particle Systems
• Multi API library: PAL (Physical Abstraction Layer)
• Editing with Physics
– Scythe
• Exchanging Models with Physics
– COLLADA
Resources
• Tutorial
– IEEE VR 2009
– SIGGRAPH 2001 PBM Baraff Witkiw
• Courses Online:
– COMP 768 Physically Based Modeling
– Physically based Animation for Computer Grapchis - 2007 - Cornell - Doug James
• Directory of Links:
– Computer Animation Page
• Books
– Physics for Game Programmers, Grant Palmer
– Real-Time Collision Detection, Christer Ericson
Challenges and Projects
• Challenges
– Managing complexity
– Mixing Rigid Deformable and Fluids
– Biological Models
• Projects
– Knot making with wires
– Playing with physics using Haptic
top related