Hi!

Well, having the same problem I can tell you that currentTimeMillis() really
sucks and that there seems to be no way around that (except thinking of JNI
hacks).

I attached a TimerAccuracy class that shows timer resolution. My experienced
values are

50-60ms on Win9x
10-12ms on WinNT
1-2ms on Linux

For at least the two first are beyond any value for smooth animation, the
third (Linux) is just bad but sometimes sufficient - not only for J3D, but
for 2D games e.g. as well.

I attached a second class that draws some interframe averages depending on
accuracy and can give an approximation of time walking. Does not work very
good (of course), but far better that currentTimeMillis().

Hope that helps. Any reflection on the classes is appreciated.

- J


Joerg 'Herkules' Plewe
HARDCODE Development
http://www.hardcode.de

> -----Original Message-----
> From: Discussion list for Java 3D API
> [mailto:[EMAIL PROTECTED]]On Behalf Of David
> Sent: Sonntag, 4. März 2001 18:26
> To: [EMAIL PROTECTED]
> Subject: [JAVA3D] Java timer, frame/time based calculations
>
>
> We do our view changes and animations per frame, using elapsed time to
> calculate rotations in degrees/sec and movements in meters/sec.  That way
> our scene stays consistant even if frame rates drop.  But I had long felt
> things were not as smooth as they could be and never looked into it until
> now.  Turns out that we are getting elapsed time from one frame to another
> of zero very often, causing our scene to  be rendered exactly the same as
> several frames in a row, then a draw a new frame then a few
> copies, etc.  It
> looks like at around 50 fps, I am getting 3 dups for every 1 real frame
> recalc.  Course everything still looks right, but I am losing 3 steps of
> smoothness.
>
> For example if I am rotating my view at 90 degrees per second I am doing
> that in N steps, instead of N*4 steps, thus the rotation is not
> as smooth as
> it should be.
>
> At 50 fps, I am calculating a frame every 20 ms.  I thought the
> System.currentTimeMillis() had a resolution of 5ms, but it looks like I am
> dead wrong.  The numbers below look like 60ms, but its probably 50ms. How
> can I get the time to a better resolution?
>
> Dave Yazel
>
>
> In printing out the time stamps I get this:
>
> Frame got elapsed time of zero (last=983725910240,
> cur=983725910240 [1 min 7
> sec, 55mb]
> Frame got elapsed time of zero (last=983725910290,
> cur=983725910290 [1 min 7
> sec, 55mb]
> Frame got elapsed time of zero (last=983725910290,
> cur=983725910290 [1 min 7
> sec, 55mb]
> Frame got elapsed time of zero (last=983725910350,
> cur=983725910350 [1 min 7
> sec, 55mb]
> Frame got elapsed time of zero (last=983725910350,
> cur=983725910350 [1 min 7
> sec, 55mb]
> Frame got elapsed time of zero (last=983725910350,
> cur=983725910350 [1 min 7
> sec, 55mb]
> Frame got elapsed time of zero (last=983725910400,
> cur=983725910400 [1 min 7
> sec, 55mb]
> Frame got elapsed time of zero (last=983725910400,
> cur=983725910400 [1 min 7
> sec, 55mb]
> Frame got elapsed time of zero (last=983725910400,
> cur=983725910400 [1 min 7
> sec, 55mb]
> Frame got elapsed time of zero (last=983725910400,
> cur=983725910400 [1 min 7
> sec, 55mb]
> Frame got elapsed time of zero (last=983725910460,
> cur=983725910460 [1 min 7
> sec, 55mb]
> Frame got elapsed time of zero (last=983725910460,
> cur=983725910460 [1 min 7
> sec, 55mb]
> Frame got elapsed time of zero (last=983725910460,
> cur=983725910460 [1 min 7
> sec, 55mb]
> Frame got elapsed time of zero (last=983725910510,
> cur=983725910510 [1 min 7
> sec, 55mb]
> Frame got elapsed time of zero (last=983725910510,
> cur=983725910510 [1 min 7
> sec, 55mb]
>
> ==================================================================
> =========
> 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".
>

FrameClock.java

TimerAccuracy.java

Reply via email to