Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Problema con cajas AABB opengl [SOLUCIONADO]

Iniciado por Eskema, 30 de Octubre de 2009, 02:08:46 PM

« anterior - próximo »

Eskema

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




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,

fiknius

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.






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.