Está en la página 1de 7

Deteccin de colisiones en 3D con CUDA

Por: WILBERT ANTONIO CAMPOS MAGAA Materia: Cmputo cientfico utilizando CUDA. Profesor: Dr. Ricardo Legarda Senz

La Deteccin de Colisiones es el mtodo utilizado por algunos video juegos o simulaciones para detectar si dos objetos han colisionado. La deteccin puede ser por rea o pxel a pixel: Por rea: los objetos ocupan un rea, rectangular o circular, cuando dos de estas reas se superponen hay una colisin.

Importancia de la deteccin de colisiones Eficiencia.

Muchas comparaciones por fotograma. Distintos usos


Reaccionar ante colisiones de objetos.

Bsqueda de caminos libres (bots). Problema de los N objetos.

Algoritmos ms comunes
Algoritmos de 2 fases. o Broad phase (Fase ancha). Caractersticas: Se usan aproximaciones para descartar. Mejora de velocidad similar a una poda. Tcnicas: Bounding volumes BV Hierarchies Spatial partitioning (global / local)

Algoritmos de 1 sola pasada. Estrategias. Explotar coherencia espacio/temporal. Precalcular

Tcnica:

Bounding Volumes.
Enmarcan el objeto dentro de un volumen aproximado ms sencillo. BV Ms usados:

Spheres (bajo coste, baja precisin). Boxes (coste medio, mejor precisin). Polihedra (mayor coste, mayor precisin).

Hubbards sphere tree.


Se trata de una jerarqua de esferas que pueden aproximar un objeto tanto como se quiera.

Spatial Partitioning
Se divide el espacio en bloques para comprobar slo dentro de cada uno. Diversas opciones para dividir: Octrees.

Voxels de tamao fijo. rboles BSP.

rbol kd (abreviatura de rbol k-dimensional) es una estructura de datos de particionado del espacio que organiza los puntos en un Espacio eucldeo de k dimensiones. Los rboles kd son un caso especial de los rboles BSP. Un rbol kd emplea slo planos perpendiculares a uno de los ejes del sistema de coordenadas. Esto difiere de los rboles BSP, donde los planos pueden ser arbitrarios. Adems, todos los nodos de un rbol kd, desde el nodo raz hasta los nodos hoja, almacenan un punto. Mientras tanto, en los rboles BSP son las hojas los nicos nodos que contienen puntos (u otras primitivas geomtricas). Como consecuencia, cada plano debe pasar a travs de uno de los puntos del rbol kd. Tcnicamente, la letra k se refiere al nmero de dimensiones. Un rbol kd tridimensional podra ser llamado un rbol 3d. Sin embargo se suele emplear la expresin "rbol kd tridimensional". (Tambin es ms descriptivo, ya que un rbol tridimensional puede ser varias cosas, pero el trmino rbol kd se refiere a un tipo en concreto de rbol de particionado.) Las letras k y d se escriben en minsculas, incluso al principio de una oracin. La k se escribe en cursiva, aunque son tambin comunes las formas "rbol KD" y "rbol Kd".

Un rbol kd tridimensional. La primera divisin (rojo) corta la celda raz (blanco) en dos subceldas, que son divididas a su vez (verde) en dos subceldas. Finalmente, cada una de esas cuatro es dividida (azul) en dos subceldas. Dado que no hay ms divisiones, las ocho finales se llaman hojas. Las esferas amarillas representan los nodos del rbol

CUDA
CUDA es una plataforma de computacin paralela y un modelo de programacin inventado por NVIDIA. Permite aumentos impresionantes en el rendimiento de la computacin al aprovechar la potencia de la unidad de procesamiento de grficos (GPU).

El objetivo principal de usa CUDA es mejorar el rendimiento, resolver un

problema con ms rapidez. Dado que una animacin requiere hacer muchas comparaciones por fotograma para que se vea real, se decidi usar esta tecnologa.

Nuestro trabajo se enfoco en la deteccin de colisiones usando las siguientes tcnicas : - Bounding Volumes (Esferas) -Particionamiento Espacial(Arbol Kd) Desarrollo del trabajo: Se realizo una pequea animacin en la cual se grafica un objeto en 3D al cual se le dejan caer un conjunto de esferas, el objetivo es detectar la colision de las esferas cayendo con el Objeto. El objeto, un modelo 3D, tiene mas de 2000 polgonos (tringulos), para cada triangulo en el modelo se encontr el circuncentro.

Cada circuncentro sirvi para generar las esferas, Bounding Volumes, de cada polgono. Los datos de estas esferas, posicin en X, Y, Z y el radio de estas sirvieron para generar un rbol KD[1] que se uso como espacio de bsqueda para la deteccin de las colisiones. Para generar el rbol se uso CUDA, tambin se uso CUDA para hacer la bsqueda de distancias entre los centros de las esfera del rbol y los centros de las esferas que iban cayendo.

A continuacin presentamos algunas imgenes tomadas de nuestra animacin:

Nota: Para inciar la animacin presionar la tecla i, para mostrar las eferas que se usaron para detectar las colisiones presionar la telca p. Referencias:

[1]http://nghiaho.com/?p=437 [2]http://upload.wikimedia.org/wikipedia/commons/b/b6/3dtree.png [3]http://es.wikipedia.org/wiki/%C3%81rbol_kd [4]http://www.dccia.ua.es/dccia/inf/asignaturas/RG/2002/trabajos/colisiones3d.pdf [5]3D Math Primer for Graphics and Game Development-Fletcher Dunn [6] OpenGL Programming Guide

También podría gustarte