On this page |
Previous Cameras
Overview ¶
Motion Blur in Karma requires time samples authored on the USD stage. The quality of the render blur is influenced by render settings.
Karma renders motion blur by default. The defaults should give good transform and deformation blur. If you have bad or no motion blur with Karma, this issue is usually insufficient data in USD.
USD time samples ¶
By default, Houdini only cooks the current frame interactively, which usually works well. In Solaris, animated nodes author USD time samples, but only for the current frame. One time sample is not enough to render motion blur. Many sub-frame samples are necessary when rendering rapidly-changing motion, because USD only supports linear interpolation between authored time samples.
Note
Karma internally represents rotations as quaternions beginning with Houdini 20.0. This means you might not need to author as many samples in USD, to get decent motion blur.
To increase the quality of motion blur, you can use the following nodes to add and manage time sub-samples.
|
The simplest way to author sufficient time samples. If you add this node after the Karma Render Settings, it automatically caches enough time samples to blur across the shutter frame, using the camera set in the render settings. |
|
|
Handy for caching time samples around the current frame, or across the timeline. This node has controls for managing sub-frame sampling as well. |
|
|
Inline, file-based caching of USD files to disk, using an embedded USD ROP. |
|
|
Ideally prims will be exported with enough samples, but if that’s not an option you can use this node to author sub-frame samples based on existing animated transforms in USD. This can create smooth rotational blur for spinning objects like propellers. |
Volumes are not directly stored in USD, so the only way to vary them across time is to animate different volume asset paths at each time sample. You should have a separate volume file for each time-sample.
Cooking Houdini Time Samples Efficiently
In Solaris, Houdini time dependencies can have much more overhead than you might expect, especially coming from SOPs. If you have animated LOP nodes, or animated SOP Imports, add a Cache LOP or File Cache LOP after them in the network. This makes sure that non-animated LOP nodes only cook once, and not every time you change frames.
Even more efficient adding Cache/File Cache node, is setting the Sampling Behavior. Certain LOP nodes support authoring multiple time samples in a single cook. This can be many times faster than using a Cache LOP for a single LOP node with expressions or keyframes. This option uses the shutter settings from a camera prim to author only the necessary time samples. See Sampling Behavior for more information.
Motion blur basics ¶
Once two or more time samples exist on geometry prims, Karma will render transform or geometry motion blur. Karma render settings has Motion Samples from Stage turned on by default, so it uses all time samples across the shutter frame for transform and geometry motion blur. This means adjusting the Transform and Geometry Time Samples is usually unnecessary to get smoother motion blur, as long as there are enough time samples in USD.
Beginning in Houdini 20.0, Karma internally represents transforms as quaternions. This can allow Karma to smoothly interpolate rotations, without requiring artists to author many time samples in USD.
You can set Karma’s motion blur settings per-primitive using a Render Geometry Settings LOP. This lets you target specific objects in the scene, which might need more expensive motion blur settings, without making the entire image slower to render.
Note
To set geometry and transform samples manually, add a Render Settings Edit node and turn off Motion Samples from Stage.
Transform blur ¶
Animated, rigid transforms of primitives and cameras generate motion blur. By default, Karma needs at least two samples to interpolate motion. Increasing the number of samples can give better blur of extremely fast motion.
USD and Hydra only support linear interpolation between time samples. This works for most cases, but fast-rotating primitives will likely need many sub-frame time samples to get accurate blur. Ideally, you should export prims with enough samples, but if that’s not an option you can use the Resample Transforms LOP. It uses existing transform animation in USD to author sub-frame samples and get smooth rotations for spinning objects like propellers.
Transform Blur Properties
Geometry/deformation blur ¶
Deforming the points
of a prim over time generates geometry blur. Geometry blur is multiplied with any transformation blur. For geometry blur to work, it needs multiple time samples in USD, and the number of points cannot change between samples.
Note
In USD, points
is a single-precision attribute. Transforms (such as xformOps
) are double-precision.
Geometry Blur Properties
Velocity/Acceleration Blur ¶
For particles or mesh topologies that change over time, you can add velocity attributes to generate blur directly. When a velocities
attribute is available, Karma will simply blur along the points in the attribute.
Karma also supports a more natural looking style, acceleration blur. Karma uses accelerations
to blur the points along an arc, rather than linearly along the velocities
vectors. Karma uses the number of geometry time samples to break the path into multiple segments. Three or more samples is necessary for the motion blur to be non-linear. Two samples will give the same results as velocity blur.
Note
Acceleration blur ignores Motion Samples from Stage, since it requires geometry time samples.
Velocity Blur Properties
Point instances ¶
Instance Velocity Blur controls motion blur of geometry instanced onto points. It behaves very similarly to velocity blur. Karma uses velocities
and accelerations
on each instanced point for velocity and acceleration blur. However, instanced motion blur has its own samples control, Instance Motion Samples.
Instance Velocity Blur Properties