Foros - Stratos

Programadores => Programación gráfica => Mensaje iniciado por: Eskema en 30 de Octubre de 2009, 02:08:46 PM

Título: Problema con cajas AABB opengl [SOLUCIONADO]
Publicado por: Eskema en 30 de Octubre de 2009, 02:08:46 PM
SOLUCIONADO: En openglES se trabaja con triangulos solo no con quads, asi que necesitaba desplazar los vertices de 6 en 6, usea 2 triangulos y no de 1 en 1 como esta haciendo ;)



Muy buenas, hoy le toca el turno a las AABB y me traen de cabeza, tan solo 1 modelo traza su caja bien, el resto no cuadra con el modelo, asi que mi pregunta es, ¿puede ser problema del modelo?, yo entiendo que si todo se dibuja mal es que yo no lo hago bien, pero si una caja se dibuja bien y el resto no, yo pienso que debe ser problema del modelo, que debe tener algun vertice por donde cristo perdio las zapatillas y al escanear el modelo buscando su max/min los toma como referencia.

¿Es posible o la estoy cagando yo?, aqui os dejo una imagen del error

(http://www.telefonica.net/web2/eskemagames/error2.jpg)


Y el codigo que estoy usando,
int vertice=0;     

maxAABB[0]=-10000000.0f;
maxAABB[1]=-10000000.0f;
maxAABB[2]=-10000000.0f;

minAABB[0]= 10000000.0f;
minAABB[1]= 10000000.0f;
minAABB[2]= 10000000.0f;


for(int i=1;i<vertexCount;i++)
{
//x coord
if(data->coordinate[vertice] >  maxAABB[0])   maxAABB[0] = data->coordinate[vertice];
if(data->coordinate[vertice] < minAABB[0]) minAABB[0] = data->coordinate[vertice];
vertice++;
//y coord
if(data->coordinate[vertice] >  maxAABB[1])  maxAABB[1] = data->coordinate[vertice];
if(data->coordinate[vertice] < minAABB[1]) minAABB[1] = data->coordinate[vertice];
vertice++;
//z coord
if(data->coordinate[vertice] >  maxAABB[2])  maxAABB[2] = data->coordinate[vertice];
if(data->coordinate[vertice] < minAABB[2]) minAABB[2] = data->coordinate[vertice];
vertice++;

}

   
//store max/min on 24 points
//6 faces x 4 points

//vertex 1     
BoxVertices[0] = minAABB[0];     
BoxVertices[1] = minAABB[1];     
BoxVertices[2] = minAABB[2]; 

//vertex 2
BoxVertices[3] = maxAABB[0];
BoxVertices[4] = minAABB[1];
BoxVertices[5] = minAABB[2];

    //vertex 3                                                   
BoxVertices[6] = maxAABB[0];     
BoxVertices[7] = maxAABB[1];     
BoxVertices[8] = minAABB[2]; 

//vertex4
BoxVertices[9]  = minAABB[0];
BoxVertices[10] = maxAABB[1];
BoxVertices[11] = minAABB[2];

//vertex 5                                               
BoxVertices[12]= minAABB[0]; 
BoxVertices[13]= minAABB[1];   
BoxVertices[14]= maxAABB[2];     

//vertex6
BoxVertices[15]= maxAABB[0];
BoxVertices[16]= minAABB[1];
BoxVertices[17]= maxAABB[2];

    //vertex 7                                                 
BoxVertices[18]= maxAABB[0];     
BoxVertices[19]= maxAABB[1];         
BoxVertices[20]= maxAABB[2];     

//vertex 8
BoxVertices[21]= minAABB[0];
BoxVertices[22]= maxAABB[1];
BoxVertices[23]= maxAABB[2];


Saludos,
Título: Re: Problema con cajas AABB opengl [SOLUCIONADO]
Publicado por: fiknius en 05 de Noviembre de 2009, 09:34:47 AM
Puede ser que el que esta bien tambien este mal, solo que por casualidad coincide  >.< , hazte unos modelos basicos (cubo, piramide o la tetera famosa y comprueba que se pinta bien la bounding box, asi por lo menos sabras si es que en tus modelos tienes algo por ahí perdido o eres tu el que la cagas.