casi que lo más sencillo y práctico que puedes hacer es crear funciones (o usarlas si ya las tienes) que comprueben colisiones entre cajas, esferas y polígonos (todos con todos). No hace falta que los modeles, porque son imaginarios, a menos que quieras verlos para depurar o por curiosidad. Sencillamente basta una matriz para describirlos, porque en ella tienes la posición, la orientación (para el caso de las cajas) y la escala.
A cada objeto le asignas uno u otro bounding, excepto a los que colisionen por póligonos que serán aquellos que requieran precisión y no sean demasiado complejos, por ejemplo los muros, para estos tendrás que pasar a la función de colisión la geometría del propio modelo.
Tendrás a veces que asignar varios, de manera que se aproxime a su entorno. Para un coche pueden servir un par de cajas, y para un humano una esfera para la cabeza, y unas cajas para tronco y extremidades.
Cuando ya tienes las funciones implementadas y los boundings asociados a cada modelo o a cada parte del modelo. Ahora para cada par de objetos que compruebes usa las funciones correspondientes. Por ejemplo, para comprobar la colisión entre la cámara y el muro, se deberá usar la función que comprueba entre la esfera y una serie de polígonos (los mismos que componen los muros).
O si quieres saber si hay colisión entre una espada con un personaje se comprobaría el BoundingBox que tiene asociado la espada con cada uno de los boundings que componen el personaje. Si le has definido con 50 esferas por poner un ejemplo, pues se sabrá con bastante exactitud en qué parte del cuerpo ha colisionado. Si no hace falta mucha precisión pues basta con una esfera.
Pero no hace falta que hagas la esfera, simplemente objetos asociados de una clase (CBoundingSphere) que describa su posición y su radio o una matriz 3d, y que tenga las funciones de comprobación con otros tipos de boundings o con series de polígonos.
vaya charla, espero que te sirva de orientación.
A cada objeto le asignas uno u otro bounding, excepto a los que colisionen por póligonos que serán aquellos que requieran precisión y no sean demasiado complejos, por ejemplo los muros, para estos tendrás que pasar a la función de colisión la geometría del propio modelo.
Tendrás a veces que asignar varios, de manera que se aproxime a su entorno. Para un coche pueden servir un par de cajas, y para un humano una esfera para la cabeza, y unas cajas para tronco y extremidades.
Cuando ya tienes las funciones implementadas y los boundings asociados a cada modelo o a cada parte del modelo. Ahora para cada par de objetos que compruebes usa las funciones correspondientes. Por ejemplo, para comprobar la colisión entre la cámara y el muro, se deberá usar la función que comprueba entre la esfera y una serie de polígonos (los mismos que componen los muros).
O si quieres saber si hay colisión entre una espada con un personaje se comprobaría el BoundingBox que tiene asociado la espada con cada uno de los boundings que componen el personaje. Si le has definido con 50 esferas por poner un ejemplo, pues se sabrá con bastante exactitud en qué parte del cuerpo ha colisionado. Si no hace falta mucha precisión pues basta con una esfera.
Pero no hace falta que hagas la esfera, simplemente objetos asociados de una clase (CBoundingSphere) que describa su posición y su radio o una matriz 3d, y que tenga las funciones de comprobación con otros tipos de boundings o con series de polígonos.
vaya charla, espero que te sirva de orientación.

