Solaris/USD
Submission
Compression: .usd versus .usdz
We recommend to use the file extension .usdz instead of .usd in Houdini.
These files are compressed any therefore smaller.
.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)
Therefore:
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 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: - 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.
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.
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."
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