JAVA3D-INTEREST Digest - 10 Dec 2001 to 11 Dec 2001 (#2001-353)Hello dear
list,

Nay, not him again... Yes, I'm back with collision detection questions,
there it is!

I remind you my case: I've got a moving deformable object (a particle
system) which I want to test against a solide immobile object (concretely a
piece of textile against a figurine). Until now, all was doing well by
running through every particle and from each cast a ray towards its computed
new position to see if it would intersect the body, and if necessary correct
its new position.

Now the trouble is that it is only assured that particles (that is, the
vertices of my cloth, so to speak) remain outside the body, but it is quite
possible that edges or pieces of triangles now lay inside it.

It is possible to minimize this effect for example through an increase of
the triangulation pitch, or through an increase of the minimum distance
between a particle and the body... But with every such a solution, there are
always theoretical cases, which unfortunately show up in pratical cases,
where they won't be enough to compensate this effect.

The final idea would be (but if there are better ones, I'd also be grateful)
to test triangles against triangles, or at least edges against edges. But I
don't see in Java 3D's API any solution for that. It seems that casting a
ray (picking) is no problem, but that other kind of collision detection
won't work. I've gone though Justin Couch's tools, but there seem to be only
picking facilities.

The problem is not of algorithmic sort: I think I could implement edge-edge
collision detection. The keyword is rather efficience, and I'm trying to use
Java 3D's integrated functions as much as possible, since they work very
well (I'm very happy with timing aspects of raycasting!). Have you got an
idea how I could do that? I've thought that if I had access to Java 3D's
intern bounding volumes hierarchy, it would be great, since this
optimization (versus testing every edge against every edge) is what makes
everything work so fast, I suppose. Is there a way to do so?

Thanks for your help and answers, I'm glad this list exists!

Roland

PS : By the way, to invert a matrix, I use GMatrix::invert() (sorry it's
C-style notation :-)), but as far as I could see it is really an O(n^3)
inversion, which is logical. But my matrix has a lot of zeros. Any idea to
improve that?

--------------
Roland Sarrazin
Fraunhofer Gesellschaft - Institut f�r Graphische Verarbeitung - Darmstadt
Raum 221
@: [EMAIL PROTECTED]

===========================================================================
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff JAVA3D-INTEREST".  For general help, send email to
[EMAIL PROTECTED] and include in the body of the message "help".

Reply via email to