Strange client-side rotation without llTargetOmega
|
|
SR Puff
Future Vulpinist Dictator
Join date: 14 Jul 2005
Posts: 22
|
08-25-2005 08:46
Hello!
I recently scripted a swing set and rotating door which use physics for movement, but turn physics off when not in use.
Everything works fine with them except for one thing: When an agent first comes up to these objects in-world, if they are not in use, they often appear to be rotating on the client. (This occurrence is not consistent, of course, from client to client. It seems to mostly affect low FPS clients.) Of course, this stops if the client right-clicks on the rotating parts, or if some other agent starts using the objects. The really weird thing? I'm not using llTargetOmega. At all. (And after turning physics off with these objects, I do a llSetPos and llSetRot to get them back to where they started.)
Any ideas what's going on here?
(I've got a swing set and a couple rotating doors set up on Ginko island, for the curious.)
|
|
Zeno Concord
To infinity, and beyond!
Join date: 28 Mar 2005
Posts: 51
|
side effects that persist
08-25-2005 18:24
If you ever used llTargetOmega on the object while testing or whatever, that setting might still apply. It doesn't get cleared out just because your script stops using it. Even resetting a script in the object would not clear that setting since the setting lives with the object, not in the script memory space. This is similar to the hovertext that sticks around if you have ever called llSetText.
To clear any previous llTargetOmega setting, you would have to add a script that sets it to 0. Or create a new object and transfer your scripts to that.
|
|
Jillian Callahan
Rotary-winged Neko Girl
Join date: 24 Jun 2004
Posts: 3,766
|
08-25-2005 18:30
I see this all the time. I'm not entirely sure what the casue is, but any object that has been physical-ised can end up doing a lazy rotation, most often but not always around its Y axis, after physics is shut off. It seems to be some sort of object update "thing", as clicking the object, changing active groups on your avatar, or anything else that updates objects around your view will stop the rotation.
|
|
Pete Fats
Geek
Join date: 18 Apr 2003
Posts: 648
|
08-25-2005 22:02
You can also force the client to update an object by (re)setting the color of one of the prim faces.
|
|
SR Puff
Future Vulpinist Dictator
Join date: 14 Jul 2005
Posts: 22
|
08-26-2005 08:25
Thanks for all the good advice! Zeno: At no point in the past had I used llTargetOmega on the objects, so there shouldn't have been a residual setting.  But... I think I might have fixed this problem for the majority of the time (I've yet to see this lazy rotation again, so far.) After stopping movement, un-physical-izing the object, etc., I've added a call to llTargetOmega which sets a zero-rotation target. (Which makes sense, I suppose. If un-physical-izing the object can occasionally cause a residual target omega... deliberately resetting this to zero should take care of the effect, eh.) If I notice any more lazy rotation, I'll try resetting the color of a face, eh. Still, it would be nice not to have to do this. So... where do I go to report this bug, eh? 
|
|
Jesrad Seraph
Nonsense
Join date: 11 Dec 2004
Posts: 1,463
|
08-26-2005 08:43
It happens often to my vehicles and to the AutoTrebuchet in Burning Life land. It seems that the client will sometimes continue to apply physical movement prediction to objects even though they're not physical anymore. This has to do with how physical objects' movement is sent to clients I think:
Physical object's acceleration, velocity and position updates are sent at discrete times, and the client interpolates this data to render a "smooth" movement. Apparently if the object stops being physical the client still interpolates over a few periods, simulating non-existent movement.
When you interact with an object, it forces a refresh of its position, so it "springs" back into place on your screen, even though on the server it never actually moved.
_____________________
Either Man can enjoy universal freedom, or Man cannot. If it is possible then everyone can act freely if they don't stop anyone else from doing same. If it is not possible, then conflict will arise anyway so punch those that try to stop you. In conclusion the only strategy that wins in all cases is that of doing what you want against all adversity, as long as you respect that right in others.
|
|
Aislin Wallaby
Registered User
Join date: 4 Mar 2005
Posts: 27
|
Further Revival of this thread
02-24-2006 21:14
I hunted all over the place for this thread, and I'm already using trick of setting my llTargetOmega rotation to zero in order to circumvent the problem, however I noticed that a couple of my vehicles would still attempt a bit of a rotation every now and then, any suggestions beyond setting a 10 second timer that will remove itself after it runs?
|
|
SR Puff
Future Vulpinist Dictator
Join date: 14 Jul 2005
Posts: 22
|
03-03-2006 11:32
Hmmm... well, the llTargetOmega hack detailed above seems to have cured the problem for most of my objects. But then, they never rotate with any huge angular velocity. (Rotating doors and swingset is mostly where I use this kind of movement.)
The single after-the-fact timer event might work; Please let us know if you come up with anything more elegant, eh!
|