Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: burb en 04 de Mayo de 2006, 11:01:47 AM

Título: Fallo En Ode
Publicado por: burb en 04 de Mayo de 2006, 11:01:47 AM
 Estoy aprendiendo a usar esta libreria de fisica y me ha surgido un problema al empezar a utilizar los Trimesh. Recibo un error de excepcion en la funcion dCollide, concretamente: Access violation reading location 0x00000008.
He de decir que otros mesh de tipo box, sphere y plane me funcionan correctamente con esta función.

Para simplificar he acabado haciendo un simple triangulo pero sigue dando error en el momento que es llamado dCollide, incluso antes de producirse ninguna colision.

Lo creo asi:

float vertex[3][3]={ 0,0,100, -200,0,-200, 200,0,-200};
int Index[3]={0,1,2};

dTriMeshDataID DataID=dGeomTriMeshDataCreate();

dGeomTriMeshDataBuildSingle(DataID, vertex, sizeof(float)*3, 3,
 Index, 3, sizeof(int)*3);

 dGeomID = dCreateTriMesh(0, DataID, 0, 0, 0);


¿alguien sabe a que puede deberse?
Título: Fallo En Ode
Publicado por: derethor en 05 de Mayo de 2006, 12:19:26 AM
Cita de: "burb"Estoy aprendiendo a usar esta libreria de fisica y me ha surgido un problema al empezar a utilizar los Trimesh. Recibo un error de excepcion en la funcion dCollide, concretamente: Access violation reading location 0x00000008.
He de decir que otros mesh de tipo box, sphere y plane me funcionan correctamente con esta función.

Para simplificar he acabado haciendo un simple triangulo pero sigue dando error en el momento que es llamado dCollide, incluso antes de producirse ninguna colision.

Lo creo asi:

float vertex[3][3]={ 0,0,100, -200,0,-200, 200,0,-200};
int Index[3]={0,1,2};

dTriMeshDataID DataID=dGeomTriMeshDataCreate();

dGeomTriMeshDataBuildSingle(DataID, vertex, sizeof(float)*3, 3,
 Index, 3, sizeof(int)*3);

 dGeomID = dCreateTriMesh(0, DataID, 0, 0, 0);


¿alguien sabe a que puede deberse?

no me meto en si el formato del trimesh es correcto o no, pero ese problema es tipico del ODE...

el problema es que ODE reserva memoria en la pila durante la llamda del dCollide, y normalmente saca un stack overflow si tienes muchos puntos de contacto... en el FAQ explican como solucionarlo, cambiando los parametros del compilador...