[ODE] Newbie TriMesh problems

Jaroslav Sinecky sinecky at telefonica.net
Fri Apr 7 09:12:02 MST 2006


Hi,

what version of ode do you use? did you try last svn trunk? there was a bug
in sphere-trimesh collision that appeared when triangle elevation was not
zero. But it shouldn't cause the sphere to go straight through, so it
doesn't look like that.

Also, couldn't be that what you see is a simple time tunneling? Considering
what you describe, probably not, but anyway, it's easy to try to lower your
timestep to see if something change.

Jaroslav

> -----Original Message-----
> From: ode-bounces at q12.org [mailto:ode-bounces at q12.org]On Behalf
> Of The Hutch
> Sent: Friday, April 07, 2006 4:20 PM
> To: ode at q12.org
> Subject: Re: [ODE] Newbie TriMesh problems
>
>
>
> ...Additional information...
>
> Maybe this will help someone guide me to what I am doing wrong:
>
> If I drop my sphere at different locations around my terrain - it
> seems that
> the ball successfully interacts with the terrain if and only if
> the terrain
> height at that location is near zero. As soon as I drop the ball
> on top of a
> mountain or at the bottom of a valley - then it just goes
> straight through!
>
> Does this shed any light on the problem? It must be some kind of
> AABB issue
> surely?
>
> Help!
>
> Rich
>
>
> -----Original Message-----
> From: ode-bounces at q12.org [mailto:ode-bounces at q12.org]On Behalf Of The
> Hutch
> Sent: 07 April 2006 14:40
> To: ode at q12.org
> Subject: Re: [ODE] Newbie TriMesh problems
>
>
>
> OK - so it turned out the problems I was experiencing were caused by an
> incorrectly set rotation matrix. After tracking down the cause - it was
> because I thought Quaternions were in the form:
>
> 	x, y, z, w
>
> and not
>
> 	w, x, y, z
>
> That has now fixed some of my problems.
>
> However, I am still experiencing difficulties. A quick reminder: I have a
> large TriMesh representing my terrain and a single sphere. When I keep the
> terrain flat it works fine, the ball bounces on the spot as you would
> expect. However, as soon as I add a substantial amount of height
> data, there
> appear to be "holes" in the tri mesh - the sphere just passes straight
> through it.
>
> I have debugged the code as best I can - I slow time right down when the
> sphere is intersecting the terrain - then I step through. In the function
> "dCollideSTL" it never flags a contact. So it retuns in the test:
>
> 	if (! Collider.GetContactStatus()) {
> 		// no collision occurred
> 		return 0;
> 	}
>
> I would really appreciate some help with this.
>
> Rich
>
>
>
>
> -----Original Message-----
> From: ode-bounces at q12.org [mailto:ode-bounces at q12.org]On Behalf Of The
> Hutch
> Sent: 06 April 2006 15:23
> To: ode at q12.org
> Subject: [ODE] Newbie TriMesh problems
>
>
> Greetings,
>
> I have only recently started to use ODE and am having trouble with
> TriMesh's. I am attempting to have a sphere bounce around a TriMesh
> landscape.
>
> In my world I have a left handed coord system with Y up. Everything works
> fine for the most degenerate of cases (i.e. a flat terrain) but
> as soon as I
> add a little height that's when things start to go wrong. It was necessary
> for me to change the orientation of my triangles in order for the
> normals to
> be pointing in the correct direction.
>
> The setup of my TriMesh is as follows:
>
> ...
>
> // Assume the existance of a class called xTerrainMesh that contains a
> // collection of CollisionTri's
>
> int iNumTris  = xTerrainMesh.GetNumTris();
> int iNumVerts = 3 * iNumTris;
>
> m_pxVerts = new dVector3[iNumVerts];
> m_pxTris  = new int[3 * iNumTris];
>
> int i  = 0;
>
> CollisionTri* pxTri = xTerrainMesh.GetFirstTri();
> for( int iTri = 0; iTri < xTerrainMesh.GetNumTris(); ++iTri, pxTri =
> pxTri->m_pxNext )
> {
>     m_pxVerts[i][0] = pxTri->m_xA.fX;
>     m_pxVerts[i][1] = pxTri->m_xA.fY;
>     m_pxVerts[i][2] = pxTri->m_xA.fZ;
>     m_pxTris[i] = i;
>     i++;
>
>     m_pxVerts[i][0] = pxTri->m_xC.fX;
>     m_pxVerts[i][1] = pxTri->m_xC.fY;
>     m_pxVerts[i][2] = pxTri->m_xC.fZ;
>     m_pxTris[i] = i;
>     i++;
>
>     m_pxVerts[i][0] = pxTri->m_xB.fX;
>     m_pxVerts[i][1] = pxTri->m_xB.fY;
>     m_pxVerts[i][2] = pxTri->m_xB.fZ;
>     m_pxTris[i] = i;
>     i++;
> }
>
> m_pTriMeshData = dGeomTriMeshDataCreate();
>
> dGeomTriMeshDataBuildSimple( m_pTriMeshData,
> 					 (dReal*)m_pxVerts, iNumVerts,
> 						 m_pxTris, 3 * iNumTris );
>
> ...
>
> So my questions are:
>
> [1] Is there somewhere I can get more TriMesh help or examples?
> [2] What am I missing?  Do other people use TriMesh's or are they using
> their own collision detection routines?
>
> Any help would be very much appreciated.
>
> Thanks,
>
> Rich
>
>
> _______________________________________________
> ODE mailing list
> ODE at q12.org
> http://q12.org/mailman/listinfo/ode
>
>
> _______________________________________________
> ODE mailing list
> ODE at q12.org
> http://q12.org/mailman/listinfo/ode
>
>
> _______________________________________________
> ODE mailing list
> ODE at q12.org
> http://q12.org/mailman/listinfo/ode



More information about the ODE mailing list