I think this post was bounced.. if not, sorry for the spam..

==================================

I've been working on a project for the last few months that involves the
animation of many interconnected parts.

When the system is just twiddling its thumbs (and not animating) it pulls
down as high as 40 fps with several hundred on-screen objects.  So we
don't think the graphics pipeline is the issue.

To perform a typical frame of animation, a behavior is triggered that
computes all of the changes and calls setTransform for each transform
that has to change.

>From what I understand of Java3D, this is the accepted way to do this,
and I can't really seem to figure out why, given a typically high frame
rate, the system slows to a frame every ~700 ms when animating ~60 items.

I did some timing tests, and the behavior executes in an acceptable
amount of time (~15 ms to enter and exit the behavior).  The gui timer I
use to trigger the animation doesn't slow down much either.  What does
slow down is the triggering of the behavior (which should happen after
every frame).

I seem to remember reading that calling setTransform on a live scene will
cause a retraversal of the tree.  Is this style of code queueing ~60
traversals in some traversal thread, which has to do all of that, one at
a time, before the display thread does its thing?

It seems like this is the case to me (although I don't know a whole lot
about J3D).  Is there some way to make the traverser take into account a
large number of changes in one traversal that I don't know about?

Any help would be vastly appreciated.  The system is just dandy changing
a single element at a time, but the frame display time drops to ~700 for
~60 setTransforms, and ~1400 for ~180 setTransforms, which isn't really
the caliber of animation I was shooting for *grin*.

Thanks,

Jered Windsheimer

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