Houdini Tips

Houdini Tips – Matching Mantra Motion Blur with Vray Motion Blur (3ds Max)

Matching Mantra Motion Blur with Vray Motion Blur? That’s wicked!

So I’ve been working across two 3D package for my upcoming demoreel and one of the issue is to find the right settings for Mantra to match as closely as possible with the motion blur from Vray in 3ds Max.

Since I’m doing all my FX works in Houdini, I did impose a rule to not transfer any of the FX caches from Houdini into Max for the final render.

Actually that is a lie as I did render one FX shot (fracture) as I need to reuse the Vray material in 3ds Max. The rest though are rendered using Mantra and composited over the Vray renders in Nuke.

What’s the magic chant to match the motion blur?

If the camera and Vray motion blur in Max are at default value, proceed as usual.

If not… maybe look at the following steps and see if you can figure out the right value to use for Mantra.

First, make sure the imported Alembic from Max are unpacked.

Don’t forget to put a Trail SOP set to Compute Velocity and also enabling Compute Angular Velocity like in the screenshot above.

This assume you import the camera from Max (and the Alembic geometry and camera are correctly scaled as covered in my prior Houdini Tips)!

Configure Mantra Renderer with the following settings:

  • Allow Motion Blur: On
  • Geo Time Samples: 2
  • Shutter Offset: -2

As usual, do a test render and compare with the Vray render!

The following animated GIFs are self-explanatory.

OK it is not exactly 100% match. Maybe 97-99%?

The rest can be fix in compositing stage if required.

Any reasons for doing this thingamajig instead of round tripping from Houdini to Max?

Basically if I were to render in Max using Vray, I need to match the look of the Pyro FX shader aka spending a long time tweaking the Vray VolumeGrid shader…

Unless you already prepared presets for both Pyro FX and Vray VolumeGrid shader that achieved the same look, I say working directly in Houdini and adjusting in compositing stage is faster and flexible.

Exception for situation that requires interaction with elements in Max only (like Fume FX or BiFrost) but a workaround for it is to convert the caches to VDB and use your preferred renderer.

So it is up to you (or your team) to figure out the best solution to a problem!

Further Reading

Matching Mantra motion blur with Vray motion blur ? –

Houdini Tips

Houdini Tips – Fetch Cam Attributes for Imported Cam

Let’s Play Fetch and Blend with the Cameraman!

This is with default Houdini scale units (Meter).

Play around until it match whatever you’re doing from the original 3D software.

  1. Create Null and scale it (typically 0.01 for Max/Maya using CM although I’m unsure if units affect the total scale).
  2. Parent imported camera to it.
  3. Create Fetch node and fetch the transform in the Imported Camera node (e.g. /obj/s001c001_CAM_1203_v001.ABC/s001c001_CAM_trans)
  4. Create Blend node and parent it to Fetch. Only select the Transform and Rotation as the whole idea is to not inherit the Scale!)
  5. Create Camera node and configure it to match your imported camera settings.
  6. Parent the camera to Blend and verify it. Done!

If something looks off… repeat until it works.

And here’s the screenshots of the settings with the relevant parameters highlighted:

21 Jan 2018 Update: It seems that leaving the Weight 1 at 1 is a bad idea as it messes up the near and far clipping of the camera. Set it to 0 to fix the issue while still inheriting the translation and rotation of the imported camera.

What’s the Reason?

It is simply a BAD IDEA to scale a camera since it will result in wacky rendering artifact especially volumetric like PyroFX etc.

By scaling the imported camera with a null, all the attributes will be multiply by the new value.

Instead, we create a new camera in Houdini and retrieve the relevant attributes while maintaining the original scale when it was created.

Remember to NOT USE the scaled imported camera for renders! It looks fine on the viewport but a disaster when rendering so always create a native Houdini camera (without scaling it of course!)