44 lines
1.5 KiB
Markdown
44 lines
1.5 KiB
Markdown
# orx-temporal-blur
|
|
|
|
`orx-temporal-blur` is a an extension intended for off-line production;
|
|
i.e. videos made using the `ScreenRecorder` extension. This extension uses multi-sampling
|
|
to accumulate and average the final image. Multi-sampling is performed by modifying `Program.clock`
|
|
while processing the tail-end of the extension chain. This multi-sampling strategy is slow and not
|
|
entirely suited in real-time and/or interactive settings.
|
|
|
|
`orx-temporal-blur` works well with programs that use `seconds` for their animation input.
|
|
This includes `Animatables`, but only after the `Animatable` clock is synchronized with the `Program` clock.
|
|
(Which you should already have done when using `ScreenRecorder`)
|
|
|
|
Synchronizing clocks in OPENRNDR 0.3.36 (current release):
|
|
```
|
|
Animatable.clock(object: Clock {
|
|
override val time: Long
|
|
get() = (clock() * 1E3).toLong()
|
|
})
|
|
```
|
|
|
|
Synchronizing high precision clocks in OPENRNDR 0.3.37 (future release)
|
|
```
|
|
Animatable.clock(object: Clock {
|
|
override val time: Long
|
|
get() = timeNanos / 1000
|
|
override val timeNanos: Long
|
|
get() = (clock() * 1E6).toLong()
|
|
|
|
})
|
|
```
|
|
|
|
Note that time-step-based simulations or integrations will likely break because your drawing code will be executed multiple times
|
|
per frame.
|
|
|
|
## Configuration
|
|
|
|
```kotlin
|
|
extend(TemporalBlur()) {
|
|
duration = 0.9
|
|
samples = 30
|
|
fps = 60.0
|
|
jitter = 1.0
|
|
}
|
|
``` |