Hi again all,

As I have mentioned in the past, we have a rendering engine that supports
skinned articulated rigid bodies.  We have used indexed geometry for the
inter-joint polygons and by-copy geometries everywhere else (with judicious
use of our own data caching &c).

Our current problem is due to the asynchronous nature of Java3D.  An
example will suffice:

Say a joint in a skeleton moves to a new position.  This means that we have
to (a) update both the position of the fixed skin attached to the limb(s)
that just moved and (b) update the inter-joint polygons which have now
stretched/shrunk to fill the "gap" between fixed geometries appropriately.
(a) is simple since the geometry is in the transform of the joint, thus we
don't have to do anything there.  (b) is implemented with some math applied
to our indexed geometry datastructure, updating vertex positions, normals,
etc.

The problem is that, while these two events happen each and every frame,
the visual updates that we witness are *not* synchronized.  In other words,
sometimes we see the fixed and indexed geometries moving in a regular, but
*unsynchronized* fashion.  E.g. Gaps appear between the fixed and mutable
geometries.  These gaps are not pixel-peek or similar, they are real
discontinuities that are visible, but do not exist mathematically.

We assume this is due to the asychrononous nature of Java3D.  Calling a
setCoordinate method (just a random example) doesn't mean "set this data
value and, when you are completely done with this operation, return to me".
It actually (likely) means "set this value at some point in the future, so
long as you don't invalidate any future calls that I might make that
references this data".  It is a standard enough temporal logic-based
specification - something I've done countless times in my research work at
Caltech (its just a leads-to, aka eventually, specification).  The problem
is that I have no (obvious) way to enforce synchronization between such
calls.

Has anyone struggled with this problem and found a solution?  Would anyone
from Sun like to comment on this use of their product?

P.S. So far no one has publically commented on my previous post about
setCoordinate() semantics and computational complexity.  I have received
some private email on the subject though.  Does no one from Sun have a
comment?  Has no one experienced these significant differences?

Best,
Joe
--
Joseph R. Kiniry
Chief Scientist
DALi, Inc.

===========================================================================
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