Foros - Stratos

Programadores => Programación gráfica => Mensaje iniciado por: bnl en 02 de Septiembre de 2007, 10:48:21 PM

Título: Error al calcular el BoundingBox en DirectX
Publicado por: bnl en 02 de Septiembre de 2007, 10:48:21 PM
Estoy intentando calcular el BoundingBox de una malla para controlar las colisiones mediante:

Geometry.ComputeBoundingBox(vertexData, maya.NumberVertices, description.VertexFormat, min, max)

Segun tengo entendido los vectores max y min estan dados en coordenadas del espacio-modelo. Por lo que les aplico a ambos la matriz de transformación del objeto:

min = Microsoft.DirectX.Vector3.TransformCoordinate(min, Me.MatrizMundo)

Sin embargo en algunos casos los valores no son correctos, es como si no detectara una parte de la malla.

¿Sabeis donde puede estar el problema?

Saludos
Título: Error al calcular el BoundingBox en DirectX
Publicado por: XÑA en 02 de Septiembre de 2007, 11:48:56 PM
no, los valores qe te devuelve min y max dependen del modelo. Así que si tu modelo está en WorldSpace, te devolverá valores en WorldSpace. Normalmente los modelos están en object space, así que te devolverá object.
Título: Error al calcular el BoundingBox en DirectX
Publicado por: bnl en 03 de Septiembre de 2007, 12:11:28 AM
Gracias por la respuesta

¿Object space es lo mismo que espacio-modelo?

El modelo creo que está en Espacio-Modelo ya que de da las posiciones antes de haberlas escalado, rotado y movido.

¿Como puedo poner el modelo en WorldSpace?
Título: Error al calcular el BoundingBox en DirectX
Publicado por: XÑA en 03 de Septiembre de 2007, 10:38:53 AM
sí, object space es lo mismo que model-space.

Pues si tienes el objeto en object space, y necesitas el bounding en world space, tienes que multiplicar el min y max que te devuelve por la matriz de transformación a World Space. El problema es que si hay rotaciones, el 'cubo' que forma el bounding box, también te rotará y ya no te quedará un cubo alineado con los ejes XYZ, que es lo que se suele buscar. Para resolverlo, con los valores que te da el min y el max, vuelve a calcular el bounding box de esos 8 puntos.
Título: Error al calcular el BoundingBox en DirectX
Publicado por: bnl en 03 de Septiembre de 2007, 07:15:10 PM
Si, parece que el bounding box tambien rota.

He probado a obtener el bounding box, rotarlo y calcular el bounding box del anterior bounding box, pero no funciona.
Título: Error al calcular el BoundingBox en DirectX
Publicado por: bnl en 03 de Septiembre de 2007, 08:51:48 PM
Solucionado :-)
Gracias