.usd export & render

The USD ROP does not contain any information about 

  • the frame name 
  • nor does it contain an information which renderer you want to use
  • nor any override for a rendersettings node (in case you want to switch between test and production render)

     If you want to export .usd files to render frames with a second job, then you have to modify your USD ROP node.

Modify the usd ROP/LOP nodes interface

You have to add spare parameters to the USD ROP/LOP node.

  • Select your /stage/usd_rop... node.

  • Click on the gear at the top right 
    and choose "Edit parameter interface".

  • Renderer
    Required if you do not use Karma
    • Select "String" in the left column and drag'n'drop into the middle column. 
      Insert it after "Output File".
    • At the right, set name "renderer" and label "Renderer".
    • After saving the interface, enter the name of the renderer you want to use.
      Note: We offer different names for the same renderer. Just for convenience in case an artist does not remember.
      Note: If you have a usd_render ROP in your scene, then you can use an expression `chsop("../usdrender1/renderer")` to copy the intenal name from the "Render Delegate" dropdown as well.
      Note: RR recognizes these renderer names (not case sensitive, "arnold" equals "ARnoLd" ):
      • Karma:
        •         (<= nothing, Karma is the default)
        • Karma
        • BRAY_HdKarma
      • Arnold via kick.exe (A bit faster, but does not support all features, might look different):
        • Arnold
        • HtoA
        • HdArnoldRendererPlugin
      • Arnold via husk.exe (A bit slower than kick, but kick does not support all features):
        • Arnold-Husk
      • Renderman (default, legacy)
        • prman
        • renderman
        • HdPrmanLoaderRendererPlugin
      • Renderman XPU:
        • prman-xpu
        • prman-xpuCpu
        • prman-xpuGpu
        • HdPrmanXpuLoaderRendererPlugin
        • HdPrmanXpuCpuLoaderRendererPlugin
        • HdPrmanXpuGpuLoaderRendererPlugin
      • Redshift:
        • rs
        • Redshift
        • HdRedshiftRendererPlugin
      • V-Ray:
        • vray
        • v-ray
        • HdVRayRendererPlugin

  • Output image
    There are two ways to specify the output image:
    • A)
      (Scripted Submission only)
      Add a renderproducts node to your Solaris tree and set the output name as render product.
      Note that some subnetworks like the Karma LOP includes the renderproducts.
    • B)
      (Scripted and External Submission)
      While editing the parameter interface:
      • Select "String" in the left list and drag'n'drop into the middle column.
        Insert it after "Output File".
      • At the right, set name "outputimage" and label "Output Image".

  • Rendersettings
    Required if you want to override the render settings at render time (not for Arnold kick! )
    • Select "String" in the left list and drag'n'drop into the middle column.
      Insert it after "Output File".
    • At the right, set name "rendersettings" and label "Render Settings".
    • At the right, switch tab to Menu.
    • Enable "Use Menu" and set the dropdown to "Replace".
    • Select sub-tab "Menu Script" and add this script:
      import loputils
      lop = kwargs['node'].node(kwargs['node'].evalParm('loppath'))
      stage = lop.stage() if lop else None
      return loputils.createRenderSettingsPrimMenu(stage)

  • Save the changes.

These settings do not change the exported .usd file in any way!
They are just informations for Royal Render.
Royal Render uses this information within the renderers commandline.

Nested Usd/Alembic files

If you are using other .usd or alembic files as a reference to your new .usd, then you might get some issues.

To add files by reference, simply add a reference node to your /stage.

Motion Blur

If you want to use Motion Blur, then you have to export a single alembic/usd file with all animation.
(and not a file per frame)
Note: You can use usdstichclips to create a single .usd file from a per-frame usd sequence.
(It does not copy the data into the new file, it creates reference links. See next section "FPS issues" as well.)

FPS issues

After importing an all-frame single .usd file, you might get the warning you might get a warning on a node saying 
"Time codes per second metadata is inconsistent across time dependent inputs. Composition may not be as expected."

Somtimes .usd files might miss the FPS information. 
And if this information is missing, the USD file is 24FPS by default.
Importing this into a 25FPS Houdini scene creates some issues.

If you export single all-frame a .usd file, then it might contain a FPS information set by a render properties node in your scene.

But you often want to create a per-frame .usd sequence (because you wanted to use multiple machines to render it or because it saves space on fileserver cache nodes).
The disadvantage of this per-frame .usd sequence is that you cannot use Motion Blur.
So you need to use the usdstichclips rop node to create a single all-frame .usd file (with references to your per-frame usd sequence).

And this new .usd file it does not specify a framerate. 
So USD/lops assume it is in 24 FPS regardless of what the Houdini scene is set to. 
The only way to fix it is to export the stitched USD as a .usda file and ingest the 25 fps tag yourself.

This will be fixed according to SideFX in the future.
Current release when this help section was written: 19.0.561