[ODE] Rolling edge collisions when the normals between the trimeshtriangles are equal

Erwin de Vries erwin at vo.com
Wed Sep 10 19:37:47 MST 2003


I'm not entirely sure what the source of these problems is, but i know
exactly what you mean. In my own app i do the following:
----
if (Flags & 0x80000000){ // Bad!
    // Hack
    dReal k = dDOT(Position, Plane);
    Depth = Plane[3] - k + Radius;

    Contact->pos[0] = Position[0] - Plane[0] * Radius;
    Contact->pos[1] = Position[1] - Plane[1] * Radius;
    Contact->pos[2] = Position[2] - Plane[2] * Radius;
    Contact->pos[3] = REAL(0.0);

    Contact->depth = Depth;
   }
----
before i do OutTriCount++;

You could see if it helps. This is NOT recommended for all types of
geometry, and should be used carefully.

Cheers,
Erwin

----- Original Message -----
From: "Damien G" <damienodelist at hotmail.com>
To: <ode at q12.org>
Sent: Wednesday, September 10, 2003 11:11
Subject: [ODE] Rolling edge collisions when the normals between the
trimeshtriangles are equal


> I am rolling a ball (sphere) along a flat trimesh surface (for a test).
> The surface consists of two triangles to make a long flat rectangle.
> When rolling the ball down the 'centre' of the rentangle it eventually
> comes to the edge between the two triangles.
>
> However the ball does not roll "straight" over this edge.
>
> When the ball reaches the edge it rolls over the edge but does not
continue
> in a straight line. It deflects slightly at "right angles" "to the edge"
and
> rolls off the side of the rectangle.
>
> If anyone knows how to implement a workaround please let me know.
>
> eg:
> - can I "disable" the "edge collision" checking for when two connected
> triangles have the same normal?
>
> - can I easily ignore this edge collision in my code somehow? dot product
> etc...



More information about the ODE mailing list