Updaters

A ObiUpdater is a component that advances the simulation of one or more solvers at a certain point during execution. Very often you will want to update the solver simulation in sync with the rest of the physics during FixedUpdate(). Sometimes you might want to update physics after skeletal animation, or during LateUpdate(). You might even want to write your own updater component to get total control over when and how to update the simulation.

Obi Fixed Updater


The fixed updater will update the simulation during FixedUpdate(). This is the most physically correct approach and the one you should use most of the time.

Solvers

List of solvers ticked by this updater.

Substeps

The updater can chop up each physics step into multiple smaller substeps. For instance, if Unity's fixed timestep is set to 0.02 and the amount of substeps in the updater is set to 4, each substep will advance the simulation 0.02/4 = 0.005 seconds. Advancing the simulation in smaller time chunks like this will greatly increase precision, at the cost of performance. Collision detection will still be performed only once per step, and amortized during all substeps.

Obi Late Fixed Updater


The late fixed updater will update the simulation after WaitForFixedUpdate(), once FixedUpdate() has been called for all components, and all Animators set to Update Physics have been updated. Use it to update the simulation after animators set to Update Physics have advanced the animation.

This is the kind of updater you will want to use for character clothing most of the time, or any actor that's driven by character animation. Just make sure that your character's Animator is set to Update Physics!

Solvers

List of solvers ticked by this updater.

Obi Late Updater


This updater will advance the simulation during LateUpdate(). This is highly unphysical, as it introduces a variable timestep. Use it only when you cannot update the simulation at a fixed frequency. Sometimes useful for low-quality character clothing, or secondary visual effects that do not require much physical accuracy.

Solvers

List of solvers ticked by this updater.

Delta smoothing

This updater will try to minimize the artifacts caused by using a variable timestep by applying a low-pass filter to the delta time. This value controls how aggressive this filtering is. High values will agressively filter the timestep, minimizing the change in delta time over sucessive frames. A value of zero will use the actual time delta for this frame.