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".
