[ODE] Merging multiple geoms into a single trimesh - a few issues

Geoff Carlton gcarlton at iinet.net.au
Thu Jan 13 11:51:37 MST 2005


Making the world a big trimesh seems ok.  But then, making interiors out 
of primitives seems ok too. :-)

After having a look at the trimesh codeI think that throwing in a bunch 
of mesheswill just work.  That is because there is no adjacency 
information stored in ode, and the normals aren't even used except in 
the trimesh-trimesh case.  Thus, having a soup of disjoint triangles is 
just as "correct" as a pefectly welded mesh.  In fact I think some basic 
adjacency info would be handy in the box-trimesh case at least - it 
can't tell that a triangle is part of a flat plane and so generates odd 
pointed normals from the unimportant edges (although it all seems to 
work out ok in the wash).

I also need triangle info, for sound generation.  While I haven't done 
anything about this yet, I think the best bet is to modify the dContact 
struct to add an int that can store the triangle index (for trimesh-* 
collisions only).  With a couple of quick changes, the colliders can 
then set that int, which the app can examine and do whatever with.  This 
is superior to the callback since the app knows which successful contact 
is associated with the triangle index - particularly important if the 
app discards contacts (e.g. via depth).  Its also a bit nicer than the 
callback.

Geoff



More information about the ODE mailing list