Object movement or position/rotation/size feels very snappy (especially driving) #180

Closed
opened 2026-09-29 21:11:45 +00:00 by schizo-bat · 4 comments

Environment

Slipstream Beta 0.12.0.33

Slipstream Beta 1.0.0.10

Description

I am not entirely sure how to describe it but object "movement" feels very snappy/"laggy", at least compared to Firestorm.
This is especially noticeable when driving a car.

I have attached two comparisons with two videos each, one recorded in Slipstream and one recorded in Firestorm.

The first one shows a prim whose size gets changed in an interval by a script (ignore the color change).
In Slipstream you can see how it "snaps" to the new size whereas in Firestorm it "moves" to it.

The second one is a quick drive in a car. What is very noticeable are the gauges (if compression didn't make them unrecognizable) and the steering wheel move very snappy whereas in Firestorm they rotate much smoother.
What isn't very clear in the video but can definitely be felt is how differently the car handles or "Feels to handle". Again it feels much smoother and more reliable/predictable in Firestorm compared to Slipstream.

I am also not sure if this really is a bug and not more of a feature/enhancement request but right now driving (especially D2 cars) generally feels much better on Firestorm

Reproduction steps

  1. Rez any object
  2. Add a script that alters the size/rotation/position of said object
### Environment Slipstream Beta 0.12.0.33 Slipstream Beta 1.0.0.10 ### Description I am not entirely sure how to describe it but object "movement" feels very snappy/"laggy", at least compared to Firestorm. This is especially noticeable when driving a car. I have attached two comparisons with two videos each, one recorded in Slipstream and one recorded in Firestorm. The first one shows a prim whose size gets changed in an interval by a script (ignore the color change). In Slipstream you can see how it "snaps" to the new size whereas in Firestorm it "moves" to it. The second one is a quick drive in a car. What is very noticeable are the gauges (if compression didn't make them unrecognizable) and the steering wheel move very snappy whereas in Firestorm they rotate much smoother. What isn't very clear in the video but can definitely be felt is how differently the car handles or "Feels to handle". Again it feels much smoother and more reliable/predictable in Firestorm compared to Slipstream. I am also not sure if this really is a bug and not more of a feature/enhancement request but right now driving (especially D2 cars) generally feels much better on Firestorm ### Reproduction steps 1. Rez any object 2. Add a script that alters the size/rotation/position of said object
Owner

Thanks for the comparison videos. A lot has changed since 0.12; could you retest this on the current version, 1.0.0 Beta 8 (https://slipstreamviewer.org/download), and let us know whether scripted size/rotation changes and driving still feel snappy compared with Firestorm? Same test as your videos would be ideal.

Thanks for the comparison videos. A lot has changed since 0.12; could you retest this on the current version, **1.0.0 Beta 8** (https://slipstreamviewer.org/download), and let us know whether scripted size/rotation changes and driving still feel snappy compared with Firestorm? Same test as your videos would be ideal.
Author

I retested it in the latest release (Slipstream Beta 1.0.0.10
), it is still the same pretty much

I retested it in the latest release (Slipstream Beta 1.0.0.10 ), it is still the same pretty much
Owner

Findings (2026-10-05):

1. Scale isn't eased (confirmed in code). LL damps position, rotation and scale over a few frames (LLDrawable::updateXform, OBJECT_DAMPING_TIME_CONSTANT, eased scale in mCurrentScale). The VK transform builder takes eased position and rotation from the drawable (vkRenderLocalPose), but reads the object's target scale (vobj->getScale() in LLCleanInstanceStore::composeOwnedPose and in the attachment branch of the per-frame mover refresh). So scripted size changes snap; that's the first video. Fix: use mDrawable->getScale() while LL is easing.

2. Vehicle parts and handling (to measure). Child-prim rotations (steering wheel, gauges via llSetLinkPrimitiveParamsFast) should already be eased through vkRenderLocalPose, but candidates are:

  • not every child of a moving linkset being re-posed each frame;
  • reading post-snap values given LL's camera-distance interpolation band;
  • root motion between server updates (interpolateLinearMotion, velocity interpolation), plus camera smoothing and frame pacing, for the "handling feel".

Next: per-frame instrumentation on a D2 drive vs Firestorm. Targeted for 1.1.0.

Findings (2026-10-05): **1. Scale isn't eased (confirmed in code).** LL damps position, rotation **and scale** over a few frames (`LLDrawable::updateXform`, `OBJECT_DAMPING_TIME_CONSTANT`, eased scale in `mCurrentScale`). The VK transform builder takes eased position and rotation from the drawable (`vkRenderLocalPose`), but reads the object's *target* scale (`vobj->getScale()` in `LLCleanInstanceStore::composeOwnedPose` and in the attachment branch of the per-frame mover refresh). So scripted size changes snap; that's the first video. Fix: use `mDrawable->getScale()` while LL is easing. **2. Vehicle parts and handling (to measure).** Child-prim rotations (steering wheel, gauges via `llSetLinkPrimitiveParamsFast`) should already be eased through `vkRenderLocalPose`, but candidates are: - not every child of a moving linkset being re-posed each frame; - reading post-snap values given LL's camera-distance interpolation band; - root motion between server updates (`interpolateLinearMotion`, velocity interpolation), plus camera smoothing and frame pacing, for the "handling feel". Next: per-frame instrumentation on a D2 drive vs Firestorm. Targeted for 1.1.0.
Owner

Fixed on main (c7d9fc445e, a4f543c237, a395cedb42, 3fb76e6dc2), confirmed smooth in-world: scripted scale easing, damped seat/avatar/camera moves, and GPU spin limited to stationary linksets so steering wheels and gauges ease. Ships in 1.1.0.

Fixed on main (c7d9fc445e, a4f543c237, a395cedb42, 3fb76e6dc2), confirmed smooth in-world: scripted scale easing, damped seat/avatar/camera moves, and GPU spin limited to stationary linksets so steering wheels and gauges ease. Ships in 1.1.0.
Sign in to join this conversation.
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
sky_line/Slipstream#180
No description provided.