75
Simulación Física para Realidad Simulación Física para Realidad Virtual Virtual Mauricio Franco Mauricio Franco Martínez Martínez Universidad Tecnológica de Bolívar Universidad Tecnológica de Bolívar Cartagena de Indias, 31 de marzo Cartagena de Indias, 31 de marzo de 2004 de 2004 [email protected] om

Simulación Física para Realidad Virtual

  • Upload
    doctor

  • View
    40

  • Download
    0

Embed Size (px)

DESCRIPTION

Simulación Física para Realidad Virtual. [email protected]. Mauricio Franco Martínez. Universidad Tecnológica de Bolívar Cartagena de Indias, 31 de marzo de 2004. Introducción: Gráficos 3D. Renderizador. Modelo 3D. Imagen 2D. Píxeles de colores. Geometría Sombreado - PowerPoint PPT Presentation

Citation preview

Page 1: Simulación Física para Realidad Virtual

Simulación Física para Realidad Simulación Física para Realidad VirtualVirtual

Mauricio Franco MartínezMauricio Franco Martínez

Universidad Tecnológica de BolívarUniversidad Tecnológica de Bolívar

Cartagena de Indias, 31 de marzo de Cartagena de Indias, 31 de marzo de 20042004

[email protected]

Page 2: Simulación Física para Realidad Virtual

Introducción: Gráficos Introducción: Gráficos 3D3D

Introducción: Gráficos Introducción: Gráficos 3D3D

RenderizadorModelo 3D Imagen 2D

• Geometría

• Sombreado

• Transformación espacial

• Píxeles de colores

Page 3: Simulación Física para Realidad Virtual

El Proceso de El Proceso de RenderizaciónRenderizaciónEl Proceso de El Proceso de

RenderizaciónRenderización

Renderizador

Vértices

x1 y1 z1

x2 y2 z2

x3 y3 z3

x4 y4 z4

x5 y5 z5

x6 y6 z6

x7 y7 z7

x8 y8 z8

xn yn zn

(x, y) = (x/z, y/z)

Plano 2D

Page 4: Simulación Física para Realidad Virtual

Renderizador

Vértices

Algoritmo de Línea de Bressenham

Caras

1: v1 v2 v3

2: v2 v4 v5

3: v3 v6 v7

4: v7 v10 v11

5: v12 v8 v13

n: vi vj vk

Plano 2D

El Proceso de El Proceso de RenderizaciónRenderizaciónEl Proceso de El Proceso de

RenderizaciónRenderización

Page 5: Simulación Física para Realidad Virtual

Renderizador

Vértices

Cálcula el color de cada píxel dependiendo de

las características de la luz y del material.

Caras

Propiedades de las luces de la escena:

• Posición

• Angulo de incidencia

• Intensidad

• Color

Propiedades de los materiales:

• Ángulos de reflexión

• Propiedades de absorción y reflexión de la luz

Imagen 2D

Luces y materiales

El Proceso de El Proceso de RenderizaciónRenderizaciónEl Proceso de El Proceso de

RenderizaciónRenderización

Page 6: Simulación Física para Realidad Virtual

Renderizador

Vértices

Combina el color de cada píxel con el color de la textura.

Caras

Imagen 2D

Coordenadas de Mapeo de la imagen 2D en el sólido 3D.

Imagen 2D

Luces y materiales

Textura

El Proceso de El Proceso de RenderizaciónRenderizaciónEl Proceso de El Proceso de

RenderizaciónRenderización

Page 7: Simulación Física para Realidad Virtual

Renderizador

Imagen 2D

Vértices

Caras

Traslación

T = x, y, z

Rotación

R = x, y, z

Escalamiento

S = x, y, z

Luces y materiales

Textura

Transformación

El Proceso de El Proceso de RenderizaciónRenderizaciónEl Proceso de El Proceso de

RenderizaciónRenderización

Page 8: Simulación Física para Realidad Virtual

RenderizadoreRenderizadoress

RenderizadoreRenderizadoress

Microsoft Direct3D

Pixar Renderman

Silicon Graphics OpenGL

void OpenGL_Render(void){ // limpia la pantalla glClear(GL_COLOR_BUFFER); // especifica la transformación glRotatef(45.0, 0, 1, 0); glTranslatef(0.0, 0.0, 1.0);

// especifica el sombreado glColor4f(0.5, 0.5, 0.5, 1.0);

// especifica la geometría glBegin(GL_TRIANGLES); glVertex3f(1.0, 0.0, 0.0); glVertex3f(0.0, 0.0, 0.0); glVertex3f(0.0, 1.0, 0.0); glEnd();

// renderiza glSwapBuffers();}

Page 9: Simulación Física para Realidad Virtual

Animación 2DAnimación 2DAnimación 2DAnimación 2D

// repita indefinidamentewhile (1){ // incremente el ángulo de rotación roty = roty + 5.0;

// cambie la transformación rotate(roty, 0, 1, 0);

// dibuje render();}

AnimaciónAnimaciónAnimaciónAnimación

RenderizadorTransformación

Geometría

Sombreado

Posición

Orientación

Page 10: Simulación Física para Realidad Virtual

Animación 2DAnimación 2DAnimación 2DAnimación 2D

// mientras no se presione ESCwhile ( ! key[ESC] ){ // lea la entrada updateInput();

// actualice la transformación if ( key[SPACE] ) roty = roty + 5.0;

// cambie la transformación rotate(roty, 0, 1, 0);

// dibuje render();}

Animación Animación InteractivaInteractivaAnimación Animación InteractivaInteractiva

RenderizadorTransformación

Geometría

Sombreado

Posición

Orientación

Page 11: Simulación Física para Realidad Virtual

Animación Basada en la Animación Basada en la FísicaFísica

Animación Basada en la Animación Basada en la FísicaFísica

RenderizadorTransformación

Geometría

Sombreado

Posición

Orientación

Ecuaciones que describen el movimiento de los cuerpos provocado por la acción de las fuerzas.

Leyes Físicas

Cinética

Dinámica

Page 12: Simulación Física para Realidad Virtual

Dinámica de PartículasDinámica de Partículas

Page 13: Simulación Física para Realidad Virtual

PartículaPartículassPartículaPartículass

M

Posición = { x, y, z }

XX

YY

ZZ

FF

VV

Page 14: Simulación Física para Realidad Virtual

Ecuaciones de DinámicaEcuaciones de DinámicaEcuaciones de DinámicaEcuaciones de Dinámica

La velocidad es el cambio de la posición en el tiempo.

La aceleración es el cambio de la velocidad en el tiempo.

La fuerza de un objeto es proporcional a su masa y aceleración.

m

fa

dtvx .

dtav .

dtdx

v

dtdv

a

maf

Page 15: Simulación Física para Realidad Virtual

Algoritmo de Algoritmo de DinámicaDinámicaAlgoritmo de Algoritmo de DinámicaDinámica

1. Se hallan todas las fuerzas que actúan sobre la partícula.

2. Se dividen las fuerzas entre la masa para hallar la nueva aceleración de la partícula.

3. Se integra la aceleración para hallar la nueva velocidad de la partícula.

4. Se integra la velocidad para hallar la nueva posición de la partícula.

5. Se renderiza la partícula en la nueva posición.

6. Regresa al punto 1.

m

fa

dtav .

dtvx .

Page 16: Simulación Física para Realidad Virtual

Integración Integración NuméricaNuméricaIntegración Integración NuméricaNumérica

dtvx . dtvxx .01 (Integrador de Euler)

n

nn

t

x

n

dttxf

dttxf

dttxf

dttxfdtXX

.!

),('''.!4

),(''.!3

),('.!2

),(. 0

4

0

3

0

2

001

Error numérico

Integrador de Runge Kutta

Page 17: Simulación Física para Realidad Virtual

Integrador Runge-Integrador Runge-KuttaKuttaIntegrador Runge-Integrador Runge-KuttaKutta

void RungeKutta4th(float dt, float x0, float t, float *x1, float (*f)(float, float))

{

float k1 = h * (*f)(x0, t);

float k2 = h * (*f)(x0 + k1/2, t + dt/2);

float k3 = h * (*f)(x0 + k2/2, t + dt/2);

float k4 = h * (*f)(x0 + k3, t + dt);

*x1 = x0 + 6*k1 + k2/3 + k3/3 + 6*k4;

}

RungeKutta4th

0x1x

dt

t),( txf

Page 18: Simulación Física para Realidad Virtual

Clase Clase PartículaPartículaClase Clase PartículaPartículaclass Particle

{ public:

// propiedades físicas float mass; // masa float x, y, z; // posición float vx, vy, vz; // velocidad float fx, fy, fz; // acumulador de fuerzas public: // constructor, destructor Particle(); ~Particle();

// limpia el acumulador de fuerzas void clearForces();

// añade una fuerza sobre la partícula void addForce(float x, float y, float z);

// halla la nueva velocidad y posición void integrate(float dt, float time);

// dibuja la partícula void render();};

M

P = { x, y, z }

FF

VV

Page 19: Simulación Física para Realidad Virtual

Código de Dinámica en C+Código de Dinámica en C+++Código de Dinámica en C+Código de Dinámica en C+++

// crea una partícula pParticle p;p.mass = 100;p.x = p.y = p.z = 0;

// usa time para calcular el dtfloat time = getTime();

// ciclo principalwhile (1) { // añade la fuerza de gravedad sobre la partícula p.addForce(0.0, -9.8, 0.0);

// halla el tiempo transcurrido desde la última integración float dt = getTime() – time; time = time + dt;

// integra para hallar el nuevo estado de la partícula i p.integrate(dt, time);

// limpia el acumulador de fuerzas de la partícula p.clearForces();

// renderiza la partícula i p.render(); }

Particle::integrate(float dt, float time){ // halla la nueva aceleración float ax = fx / mass; float ay = fy / mass; float az = fz / mass;

// integra la aceleración para hallar la velocidad RungeKutta4th(dt, ax, ay, az, t, &vx, &vy, &vz, f);

// integra la velocidad para hallar la posición RungeKutta4th(dt, vx, vy, vz, t, &x, &y, &z, f);}

Particle::integrate(float dt, float time){ // halla la nueva aceleración float ax = fx / mass; float ay = fy / mass; float az = fz / mass;

// integra la aceleración para hallar la velocidad RungeKutta4th(dt, ax, ay, az, t, &vx, &vy, &vz, f);

// integra la velocidad para hallar la posición RungeKutta4th(dt, vx, vy, vz, t, &x, &y, &z, f);}

Page 20: Simulación Física para Realidad Virtual

Hola Hola Mundo!!Mundo!!Hola Hola Mundo!!Mundo!!

Page 21: Simulación Física para Realidad Virtual

FuerzaFuerzas s FuerzaFuerzas s

Fuerzas unarias

Fuerzas binarias

Fuerzas de interacción espacial

• Gravedad terrestre

• Viento

• Viscosidad del medio

• Resortes • Fuerza eléctrica

• Fuerza gravitacional

Page 22: Simulación Física para Realidad Virtual

Ecuación del Ecuación del ResorteResorteEcuación del Ecuación del ResorteResorte

ab

dsa

ff

ll

lll

krlkf

.)(

.

.

l

l

k

r

l

k

d

s Coeficiente de Hooke

Elongación

Distancia en reposo

Coef. de elasticidad

Pos B – Pos A

Vel B – Vel A

A B

Ley de Hooke Elasticidad

Page 23: Simulación Física para Realidad Virtual

Umma-Umma-gummagummaUmma-Umma-gummagumma

Page 24: Simulación Física para Realidad Virtual

Fuerza Fuerza EléctricaEléctricaFuerza Fuerza EléctricaEléctrica

221

dqqC

fe

Constante de Coulomb Cargas

eléctricas

Distancia entre partículas

Page 25: Simulación Física para Realidad Virtual

Electric Lady-Electric Lady-LandLandElectric Lady-Electric Lady-LandLand

Page 26: Simulación Física para Realidad Virtual

Ecuación del PlanoEcuación del PlanoEcuación del PlanoEcuación del Plano

0: DCzByAxPlano

Normal

NN

Distancia al origen

XX

YY

ZZ

D

Page 27: Simulación Física para Realidad Virtual

Detección de Detección de ColisionesColisionesDetección de Detección de ColisionesColisiones

NNP = { x, y, z }

ColisióndSi )0(

d

// distancia de un punto a un planofloat distance(Plane p, Vector3 x){ return ( (p.normal * x) + p.distance );}

DPNd ).(

dDCzByAx

Page 28: Simulación Física para Realidad Virtual

Resolución de Resolución de ColisionesColisionesResolución de Resolución de ColisionesColisiones

NN0t

VVVt

Vn

nt

n

VVV

NNVV

).(

1t

VV Vt

-Vn

nt

nn

VVV

rVV

.

Coeficiente de restitución

Page 29: Simulación Física para Realidad Virtual

InterpenetracióInterpenetraciónnInterpenetracióInterpenetraciónn

0t

d

Page 30: Simulación Física para Realidad Virtual

InterpenetracióInterpenetraciónnInterpenetracióInterpenetraciónn

1t

d

Page 31: Simulación Física para Realidad Virtual

InterpenetracióInterpenetraciónnInterpenetracióInterpenetraciónn

2t

d

Page 32: Simulación Física para Realidad Virtual

InterpenetracióInterpenetraciónnInterpenetracióInterpenetraciónn

3t

d

Page 33: Simulación Física para Realidad Virtual

InterpenetracióInterpenetraciónnInterpenetracióInterpenetraciónn

?t

Page 34: Simulación Física para Realidad Virtual

InterpenetracióInterpenetraciónnInterpenetracióInterpenetraciónn

3t

d

Page 35: Simulación Física para Realidad Virtual

InterpenetracióInterpenetraciónnInterpenetracióInterpenetraciónn

3t

d

Page 36: Simulación Física para Realidad Virtual

VROOMVROOMVROOMVROOM

Page 37: Simulación Física para Realidad Virtual

Contacto de ReposoContacto de ReposoContacto de ReposoContacto de Reposo

FnFn

VtVt

N = -FnN = -Fn

Vn = 0Vn = 0fricción = -kf (-Fn . N ) vt

fricción = -kf (-Fn . N ) vt

)0( nVSi Contacto de Reposo

Page 38: Simulación Física para Realidad Virtual

Voila!Voila!!!Voila!Voila!!!

Page 39: Simulación Física para Realidad Virtual

Sistemas de Sistemas de PartículasPartículas

Page 40: Simulación Física para Realidad Virtual

Sistemas de Sistemas de PartículasPartículasSistemas de Sistemas de PartículasPartículas

PartículasFuerzas Planos

Sistema de Partículas

Page 41: Simulación Física para Realidad Virtual

Clase Clase PartículaPartículaClase Clase PartículaPartículaclass Particle

{ public: float mass; // masa float x, y, z; // posición float vx, vy, vz; // velocidad float fx, fy, fz; // acumulador de fuerzas

bool fixed; // partícula fija?

public: Particle(); // constructor ~Particle(); // destructor

// limpia el acumulador de fuerzas void clearForces();

// añade una fuerza sobre la partícula void addForce(float x, float y, float z);

// halla la nueva velocidad y posición void integrate(float dt, float time);

// dibuja la partícula void render();};

M

P = { x, y, z }

FF

VV

Page 42: Simulación Física para Realidad Virtual

Clase Clase FuerzaFuerzaClase Clase FuerzaFuerza

class Force{ public: Force(); // constructor ~Force(); // destructor

virtual void applyForce()=0; // aplica la fuerza};

Page 43: Simulación Física para Realidad Virtual

FuerzaFuerzassFuerzaFuerzass

class SpringForce : public Force{ public: Particle *p1, *p2; // partículas unidas por el resorte float Ks, Kd; // coeficientes del resorte (Hooke y elasticidad) float r; // distancia de reposo

public: SpringForce(); // constructor ~SpringForce(); // destructor

virtual void applyForce();};

class UnaryForce : public Force{ public: ParticleSystem *ps; // sistema de partículas sobre el que ejerce fuerza float fx, fy, fz; // magnitud de la fuerza

public: UnaryForce(); // constructor ~UnaryForce(); // destructor

virtual void applyForce();};

Page 44: Simulación Física para Realidad Virtual

Clase Clase PlanoPlanoClase Clase PlanoPlano

class Plane{ public: float nx, ny, nz; // normal del plano float d; // distancia al origen

public: Plane(); // constructor ~Plane(); // destructor

// distancia de un punto a un plano friend float distance(Plane p, float x, float y, float z);};

NN

XX

YY

ZZD

Page 45: Simulación Física para Realidad Virtual

Clase Sistema de Clase Sistema de PartículasPartículasClase Sistema de Clase Sistema de PartículasPartículas

class ParticleSystem{ public: Particle particles[100]; // arreglo de partículas Force forces[100]; // arreglo de fuerzas Plane planes[10]; // arreglo de planos private: ParticleContact contacts[100]; // lista de contactos por resolver public: ParticleSystem(); // constructor ~ParticleSystem(); // destructor

virtual bool load(char* filename); // carga un sistema de un archivo virtual bool save(char* filename); // guarda un sistema en un archivo virtual void update(float dt, float t); // actualiza el estado del sistema virtual void render(); // dibuja el sistema

private: void clearForces(); // limpia los acumuladores de fuerzas void applyForces(); // aplica las fuerzas a las partículas void integrate(float dt, float t); // avanza el estado del sistema void checkCollisions(); // chequea si hay colisión con los planos void solveCollisions(); // resuelve las colisiones que se presentaron};

struct ParticleContact{ Particle *p; Plane *plane;};

struct ParticleContact{ Particle *p; Plane *plane;};

Page 46: Simulación Física para Realidad Virtual

Sistema de Sistema de PartículasPartículasSistema de Sistema de PartículasPartículas

void ParticleSystem::update(float dt, float t){

applyForces();

solveContacts();

integrate(dt, t);

checkContacts();

clearForces();

}

Page 47: Simulación Física para Realidad Virtual

Sistema de Sistema de PartículasPartículasSistema de Sistema de PartículasPartículas

void ParticleSystem::update(float dt, float t){

applyForces();

solveContacts();

integrate(dt, t);

checkContacts();

clearForces();

}

void ParticleSystem::applyForces() {

// aplica las fuerzas del sistema for (int i = 0; i<100; i++) { forces[i].applyForce(); }

}

Halla para cada partícula. f

Page 48: Simulación Física para Realidad Virtual

Sistema de Sistema de PartículasPartículasSistema de Sistema de PartículasPartículas

void ParticleSystem::update(float dt, float t){

applyForces();

solveContacts();

integrate(dt, t);

checkContacts();

clearForces();

}

Recorre la lista de contactos.Para cada partícula y plano en contacto:

?)0( nVsi

no

nt

n

VVV

NNVV

).(

Halla:

Aplica: rVV nn .

Colisión

Aplica: fr = -kf (-Fn . N) vt

Cancela: Fn

Contacto de Reposo

Page 49: Simulación Física para Realidad Virtual

Sistema de Sistema de PartículasPartículasSistema de Sistema de PartículasPartículas

void ParticleSystem::update(float dt, float t){

applyForces();

solveContacts();

integrate(dt, t);

checkContacts();

clearForces();

}

Halla para cada partícula:

m

fa

dtav .

dtvx .

Page 50: Simulación Física para Realidad Virtual

Sistema de Sistema de PartículasPartículasSistema de Sistema de PartículasPartículas

void ParticleSystem::update(float dt, float t){

applyForces();

solveContacts();

integrate(dt, t);

checkContacts();

clearForces();

}

Inicializa la lista de contactos.

Chequea la distancia de cada partícula a cada plano:

DPNd ).(

?)0( d si

Retrocede la partícula una distancia -d.

Añade el plano y la partícula a la lista de contactos.

Interpenetración

Page 51: Simulación Física para Realidad Virtual

Sistema de Sistema de PartículasPartículasSistema de Sistema de PartículasPartículas

void ParticleSystem::update(float dt, float t){

applyForces();

solveContacts();

integrate(dt, t);

checkContacts();

clearForces();

}

void ParticleSystem::applyForces() {

// resetea los acumuladores de fuerzas for (int i = 0; i<100; i++) { particles[i].fx = 0; particles[i].fy = 0; particles[i].fz = 0; }

}

Resetea los acumuladores de fuerzas:

Page 52: Simulación Física para Realidad Virtual

Uso del Sistema de Uso del Sistema de PartículasPartículasUso del Sistema de Uso del Sistema de PartículasPartículas

#include “ParticleSystem.h”

int main(void){ // inicia el sistema de video initVideo();

// usa time para calcular el dt float time = getTime();

// crea un sistema de partículas ParticleSystem ps; // carga el sistema de partículas desde un archivo ps.load(“cloth.par”);

// ciclo principal while (1) { // halla el tiempo transcurrido desde la última integración float dt = getTime() – time; time = time + dt;

ps.update(dt, time); // actualiza el systema de partículas ps.render(); // renderiza el sistema de partículas }}

Page 53: Simulación Física para Realidad Virtual

Aplicación: TelaAplicación: TelaAplicación: TelaAplicación: Tela

Page 54: Simulación Física para Realidad Virtual

Aplicación: Emisor de Aplicación: Emisor de PartículasPartículas

Reeves, William. Lucasfilm Ltd. Particle Systems: A Technique for Modeling a Class of Fuzzy Objects.ACM Transactions on Graphics, Vol. 2, No. 2, April 1983, Pages 91-108.

Page 55: Simulación Física para Realidad Virtual

Dinámica de Cuerpos Dinámica de Cuerpos RígidosRígidos

Page 56: Simulación Física para Realidad Virtual

Cuerpos Cuerpos RígidosRígidos

Colección Infinita de Partículas Fuertemente Interconectadas

Posición = { x, y, z }

XX

YY

ZZ

VV

M

Page 57: Simulación Física para Realidad Virtual

Centro de MasaCentro de Masa

VcmVcm Mxm

xii

cm

cmtotal vv

cmtotal aa

Page 58: Simulación Física para Realidad Virtual

Movimiento Movimiento AngularAngular

XX

YY

ZZ

Orientación =

Velocidad Angular =

dFF

dF

Page 59: Simulación Física para Realidad Virtual

Momento de InerciaMomento de Inercia

dF

dt.

dt.

?I

dmrI .2

Page 60: Simulación Física para Realidad Virtual

Algoritmo de la Dinámica de Cuerpos Algoritmo de la Dinámica de Cuerpos RígidosRígidos

1. Se hallan todas las fuerzas y torques que actúan sobre el cuerpo.

2. Se dividen las fuerzas entre la masa para hallar la aceleración lineal del centro de masa.

3. Se dividen los torques entre el momento de inercia para hallar la aceleración angular del cuerpo.

4. Se integra la aceleración lineal para hallar la velocidad lineal en el centro de masa.

5. Se integra la aceleración angular para hallar la velocidad angular del cuerpo.

6. Se integra la velocidad lineal para hallar la nueva posición del centro de masa.

7. Se integra la velocidad angular para hallar la nueva orientación del cuerpo.

8. Se regresa al punto 1.

m

fa

dtav .

dtvx .

I

dt.

dt.

Page 61: Simulación Física para Realidad Virtual

Respuesta a la Respuesta a la ColisiónColisión

AAPAA

AAA

INjr

NMj

vv

..01

01

BBP

AAP

BA

AB

INr

INr

MMNN

Nvej

..11.

..)1(0

AA

BBNN

PPAPr

BPr

Page 62: Simulación Física para Realidad Virtual

Corre Conejo, Corre Conejo, Corre!!Corre!!Corre Conejo, Corre Conejo, Corre!!Corre!!

Page 63: Simulación Física para Realidad Virtual

Temas Temas PendientesPendientes

Page 64: Simulación Física para Realidad Virtual

Cálculo de las Propiedades de MasaCálculo de las Propiedades de Masa

dmrI

mdmxx

dvm

ocm

2

/

.Masa

Centro de Masa

Tensor de Inercia

Mirtich, Brian. Fast and Accurate Computation of Polyhedral Mass Properties.Journal of Graphics Tools, 1 (2) : 31-50. 1996

?

Page 65: Simulación Física para Realidad Virtual

Representación de Orientaciones en el Representación de Orientaciones en el EspacioEspacio

2D2D Euler ?Euler ? Eje y ángulo ?Eje y ángulo ? Cuaternios !!

(Quaternions)

Cuaternios !!

(Quaternions)

Cerradura del Cardán (Gimbal Lock)

Cerradura del Cardán (Gimbal Lock)

Dam, Erik. Koch, Martin. Lillholm, Martin.Quaternions, Animation and Interpolation.

http://citeseer.nj.nec.com/dam98quaternions.html, 1998.

Page 66: Simulación Física para Realidad Virtual

Colisiones y Contactos en Cuerpos Colisiones y Contactos en Cuerpos RígidosRígidos

Detección de Colisiones con Volúmenes Envolventes

Cálculo de Fuerzas de Contacto

Baraff, David. Fast Contact Force Computation for Non-Penetrating

Rigid Bodies.Proceedings of Siggraph 1994. pp 23-34.

GAMMA Group.University of North Carolina.www.cs.unc.edu/~geom

Determinación del Tiempo Exacto de Colisión

Determinación de la Información de Contacto (puntos de contacto, normales de colisión)

Page 67: Simulación Física para Realidad Virtual

RestriccioneRestriccioness

Page 68: Simulación Física para Realidad Virtual

Cuerpos Cuerpos DeformablesDeformables

Terzopoulos. Platt. Barr. Fleischer.Elastically Deformable Bodies.

Proceedings of ACM Siggraph 1987.

Deformación de Forma Libre

Método de Elementos Finitos

Page 69: Simulación Física para Realidad Virtual

Simulación de Simulación de FluidosFluidos

Fedkiw, Ron. Nguyen, D. and Jensen, H.Physically Based Modeling and Animation of Fire.Siggraph 2002 Annual Conference.

Fedkiw, Ron., Stam, J. and Jensen, H..Visual Simulation of Smoke.Siggraph 2001 Annual Conference, 23-30 (2001).

Foster, N. and Fedkiw, R.Practical Animation of Liquids.Siggraph 2001 Annual Conference, 15-22 (2001).

Ecuaciones de Navier-Stokes

Page 70: Simulación Física para Realidad Virtual

Comentarios Comentarios FinalesFinales

Page 71: Simulación Física para Realidad Virtual

Bibliotecas de Simulación Bibliotecas de Simulación FísicaFísica

OpenDinamicsEngine (ODE)

http://www.q12.org

Freeware

Novodex SDK

http://www.novodex.com

Havok

http://www.havok.com

Page 72: Simulación Física para Realidad Virtual

TridiuTridiumm

Franco, Mauricio. Villamizar, Henry.Biblioteca en C++ para la Simulación de Ambientes Virtuales en Tiempo Real.Universidad Tecnológica de Bolívar. 2002.

• Sistema de transformaciones basado en cuaternios.

• Determinación de la visibilidad y descarte de geometría mediante “Octrees”.

• Manejo de terrenos grandes mediante “Quadtrees”.

• Simulación física (partículas y cuerpos rígidos).

Page 73: Simulación Física para Realidad Virtual

Simulador del Puerto de Simulador del Puerto de CartagenaCartagena

Page 74: Simulación Física para Realidad Virtual

BibliografíBibliografíaa

Hecker, Chris. Behind the Screen Columns. Game Developer Magazine. October 1996 - June 1997. Also available on http://www.d6.com

Baraff, David. Witkin, Andrew. Physically Based Modeling: Principles and Practice Course Notes.Siggraph ’01 course notes. 2001.http://www.pixar.comFoley, James. Van Dam, Andries. Feiner, Steven. Hugues, John. Computer Graphics: Principles and Practice. Addison-Wesley. 1990.OpenGL Architecture Review Board. OpenGL Programming Guide and Reference Manual. Addison-Wesley. 1992.Press. Flannery. Teukolsky. Vetterling. Numerical Recipes in C. Cambridge University Press, Cambridge, England, 1988.

Page 75: Simulación Física para Realidad Virtual

Eso es todo Eso es todo Amigos!!Amigos!!

[email protected]