Trimesh-trimesh collider (was Re[2]: [ODE] Triangle-box collider contribution)

Nguyen Binh ngbinh at glassegg.com
Thu Apr 8 09:54:16 MST 2004


 Jeff!

JS> Right. Like I've mentioned in my previous mails to the list, you have
JS> to use smaller steps, and more contacts, that test_moving_trimesh.cpp
JS> currently uses.  When I have some free time, I'd like to change the
JS> test suite to better handle trimesh/trimesh collision.  (Or maybe you
JS> can...)

    OK, I'll play with it...

JS> I have used hundreds of different meshes, with sizes from tens of
JS> faces to tens of thousands.  The step sizes I used vary, depending on
JS> the complexity of the scene, from 8 msec to 0.05 msec (plus, I use an
JS> adaptive substepping method which can change the stepsize as needed).
JS> I allow up to 128 contacts per collision, but usually get far fewer
JS> (10-40 roughly), which I then combine before feeding them to
JS> dJointCreateContact.  These may sound like extravagant demands but
JS> remember: interactive games generally do not need exact
JS> trimesh/trimesh collisions, and when they do they can almost always
JS> get by with very low-res meshes.  In the application in which I'm
JS> using ODE, computation time is not really an issue but good, exact
JS> collisions are.

    That sounds good! I hope the problem can be cured by smaller
    stepsize. For adaptive timestep, I had tried this before but I
    don't see any good impact so I left it. But maybe the results are
    my test scene was too simple for using adaptive approach

JS> One of the primary problems with a GJK-based method (besides being
JS> hard to implement) is that it requires you to carve up your trimeshes
JS> into a collection of convex solids.  This can only be done
JS> analytically for closed meshes; for open meshes (or general
JS> non-manifold meshes), you'd have to use some heuristic for the
JS> "carving" process. All of this is expensive and can result in large
JS> numbers of convex solids.  Consider the pathological (but common) case
JS> of a thin-walled bowl.

    Yes, but everyone use this and I guess it's the only good way to deal
    with trimesh now.  I've never think of decomposition open mesh
    into list of convex.

    Before, Aras had tried to implement convex geom in ODE but I've
    never seen the result so far.


-- 
Best regards,

---------------------------------------------------------------------
   Nguyen Binh
   Software Engineer
   Glass Egg Digital Media
   
   E.Town Building  
   7th Floor, 364 CongHoa Street
   Tan Binh District,
   HoChiMinh City,
   VietNam,

   Phone : +84 8 8109018
   Fax   : +84 8 8109013

     www.glassegg.com
---------------------------------------------------------------------



More information about the ODE mailing list