Short film USD pipeline in Solaris

Introduction

The main goal of this article is just to show the overall pipeline and the main steps from sequence layout to rendering.

Softwares used and their roles:

  • Maya for modeling/rigging/animation/rough layout
  • USD for files transfer
  • Solaris to handle layout/shots conformity/lighting/render setup
  • Renderman for shading and rendering

Table of contents

01 – Asset building

02 – Sequence Layout

03 – Shot Layout

04 – Sequence Lighting

05 – Shot Conformity

06 – Shot Lighting

07 – Shot Render

Many Thanks


01 – Asset building

Component builder

This is the core of the pipeline we used it seems too easy to be true but it has so much power into it. It conforms any input and renames the input geo to /ASSET and creates a /mtl scope to tidy up the assets structure.

The output is awesome look at this asset output:

Every path is linked into the .usd files and thanks to Renderman…

…every texture file that is in the material library is automatically repathed in relative in the PxrTexture nodes directly and saved as a .tex for each UDIM in the asset/textures folder !!!

To be as clean as possible and to be able to use effortlessly the Solaris tools like the asset library, the best is to create a specific folder to output every clean asset from the component builder.

So we just created a specific folder named asset_library in the assets folder to group every asset and having just one folder to select and have every asset loaded in Houdini.

Create geometry LOD’s and proxies

This is a very simple setup to create geometry LOD’s and proxies.

At then end of the node tree in blue are USD ROP’s to export flatten

The MASTER_PATHS needs to be filled with the paths of all the LOD’s and the final Asset library export so that everything is setup once and every node refers to this MASTER_PATHS.

Just a polyreduce in a SOP modify node with the reduce percentage and keeping quads in the topology.

The proxy path can be put in the Component Geometry as “Proxy Layer”.

Geometry and texture variants

Using a componentgeometryvariants you can have multiple textures for the same geometry. For example here the blue inputs are different versions of Lucia our main character. These different geometry versions have their 3 versions of brush sizes (having a painted normals artistic direction means we need different brushes sizes to compensate the distance, for example small very detailed brushes will never be seen from far away).

Switching from HIGH to LOW brushes size texture

Once the asset is saved, we can use a reference node and everything will be available in the scene.

All geo variants are available by right-clicking ->geo

All material variants are available by right-clicking ->mtl

Export geo from Maya

Right from the Maya exports we export as .usdc to save a binary USD file. USDA’s are interesting to have a fast and easy look at what is in the file but they end up very heavy very soon in the pipeline so we avoid as much as possible the USDA format. If needed you can still convert from binary to ascii.

The most important thing to check is that Catmull-Clark is enabled so that the geometries will be then subdivided in the render.

02 – Sequence Layout

Setting up and using the asset library

Add the asset library view in the Solaris context and click on the add folder

Once loaded you have an automatic thumbnail to preview the assets and you can drag and drop them into the viewport to load them.

Sequence Layout example

The sequence layout scene can be really simple to get every asset needed for the shots of the whole sequence and then removing the useless ones in a shot-by-shot basis.

Everything can be done using a single stagemanager and a Primitive node to structure the graph.

Name the sequence and create a group called layout to make the scene graph clean.

Layout node

The asset library is correctly setup, so you can use the vanilla houdini layout node effortlessly.

Drag and drop the assets that you want to paint on srufaces or manually place…

…Like that you can flood your scene with thousands of assets easily and afterwards modify them individually, place them in line or move them with a brush. The best in this node is that these objects are instances!

At this stage (pun intended) you can save and keep the references so that if any asset is update it will also update in the next scenes.

03 – Shot Layout

pretty minimalist in here to only have to prune useless objects and move the ones that need a transform for shot specifics.

The USD ROP is still keeping references so that any lookdev update will be automatic, it avoids going back to old layout scenes just to update an asset and making sure is live and up to date.

04 – Sequence Lighting

Load the master layout and put a reference to visualize and only save the lights.

05 – Shot Conformity

Merge animation

Reference the asset

Set the geo and mtl variant

Load the USD cache of the animation, set the geo path of the asset and reference the right primitive to match the asset path.

congrats the asset lookdev is merged to the animation!

Import Maya cameras

In order to load Maya cameras with the right scale you need to export them in alembic and load it in the object context, and just parent it to a null that has a 0.01 scale.

…step 1

…step 2

…step 3 you can change the camera icon scale and the near/far clipping (super useful…)

…step 4 make sure to put these 3 sliders to 0 otherwise you will have 3D motion blur and defocus in the viewport render.

…last step: scene importcamera with the right path set

Now you have to save the conformity USD ROP as Flatten Stage to have everything clean and flatten for the render. Not doing so can lead to: caches that are only working on 1 frames, camera animations not working or even missing assets.

06 – Shot Lighting

Once the conformity is done, good news it means that the animation, FX… are done

As simple as it seems:

  • import the master lighting
  • modify it with the lightmixer or light edit
  • reference the shot conformity to see the lighting with the animation, FX…
  • export it flatten

07 – Shot Render

  • import flattened shot conformity
  • import flattened shot lighting

Set the visibility and rimattes for each render layer and separate the render layers.

use the Render Geometry Settings from Renderman to set the primary visibility / rimattes / enable displace

Camera edit node to re enable moion blur to render the motion vectors with the Shutter Open and Shutter Close

…final step… launching the render. Setting the render ROP also as Flatten Stage makes it more bug-free when using with a dispatcher like Deadline. It makes each computer look at the specific render .usd file instead of opening the file and creating it’s own .usd render file.

Many thanks

This pipeline’s original folder structure has been made by Baptiste Lebouc at ESMA Lyon.

Thanks to Romain Dubec for his unprecedented help and support throughout the project!

This pipeline was very much helped by the group of the movie Corail during the internships so big thanks to them!

Special thanks to the series of videos SOLARIS ESSENTIALS on Houdini’s youtube channel!

Contact

Demo Reel / CV

www.linkedin.com/in/leonel-nguyen/

https://vimeo.com/leonelnguyen

leonel.nguyen.contact@gmail.com

+33 7 81 43 38 55

← Back

Thank you for your response. ✨