World time animation
More actions
Resonite has several components for procedural animation that use world time as the progress value. Since the output at each frame only depends on the settings and current time (i.e. it's stateless), it can be calculated by each computer independently and stay in sync, with zero additional network cost. However, the lack of memory means it's not possible to seamlessly change the speed; for example, if the instance has been up for 123.45 seconds, an object with a 1-second animation will be 45% along the loop, even if it had just been changed from a 10-second animation that was 34.5% along.
Due to floating point inaccuracy, time-based animations can become choppy or break entirely in long-running worlds.[1]
Components
The following components make values loop within a range, similar to ValueRepeat:
- Panner1D–Panner4D for floats and vectors (e.g. position, texture offset...)
- AxisPanner for objects
- Spinner for rotation
- TimeIntDriver for integers (e.g. animation frames)
TimeSineDriver is similar, but uses a sine function instead of a linear wrap, allowing for a smooth back-and-forth loop instead of sharp cuts or sudden bounces.
The following components use a noise function, making the output move unpredictably within a specified range:
- Wobbler1D–Wobbler4D for floats and vectors (e.g. position, scale...)
- Wiggler for rotation (can be put on objects en masse with the WigglerApplier tool)