Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





AABB

Iniciado por samsaga2, 01 de Enero de 1970, 01:00:00 AM

« anterior - próximo »

samsaga2

                                A ver si m'enterao...

Yo tengo dos vectores min y max indicando el tamaño de mi AABB. Cuando rote el objeto que está contenido dentro de esta caja tengo que rotar los vectores min y max (multiplicando por la matriz actual por ejemplo) y recalcular de nuevo el min y max de la caja (guardandolo sólo de forma temporal, siempre recalculo sobre los vectores originales). Luego para ver si el objeto está en pantalla sólo tengo que testear la colisión de este nuevo AABB contra el View Frustum. Luego en un futuro usaré el AABB para ir asignandole un nodo de un Octree a cada objeto (¿que ocurre si el objeto está en la mitad de dos nodos o más?)

¿Voy por buen camino?

Por cierto buscando sobre el tema me encontre esta web http://citeseer.nj.nec.com/cs no sé como he podido pasar antes sin ella :sonriendo:
                               

Lord Trancos

                                Yo diria que si, que vas por buen camino :sonriendo:

Si lo quieres mas facil (y mas rapido), en lugar de un AABB puedes usar una bounding Sphere (una esfera que envuelva al objeto) y de ese modo te ahorras el tener que recalcular el AABB. (tan solo tendras que transladar el centro de la bounding sphere).

En cuanto a que pasa si un objeto esta entre dos (o mas) nodos, no es ningun problema. Asignale todos esos nodos o bien un nodo padre dentro del cual este completamente. (menos preciso). En el caso de que le asignes todos los nodos en los que se encuentra; simplemente lleva la cuenta de que objetos llevas dibujados y evita dibujarlos varias veces.

                               
i>SaludoteZ de Lord Trancos!
http://www.dxlab.tk - http://dxlab.host.sk - programación de DirectX con Delphi.

samsaga2

                                El bounding sphere ya lo tengo rulando, habia pensado en testar primero un bounding sphere y si colisiona luego un AABB en los objetos.
Otra dudilla que me corroe, cuando el objeto está animado, como se hace? Hay que recalcular en todos los frames el bounding sphere y el AABB?                                

Lord Trancos

                                Sip, tienes que recalcularlos en cada frame. Lo bueno del bounding sphere es que solo necesitas mover el centro de la esfera a la misma posicion en la que se encuentra el objeto, lo cual es muy sencillo y rapido. En el caso del AABB hay que hacer lo que comentabas en el primer mensaje, que es un poco mas lento.

Contra la colision del frustum de la camara, deberia de bastarte con la bounding sphere... yo no usaria el AABB a no ser que el objeto fuera muy cuadrado (como por ejemplo el nodo de un octree).

Para otro tipo de colisiones... depende mucho de que es lo que quieras hacer.
                               
i>SaludoteZ de Lord Trancos!
http://www.dxlab.tk - http://dxlab.host.sk - programación de DirectX con Delphi.






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.