home *** CD-ROM | disk | FTP | other *** search
- Newsgroups: sci.virtual-worlds
- Path: sparky!uunet!spool.mu.edu!uwm.edu!rpi!usenet.coe.montana.edu!news.u.washington.edu!stein.u.washington.edu!hlab
- From: jimh@surreal.asd.sgi.com (Jim Helman)
- Subject: Re: TECH: DataGlove packet rate
- Message-ID: <1992Nov24.051824.5301@u.washington.edu>
- Originator: hlab@stein.u.washington.edu
- Sender: news@u.washington.edu (USENET News System)
- Organization: Home for Degenerate Physicists
- References: <1992Nov14.011645.11929@u.washington.edu>
- Date: Mon, 23 Nov 1992 19:33:02 GMT
- Approved: cyberoid@milton.u.washington.edu
- Lines: 57
-
-
-
- cdshaw@cs.ualberta.ca (Chris Shaw) writes:
-
- Our study of this problem, published in the User Interface Software
- and Technology 1991 Conference (ACM UIST'91) indicates that using
- continuous mode can reduce lag by up to 50 milliseconds.
-
- Useful paper. Anyone interested in tracker latency, should also check
- out this year's UIST Proceedings.
-
- The key point to note here is that you should always try to eliminate
- needless synchronization of the visual update upon other updates, such
- as tracker update. Polling the tracker requires you to hang around
- waiting for the latest data to show up. You can't always guarantee
- that you can fill this time with something useful.
-
- You certainly don't want to sit around waiting for the tracker or any
- other input device to sample, compute and return data. But I'd also
- argue that you don't want to run in continuous mode for two reasons:
-
- 1) Temporal jitter: You'll have a variable time between
- the last sample of the tracker and the time at which
- the corresponding image is drawn. Synchronization can
- eliminate this temporal jitter.
-
- 2) Interrupts: Especially on a uniprocessor machine,
- I sure don't want my CPU getting a zillion unnecessary
- serial interrupts and waste time bouncing between the
- kernel and my rendering code.
-
- A better solution would:
-
- 1) Multiprocess: Handle serial interrupts and tracker
- input on a separate CPU, if available, and communicate
- the results through shared memory.
-
- 2) Just in time: Make the request to the tracker so
- that the data is returned "just in time" to set the
- view and object transformations for the next frame.
- This keeps your latency minimized, eliminates the
- temporal jitter, and reduces unnecessary interrupts.
- If you're running at a fixed frame rate, e.g. using
- something like IRIS Performer (plug!), knowing when to
- issue the request to the tracker is fairly
- straightforward.
-
- In general, synchronization is a good thing as long as it doesn't slow
- you down. Otherwise, you will have temporal jitter and need
- interpolation or prediction to compensate.
-
- rgds,
-
- -jim helman
-
- jimh@surreal.asd.sgi.com
- 415/390-1151
-