Está en la página 1de 28

Deteccin de Colisiones

Colisin
Una Colisin ocurre cuando un objeto pasa a
travs de otro.

El Manejo de las colisiones comprende dos
partes:
A) Deteccin de la Colisin.
B) Respuesta a la Colisin.
Geometra en Deteccin de Colisiones
Algoritmos para resolver problemas
geomtricos
Interseccin de Objetos.
Proximidad de Objetos.

Ecuaciones matemticas involucradas


Distancia Punto a Punto.
Distancia de un Punto a una Lnea.
Distancia entre dos Lneas.



Bounding Objects
Hacen la deteccin de colisiones mas sencilla
Provee un conjunto sencillo de opciones para
determinar si existe la colisin.
Son utilizados para Colisiones , Seleccin y
Rendering.
Bounding Sphere
Colisin entre esferas:

La colisin entre esferas se da cuando la
distancia entre sus centros es menor que la
suma de sus radios.
Bounding Box
Colisin entre cajas alineadas:

Se comparan las coordenadas mnimas y
mximas en las direcciones x,y,z. Si min2 >
max1 o min1 > max2 no hay collision.
Min1 Max1 Min2 Max2
Algoritmos de Deteccin de
Colisiones
El objetivo principal de los algoritmos de
deteccin de colisin es calcular las
interacciones geomtricas entre los objetos,
sin importar el nmero y complejidad que los
objetos puedan tener.

El Problema
Los algoritmos tradicionales requieren de una
gran cantidad de pruebas de interseccin
geomtrica, verificando si todos los polgonos
que modelan la superficie de un objeto
intersectan a algn polgono del otro objeto.


La Solucin
La mayora de los investigadores en el rea
proponen algoritmos que reduzcan el nmero
de llamados para verificar la interseccin
entre dos primitivas geomtricas, estas
tcnicas plantean un tipo de volmenes
envolventes, organizados en una estructura
jerrquica y con ello evitar lo ms posible la
verificacin de los pares de primitivas
geomtricas.

Objetos representados con Esferas
Caractersticas
Han demostrado que son efectivos.
Solamente se verifica una pequea fraccin de
pares de primitivas.
Si los sistemas jerrquicos presentan
interseccin, entonces se aplica una prueba de
verificacin ms precisa.



Estructuras para Deteccin de
Colisiones
Arboles de conos,
Arboles k-d
Octress
Arboles de esferas,
Arboles R y sus variantes,
Arboles basados en S-Bounds
Representaciones basadas en BSP.

Tipos de Estructuras Jerarquicas
La Jerarqua de la subdivisin de espacio

El ambiente se subdivide en una jerarqua espacial. Los objetos en el
ambiente son agrupados jerrquicamente segn las regiones en que ellos se
encuentran.

La Jerarqua de la subdivisin del objeto.
Cada objeto se subdivide en una jerarqua envolvente, es decir, en una
jerarqua de volmenes envolventes.

Estructuras jerrquicas basadas en
Esferas
Una de las formas simples para comprobar la
interseccin es la esfera. Un par de esferas se
intersectan si la distancia entre sus centros es
menor que la suma de sus radios. Las
operaciones que involucran la interseccin
entre esferas son menos costosas que las
utilizadas por el mtodo de Fuerza Bruta
(Tringulo VS Tringulo).

Estructuras jerrquicas basadas en
Esferas
Utilizan las esferas para cubrir la superficie de
los objetos.

La jerarqua de esferas se utiliza para dividir la
superficie del objeto en varias regiones y a
travs de ellas poder dirigir la deteccin de la
colisin hacia el rea de la superficie del
objeto donde probablemente existe
interseccin con el otro objeto

Algoritmos
rbol jerrquico de esferas basado en Octree.


rbol de esferas usando superficies con Ejes
Centrales.

Objetivo de los arboles de esferas.
La meta principal de este tipo de algoritmos
basados en rboles de esferas, es descartar
rpidamente las posiciones libres de colisin
dentro del ambiente. Y concentrar su trabajo en
aquellas donde probablemente se presente una
colisin y as reducir su tiempo de deteccin.
Podemos concluir que la clave para la deteccin
de colisiones en tiempo real, es el mtodo que
permita detectar ms rpidamente cuando dos
objetos no presentan colisin.

Jerarqua de Esferas
Colisiones entre conjuntos de datos volumtricos
y los objetos poligonales
Aparece en aplicaciones tales como:
a) Simulacin de la ciruga
b) La edicin por volumen

Se desarrollo una sala de ciruga virtual es en
la Universidad Central de Venezuela, con el
objetivo de la simulacin de cirugas de
rodilla.
Datos volumtricos
y Objetos poligonales
Aplicaciones que requieren datos mixtos debido a
que los huesos y los msculos esta dados de
forma volumtrica a partir de tomografas
computarizadas, mientras que los instrumentos
quirrgicos se representan como mallas.
Esto impone la necesidad de una especial
tcnicas de deteccin de colisiones que pueden
manejar la interacciones entre los volmenes y
mallas.

Datos volumtricos
y Objetos poligonales
Esta tcnica consiste en definir un mapeo entre el
espacio de volumen (tambin que se refiere como
espacio de textura) y el espacio del ojo, tales como
una textura de coordenadas puede ser asignado a
cada vrtice de la malla, y por lo tanto, a cada
fragmento durante la rasterizacin. Existe una
colisin si un texel malla no es transparente.
Colisin Volumen - Malla
Consiste en texturizar los polgonos de la
malla con el volumen, la deteccin de la
colisin se conseguir en el Fragment Shader.

El procedimiento consiste en atribuir una
textura 3D a cada vrtice de malla a travs de
correspondencia entre el espacio objeto y
espacio textura.
Vertex Shader
/ / VERTEX SHADER
void main( )
{
/ / surface verteces in eye space
gl_TexCoord [ 0 ] = gl_ModelViewMat r ix * gl_Vertex ;
/ / vertex projection
gl _ Position = gl_ProjectionMatrix * gl_TexCoord [ 0 ] ;
/ / surface vertexes in texture space
gl_TexCoord [ 0 ] = gl _TextureMatrixInverse[ 0 ] * gl_TexCoord [ 0 ] ;
}
Colisin Volumen - Malla
El fragment shader recibe una coordenada de
textura 3D interpolada para evaluar si el
fragmento es texturizado con un voxel opaco, lo
que significa que el polgono choca con el
volumen.

Las coordenadas de textura de vrtices de malla
son interpolados durante la rasterizacion. As, el
fragment shader recibe el fragmento de malla
con sus correspondientes coordenadas de
texturas en 3D.
Fragment Shader
/ / 3D texture identifier for the volume
uniform sampler3D volume ;
/ / precomputed integrals table
uniform sampler1D transfer_function ;
void main ( )
{
/ / validate texture coordinates
i f ( gl_TexCoord [ 0 ] [ 0 ] < 0 . 0 | | gl_TexCoord [ 0 ] [ 1 ] < 0 . 0 | |
gl_TexCoord [ 0 ] [ 2 ] < 0 . 0 | | gl_TexCoord [ 0 ] [ 0 ] > 1 . 0 | |
gl_TexCoord [ 0 ] [ 1 ] > 1 . 0 | | gl_TexCoord [ 0 ] [ 2 ] > 1 . 0 )
discard ;
/ / Obtain fragment opacity for testing
i f ( texture1D ( transfer_function , texture3D ( volume , gl_TexCoord [ 0 ] . xyz ) . r ) . a < 0 . 1 )
discard ;

/ / Eureka ! Collision detected
gl _FragColor = vec4 ( 0 . 0 , 0 . 0 , 0 . 0 , 1 . 0 ) ;
}
Occlusion Query
OpenGL posee un mecanismo para contar el
numero de fragmentos que pasan el TEST :

The Occlusion Query OpenGL Extension
Dudas y Preguntas

También podría gustarte