If the time between updates is less than the interpolation lag, the
interpolation code will fail and you'll get herky-jerky movement. The
default lag is 250 in units of csTicks (which I believe are basically
milliseconds). You can set the interpolation lag globally with
iVosA3DL::SetInterpLag. Unfortunately, I didn't implement it as a per-object
thing, though that change wouldn't be too terrible to do.

The other side of the issue is the maximum velocity setting, which has both
a global default *and* can be over-ridden on a per-object basis. The
functions for doing so are iVosA3DL::SetInterpMaxVel and
iVosObject3D::SetInterpMaxVel respectively. There's also a
iVosObject3D::SetUseMaxVel to enable or disable the "maximum velocity" limit
for interpolation on a particular object. Maximum velocity is in units of
"world units per csTick" and has a default setting of 0.03, which is based
on my own observations of how fast avatars walk and how much network jitter
there was. If you have anything moving faster than avatars, you will
probably have to give them a higher maximum velocity (or just turn it off).

Setting the maximum velocity to "0" has special meaning. For objects, it
means "use the default maximum velocity." For the global default setting, it
means "by default, turn the maximum velocity limit off."

Of course, you can also disable interpolation for an object entirely by
using iVosObject3D::SetInterpEnabled. And you can disable it globally using
iVosA3DL::SetInterpEnabled.

The idea of putting maximum velocity or update frequency hints as Vobject
properties is something I thought about, but figured I'd defer to you guys
to actually make changes in the A3DL standard :) -- I think it's probably a
good idea though, at least for maximum velocity.

BTW, there is no maximum velocity limitation for orientation updates. They
are currently always interpolated. Also, the global interpolation lag
applies to position, orientation, and action events equally. (Action events
aren't "interpolated," but simply delayed so they stay in sync with the
interpolated movement).

-Ken

ps: I didn't do too much testing with overriding the maximum velocity
settings, so be warned :)

----- Original Message ----- 
From: "Reed Hedges" <[EMAIL PROTECTED]>
To: "VOS Discussion" <[email protected]>
Sent: Sunday, July 08, 2007 1:10 PM
Subject: [vos-d] Interpolation in TerAngreal


>
> I've been writing some code that makes some objects fly around and Ken's
> interpolation code makes it look nice and smooth.   However, in doing so
> I experimented a bit with position update frequency, wondering what the
> slowest rate I could use is, especially when the velocity I was trying
> to show was constant.  There's effectively a maximum speed that the
> interpolation achieves, so that if you update less than several times a
> second (e.g. once or twice a second), the object has a really jerky
> start-stop motion.
>
> Is there a quick fix for this? Or should we just let that issue be, and
> later add concepts of velocity and acceleration to A3DL?
>
> Would it be possible to add position-interpolation-speed and
> orientation-interpolation-speed properties to Object3D? Or
> position-update-freq-hint and orientation-update-freq-hint?  These would
> be advisory parameters for the interpolation code, that would let it
> choose object velocity in the interpolation.  I like the idea of
> update-freq-hint, because it's not implying anything other than what the
> server side is doing (updating the property periodically). However,  the
> client side would always be one step behind, so it might make things
> look pretty glitchy.
>
> Thoughts?
>
> Reed
>
>
>
>
>
> _______________________________________________
> vos-d mailing list
> [email protected]
> http://www.interreality.org/cgi-bin/mailman/listinfo/vos-d
>


_______________________________________________
vos-d mailing list
[email protected]
http://www.interreality.org/cgi-bin/mailman/listinfo/vos-d

Reply via email to