Вы находитесь на странице: 1из 34

VIDEOJUEGOS 2

Motores de fsicas

Motores de fsicas

V2

Puntos a tratar

Simulacin fsica en videojuegos


Evolucin de las fsicas
Aplicaciones de la fsica
Motores de fsica
Componentes del motor de fsica
Propiedades de los cuerpos
Uniones entre cuerpos
Tipos de cuerpos
Fases del motor

Videojuegos II

2013-2014 Depto. Ciencia de la Computacin e IA

Motores de fsicas

V2

Motores de fsicas

Simulacin fsica en videojuegos


La mayora de juegos en la actualidad utiliza fsicas
La fsica utilizada en videojuegos es la mecnica clsica
Cinemtica y dinmica. Leyes de Newton.
No se simula relatividad ni mecnica cuntica. No se busca
exactitud, slo que aparenten comportarse de forma fsica.

TY ADDITION
11.5. VELOCITY ADDITION
v2

v1

=
=

x0 /t0 + v2
x0 /t0 + v2
=
0
1 + v2 (x /t0 )/c21 + v2 (x0 /t0 )/c2
v1 + v2
v1 + v2
=
.
.
2
2
1
+
v
v
/c
1
2
1 + v1 v2 /c

This is the
velocity-addition
foralong
adding
along
city-addition
formula,
for addingformula,
velocities
thevelocities
same line.
Le
at some of its properties.
Videojuegos II

2013-2014 Depto. Ciencia de la Computacin e IA

Motores de fsicas

V2

Motores de fsicas

Evolucin de la simulacin fsica


Inicialmente la fsica se haca ad hoc para cada juego
En los primeros juegos tenamos fsicas de partculas
Conforme evoluciona la tecnologa aparecen cuerpos rgidos (p.ej.
cajas)
Se extiende a objetos blandos como ropa, banderas o cuerdas

Conforme se hacen ms complejos es necesario contar con


libreras reutilizables
Esto es el motor (middleware) de fsicas
El motor es genrico, necesitaremos proporcionar los datos fsicos
de los niveles de nuestro juego
Los motores avanzados incluyen en el editor las propiedades fsicas
El mismo motor se aplica a todos los efectos fsicos (es ms sencillo
que integrar distintos elementos independientes)
Videojuegos II

2013-2014 Depto. Ciencia de la Computacin e IA

Motores de fsicas

V2

Motores de fsicas

Aplicaciones de la fsica
Efectos de partculas (p. ej. fuegos artificiales)
Cada partcula del sistema es sometida a fsicas

Vehculos (coches, aviones, barcos, etc)


Simula propiedades de cada tipo de vehculo

Arrastrar o apilar cajas


Muchos juegos utilizan este tipo de puzzles

Flotabilidad y elementos elsticos


Tejidos (ropa, banderas, cabello)
Muecos de trapo (ragdolls)
Simula el cuerpo y sus articulaciones, para obtener
muertes ms realistas

No se debe abusar de la fsica!


Videojuegos II

2013-2014 Depto. Ciencia de la Computacin e IA

Motores de fsicas

V2

Motores de fsicas

Simulacin fsica en objetos del escenario

Videojuegos II

2013-2014 Depto. Ciencia de la Computacin e IA

Motores de fsicas

V2

Motores de fsicas

Fsica de ragdolls

Videojuegos II

2013-2014 Depto. Ciencia de la Computacin e IA

Motores de fsicas

V2

Motores de fsicas

Entorno destructible

Videojuegos II

2013-2014 Depto. Ciencia de la Computacin e IA

Motores de fsicas

V2

Motores de fsicas

Flotabilidad (I)

Videojuegos II

2013-2014 Depto. Ciencia de la Computacin e IA

Motores de fsicas

V2

Motores de fsicas

Flotabilidad (II)

Videojuegos II

2013-2014 Depto. Ciencia de la Computacin e IA

Motores de fsicas

10

V2

Motores de fsicas

Motores de fsicas
Open Source 2D

Open Source 3D

Comerciales

Videojuegos II

2013-2014 Depto. Ciencia de la Computacin e IA

Motores de fsicas

11

V2

Motores de fsicas

Abstraccin del motor


Todos los motores ofrecen funcionalidades similares
Es posible organizar el cdigo de forma que sea sencillo
reemplazar el motor de fsicas utilizado
Esto nos lo proporciona PAL (Physics Abstraction Layer)
Soporta la mayora de los principales motores

http://www.adrianboeing.com/pal

Videojuegos II

2013-2014 Depto. Ciencia de la Computacin e IA

Motores de fsicas

12

V2

Motores de fsicas

Aceleracin hardware
Physics Processing Unit (PPU)
PhysX P1 (PPU)
Lanzado en 2006
Especialmente para sistemas de partculas
AGEIA PhysX SDK

NVIDIA compra PhysX en 2008


Deja de utilizarse una unidad dedicada (PPU)
Pasa a utilizarse la GPU para acelerar las fsicas
Se habla de GPGPU (General Purpose GPU)

Videojuegos II

2013-2014 Depto. Ciencia de la Computacin e IA

Motores de fsicas

13

V2

Motores de fsicas

Tipos de motores de fsicas


Segn el tipo de cuerpos distinguimos
Partculas
Masas puntuales. Es el tipo ms sencillo.
Podemos ver las partculas como pequeas esferas con
masa.

Cuerpos rgidos
Los cuerpos tienen forma. Pueden moverse y rotar.
Es el tipo ms habitual de motor.

Cuerpos blandos
No todos los motores soportan este tipo de cuerpos.
Se puede implementar estableciendo conexiones entre
partculas.
Videojuegos II

2013-2014 Depto. Ciencia de la Computacin e IA

Motores de fsicas

14

V2

Motores de fsicas

Elementos del motor de fsicas


v

Sistema de simulacin fsica

Aplicar leyes de Newton


Fuerzas ejercidas sobre los cuerpos
Actualizacin de la velocidad y la posicin
Resuelve restricciones

Detector de colisiones
Detecta puntos de contacto entre cuerpos
La forma de los cuerpos es importante
Podemos utilizar deteccin de colisiones
sin simulacin fsica

Videojuegos II

2013-2014 Depto. Ciencia de la Computacin e IA

Motores de fsicas

15

V2

Motores de fsicas

Leyes de Newton
1. Un cuerpo mantiene su velocidad constante, a no ser que se
aplique una fuerza sobre l
Realmente lo que se mantiene constante es el momento, pero como
la masa no suele cambiar es equivalente (momento = masa x velocidad)

2. La aceleracin de un cuerpo es directamente proporcional a


la fuerza ejercida sobre l, e inversamente proporcional a su
masa
Fuerza de la gravedad

3. Cuando un cuerpo ejerce una fuerza sobre otro, el segundo


ejerce una fuerza de igual magnitud y direccin opuesta
sobre el primero
Fuerza de reaccin
Videojuegos II

2013-2014 Depto. Ciencia de la Computacin e IA

Motores de fsicas

16

V2

Motores de fsicas

Propiedades de los cuerpos


Cuerpos rgidos

Partculas

Posicin

Orientacin

Velocidad

Velocidad angular

Resistencia al aire

Resistencia al aire angular

Masa

Forma

Material

Videojuegos II

Friccin

Restitucin

2013-2014 Depto. Ciencia de la Computacin e IA

Motores de fsicas

17

V2

Motores de fsicas

Grados de libertad y restricciones


Un objeto tiene 6 grados de libertad en un mundo 3D

Traslacin en x

Rotacin en x

Traslacin en y

Rotacin en y

Traslacin en z

Rotacin en z

Podemos aadir restricciones para bloquear cualquiera de estos


grados de libertad
Hacer que un objeto no pueda rotar (por ejemplo personajes)
Hacer que un objeto no pueda trasladarse (podemos verlo flotando
y rotarlo en el aire)
Videojuegos II

2013-2014 Depto. Ciencia de la Computacin e IA

Motores de fsicas

18

V2

8 Constraints

Motores de fsicas

There are several constraints implemented in Bullet. See Demos/ConstraintDemo for


each of them. All constraints including the btRaycastVehicle are derived from btTyped
Constraint act between two rigidbodies, where at least one of them needs to be dynam

Uniones

Point to Point Constraint

Point to point constraint limits the translation so that the local pivot points of 2 rigidb
worldspace. A chain of rigidbodies can be connected using this constraint.

Los motores de fsicas permiten establecer uniones entre los


cuerpos
Hace que se restrinjan los grados de libertad de un objeto
respecto al otro
Las uniones pueden romperse si se aplica suficiente fuerza

btPoint2PointConstraint(btRigidBody& rbA,const btVector3& pivotInA);


btPoint2PointConstraint(btRigidBody& rbA,btRigidBody& rbB, const btVector3& pivotInA,const btVecto

http://bulletphysics.org

Slider Constraint

Figure 3 Point to point constraint


The slider constraint allows the body to rotate around one axis and translate along t

Hinge
Constraint
btSliderConstraint(btRigidBody&
useLinearReferenceFrameA);
http://bulletphysics.org

Resortes
Limitan la distancia
de forma elstica
Cuerdas
Limitan la distancia
mxima

rbA, btRigidBody& rbB, const btTransform& frameInA, const btTransf

Hinge constraint, or revolute joint restricts two additional angular degrees of freedom
can only rotate around one axis, the hinge axis. This can be useful to represent doors
rotating around one axis. The user can specify limits and motor for the hinge.

Rieles
8 Constraints
til para vas
o
There are several constraints implemented in Bullet. See Demos/ConstraintDemo for
ascensores
each of them. All constraints including the btRaycastVehicle are derived from

btHingeConstraint(btRigidBody& rbA,const btTransform& rbAFrame, bool useReferenceFrameA = false);


btHingeConstraint(btRigidBody& rbA,const btVector3& pivotInA,btVector3& axisInA, bool useReference
btHingeConstraint(btRigidBody& rbA,btRigidBody& rbB, const btVector3& pivotInA,const btVector3&
pivotInB, btVector3& axisInA,btVector3& axisInB, bool useReferenceFrameA = false);
btHingeConstraint(btRigidBody& rbA,btRigidBody& rbB, const btTransform& rbAFrame, const btTransfor
useReferenceFrameA = false);

btTyped

Constraint act between two rigidbodies, where at least one of them needs to be dynam

Bisagras
Point to Point Constraint
til para
puertas
Cone
Twist Constraint

Figure 5 Slider Constraint

Point to point constraint limits the translation so that the local pivot points of 2 rigidb
worldspace.
A chainthe
of rigidbodies
be connected
constraint.
To create ragdolls,
conve twist can
constraint
is very using
usefulthis
for limbs
like the upper a

point to point constraint that adds cone and twist axis limits. The x-axis serves as tw

btPoint2PointConstraint(btRigidBody& rbA,const btVector3& pivotInA);


btPoint2PointConstraint(btRigidBody& rbA,btRigidBody& rbB, const btVector3& pivotInA,const btVecto

Varillas
Mantienen la
distancia constante

Articulaciones
til para ragdolls

Figure 4 Hinge Constraint

btConeTwistConstraint(btRigidBody& rbA,const btTransform& rbAFrame);

btConeTwistConstraint(btRigidBody& rbA,btRigidBody& rbB,const btTransform& rbAFrame, const btTrans

Erwin Coumans

Bullet 2.80

Generic 6 Dof Constraint


- 28 -

Videojuegos II

2013-2014 Depto. Ciencia de la

This generic constraint can emulate


a variety
of standard
constraints, by configuring
Figure
3 Point
to point constraint
degrees of freedom (dof). The first 3 dof axis are linear axis, which represent translat
and the elatter
Each
can be either
Computacin
IA 3 dof axis represent the angular motion.
Motores
deaxis
fsicas
19 locked
On
construction
of
a
new
btGeneric6DofConstraint,
all
axis
are
locked.
Afterw
Hinge Constraint

V2

Motores de fsicas

Tipos de cuerpos (I)


Dinmico

Cinemtico

Esttico

Videojuegos II

2013-2014 Depto. Ciencia de la Computacin e IA

Motores de fsicas

20

V2

Motores de fsicas

Tipos de cuerpos (II)


Dinmicos
Cuerpos sometidos a fuerzas
El motor actualiza su posicin y velocidad
Pueden colisionar con otros cuerpos

Cinemticos
No les afectan las fuerzas (masa infinita)
Podemos modificar su posicin manualmente
Otros cuerpos pueden colisionar con ellos

Estticos
No les afectan las fuerzas (masa infinita)
No varan nunca su posicin, ni manualmente
Otros cuerpos pueden colisionar con ellos
Videojuegos II

2013-2014 Depto. Ciencia de la Computacin e IA

Motores de fsicas

21

V2

Motores de fsicas

Personajes dinmicos y cinemticos


Los personajes del juego suelen ser cinemticos

No es buena idea aplicar simulacin fsica sobre ellos


Puede provocar un comportamiento inesperado
Es mejor definir un comportamiento personalizado para el personaje
Hace falta implementar la interaccin con otros objetos

En algunos casos podramos tener personajes dinmicos


No suele ser una prctica recomendable
Requiere hacer ajustes a las fsicas para obtener un comportamiento
aceptable
La interaccin con otros objetos la proporciona el motor de fsicas

Videojuegos II

2013-2014 Depto. Ciencia de la Computacin e IA

Motores de fsicas

22

V2

Motores de fsicas

Cambio dinmico-cinemtico
Los objetos pueden cambiar de tipo
Aplicacin: muerte de los enemigos
Los enemigos son personajes cinemticos no
sometidos a fsica
Cuando matamos a un enemigo pasa a ser dinmico
El enemigo es un ragdoll

Aplicacin: transporte de cajas


Las cajas son objetos dinmicos
Cuando cogemos una caja puede pasar a formar
parte del nodo del personaje y deja de estar
sometida a fsicas (parenting)
Al soltar la caja volver a someterse a fsicas
Videojuegos II

2013-2014 Depto. Ciencia de la Computacin e IA

Motores de fsicas

23

V2

Motores de fsicas

Cajas (I)
Podemos aplicar fuerza para empujar cajas
La combinacin con personajes cinemticos no es trivial
Puede requerir bastantes ajustes para obtener el efecto deseado

Videojuegos II

2013-2014 Depto. Ciencia de la Computacin e IA

Motores de fsicas

24

V2

Motores de fsicas

Cajas (II)
Podemos transportar objetos de otras formas
Vincularlos al personaje cinemtico, de forma rgida o elstica
Vincularlos al personaje dejando de aplicar fsicas para el objeto

Videojuegos II

2013-2014 Depto. Ciencia de la Computacin e IA

Motores de fsicas

25

V2

Motores de fsicas

Plataformas cinemticas
Podemos establecer plataformas mviles (ascensores) como
cuerpos cinemticos
Al mover la plataforma, los cuerpos dinmicos que reposen sobre
ella tambin se movern
Por esto es importante la distincin entre esttico y cinemtica

Videojuegos II

2013-2014 Depto. Ciencia de la Computacin e IA

Motores de fsicas

26

V2

Motores de fsicas

Cuando la fsica falla

Videojuegos II

2013-2014 Depto. Ciencia de la Computacin e IA

Motores de fsicas

27

V2

Motores de fsicas

Cuando la fsica falla

Videojuegos II

2013-2014 Depto. Ciencia de la Computacin e IA

Motores de fsicas

28

V2

Motores de fsicas

Cuando la fsica falla

Videojuegos II

2013-2014 Depto. Ciencia de la Computacin e IA

Motores de fsicas

29

V2

Motores de fsicas

Cuando la fsica falla

Videojuegos II

2013-2014 Depto. Ciencia de la Computacin e IA

Motores de fsicas

30

V2

Motores de fsicas

La fsica es impredecible

http://www.dailymail.co.uk/sciencetech/article-2071700/How-Fifa-12s-physics-engine-players-impossible.html

Videojuegos II

2013-2014 Depto. Ciencia de la Computacin e IA

Motores de fsicas

31

V2

Motores de fsicas

Fases del motor de fsicas


Deteccin de colisiones

Broad phase
Generacin de contactos
Simulacin fsica

Resolucin de contactos y restricciones


Integracin de velocidad y posicin

Videojuegos II

2013-2014 Depto. Ciencia de la Computacin e IA

Motores de fsicas

32

V2

Motores de fsicas

Referencias
Por qu es mala idea usar fsicas para un juego de plataformas?
http://www.learn-cocos2d.com/2013/08/physics-engine-platformerterrible-idea/

Personajes dinmicos y cinemticos


http://www.digitalrune.com/Support/Blog/tabid/719/EntryId/40/
Kinematic-vs-Dynamic-Character-Controllers.aspx

Videojuegos II

2013-2014 Depto. Ciencia de la Computacin e IA

Motores de fsicas

33

V2

Motores de fsicas

Preguntas...?

Videojuegos II

2013-2014 Depto. Ciencia de la Computacin e IA

Motores de fsicas

34

Вам также может понравиться