Jump to content

I built a free kit to permanently fix missing and exploding motion blur in Houdini (H19.5–21)


Recommended Posts

Missing motion blur on cached geometry is one of the most-asked questions in Houdini's history — and when it's not missing, it often overshoots into long streaks at every impact. Here's the complete method, plus a free kit if you want the code ready to paste.

Why per-frame caches lose blur

Per-frame caches (.bgeo.sc, per-frame Alembic, VDBs) throw away the between-frame info. To create blur the renderer needs either a velocity attribute v to extrapolate along, or two or more time samples to interpolate between. Changing topology (particle birth/death, fractures, fluid meshes) makes interpolation impossible — those cases must use velocity blur.

The decision table

  • Particles / changing point count → velocity blur (v)
  • Deforming mesh, constant topology → time samples / Cache LOP
  • Volumes (pyro, smoke) → velocity blur from vel
  • Camera / transform animation in LOPs → Cache LOP + matching camera shutter

The fix — if v got stripped, rebuild it before the cache (Trail SOP → Compute Velocity), or by hand in a Solver SOP:

 
vector prevP = point(1, "P", @ptnum);
v@v = (@P - prevP) / f@TimeInc;

Then enable velocity blur on the renderer. In Karma/Solaris it's read from v automatically on most geometry; animated transforms need a Cache LOP so the USD stage carries multiple time samples.

When blur overshoots at impacts, clamp velocity in the render branch only — never touch the raw cache:

 
float maxspeed = ch('max_speed');   // ~2x your hero speed
float spd = length(v@v);
if (spd > maxspeed) v@v *= maxspeed / spd;

Works on Houdini 19.5 / 20.0 / 20.5 / 21.0. In H21's Karma (Hydra 2) these rules are unchanged.


That's the full method. I packaged it into a free kit that adds the clean copy-paste VEX + Python files, a third fix (neighbour-smoothing for impact spikes), a one-click batch-render tool, and a printable reference card:

Free on Gumroad (secure checkout): https://worldvfx.gumroad.com/l/motion-blur-fix-kit

It's a slice from a larger Houdini Automation Cookbook I'm building. Feedback welcome.

  • Like 1
Link to comment
Share on other sites

Posted (edited)

To fix MB on cached geometry you can use timeblend sop, or cache subframes if motion fast and curvy 

Also need to calculate velocity as central difference 

Edited by tamagochy
  • Like 1
Link to comment
Share on other sites

Great additions, thanks. You're right on both:

timeblend is a clean way to interpolate when topology is constant — good call adding it alongside the time-samples approach.

And central difference is more accurate — (nextP - prevP) / 2 captures curved motion far better than the backward difference. The backward version in the post is the "inside a solver, no future frame available" fallback; when you have the full cache, central difference is the better choice. Subframe caching for fast curvy motion is the right move too.

Appreciate you sharpening the thread.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...