We recommend to use the file extension .usdz instead of .usd in Houdini.
These files are compressed any therefore smaller.
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)
Therefore:
If you want to export .usd files to render frames with a second job, then you have to modify your USD ROP node.
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
oSelect "String" in the left column and drag'n'drop into the middle column.
Insert it after "Output File".
oAt the right, set name "renderer" and label "Renderer".
oAfter 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 name from the "Render Delegate" dropdown.
RR recognizes these renderer names
(not case sensitive, "arnold" equals "ARnoLd" ):
▪Karma:
• (<= nothing, Karma is the default)
•Karma
•BRAY_HdKarma
▪Karma XPU
•KarmaXPU
•BRAY_HdKarmaXPU
▪Arnold via kick
(A bit faster, but does not support all features, might look different):
•Arnold
•HtoA
•HdArnoldRendererPlugin
▪Arnold via husk
(A bit slower than kick, more memory usage, but supports all features):
•Arnold-Husk
▪Arnold via sick
not supported yet
▪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:
oA)
(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.
oB)
(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! )
oSelect "String" in the left list and drag'n'drop into the middle column.
Insert it after "Output File".
oAt the right, set name "rendersettings" and label "Render Settings".
oAt the right, switch tab to Menu.
oEnable "Use Menu" and set the dropdown to "Replace".
oSelect 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.
Note:
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.
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.
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.)
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."
Explanation:
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.
Origin:
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.
Note:
This will be fixed according to SideFX in the future.
Current release when this help section was written: 19.0.561