Let me add this bit to Kelvin's answer.
>
>>* At a given time, are collision checks performed for all moveable
>>objects or do you perform some form of optimization that allows you to
>>ignore moveable objects that are far away from all other objects.
>
>Collision is performed when WakeupOnCollisionXXX() is used. The
>target (usually Shape3D) specify is query against the bounding box
>tree every frame using its bounds. If the bounds of target did
>intersect some other bounds in the bounding box tree. Collision
>is return for USE_BOUNDS. Otherwise, for USE_GEOMETRY, current
>implemetation do a brute force O(n^2) check for each triangle.
>So the first pass is pretty quick but the second pass is very
>slow.
>
When a collision is armed via Behavior.wakeupOn() with one of the
WakeupOnCollisionXXX() criterion, we send a message to the bounding
box tree. From that point on, until the criterion is met (a collision),
the bounding box tree is responsible for doing a collision query
when nessesary. This means that we will only do the collision
query when the collision is armed, or something is moving in the
scene. This prevents any extra processing when collisions are armed.
It also means that there is no extra collision thread like there was
in the 1.1 version of Java 3D.
I think Kelvin answered all the other questions regarding the collision
query performance itself.
Doug Twilleager
Sun Microsystems
===========================================================================
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".