interaction with virtual environments - percro laboratory · interaction with virtual environments...

Post on 17-Dec-2018

240 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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

Modeling the World

• Same thing, multiple ways of modeling it

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

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

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