Houdini USD Publish

Hi.
What would be the correct procedure to publish USD Renders and USD files from Houdini?
I’m trying to publish a Karma render from Stage, but I’m stuck at the Integrate data into USD pinning file stage.

This is the error snippet it gives me.

Traceback (most recent call last):
  File "C:\Users\User\AppData\Local\Ynput\AYON\dependency_packages\ayon_2411151105_windows.zip\dependencies\pyblish\plugin.py", line 528, in __explicit_process
    runner(*args)
  File "C:\Users\User\AppData\Local\Ynput\AYON\addons\usd_0.1.3\ayon_usd\plugins\publish\integrate_pinning_file.py", line 33, in process
    usd_file_path = self.save_usd(instance)
                    ^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User\AppData\Local\Ynput\AYON\addons\usd_0.1.3\ayon_usd\plugins\publish\integrate_pinning_file.py", line 100, in save_usd
    return self._save_usd_from_houdini(instance)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User\AppData\Local\Ynput\AYON\addons\usd_0.1.3\ayon_usd\plugins\publish\integrate_pinning_file.py", line 131, in _save_usd_from_houdini
    temp_usd_node.render()
  File "C:\PROGRA~1/SIDEEF~1/HOUDIN~1.278/houdini/python3.11libs\houpythonportion\ui.py", line 1158, in decorator
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "C:\PROGRA~1/SIDEEF~1/HOUDIN~1.278/houdini/python3.11libs\hou.py", line 80706, in render
    return _hou.RopNode_render(self, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
hou.OperationFailed: The attempted operation failed.
Error:       Layer saved to a location generated from a node path: Z:/tbl/sequences/014/0320/work/3d_rendering/render/usd/tbl_0320_3d_rendering_v002/usdrenderMain/stage/domelight1.usd```

Easiest fix for now would be either:

  • disable the USD addon in your bundle if you don’t need it.
  • flatten any SOP layers or other generator layers inside Houdini so they do not get written into a separate USD file by houdini.

Thank you for the response :slight_smile:

Does disabling the USD addon still let me Publish from Stage?

I tried flattening the layers in after merging them and before render, but it’s still the same. Got a few ideas so I will try them sometime this evening or tomorrow morning and report back!

Does disabling the USD addon still let me Publish from Stage?

Yes - I believe currently the USD Addon is mostly only needed for USD Resolver. There is intent to move more of the features into the addon - but then of course these ‘side effects’ of the resolver plug-ins would need to be avoided too. For now, you can run basically without the USD addon if you don’t need the Resolver nor the standalone USD binaries. USD in Blender, Maya and Houdini will still work.

Thanks!

I might try that, but in the meantime I’ve found what works.


In stage sopimport, the only Sublaser Style option that worked was ‘Copy SOP Layer Into New Active Layer’.

After selecting that, it published and rendered through Deadline normally :slight_smile:

1 Like

Yup, you’ll need to essentially flatten the SOP layers into USD data on the active layer. Flattening the stage itself should work too - but I’ve also been fighting with Houdini on that every now and then.

In this case - the other way to do this is on the Render ROP to enable the flattening. There’s a setting on the ROP node that may be helpful here too. I think you need to set it to Flatten All Layers which I believe avoids the layers like SOP layers to be written out. However, I suspect it’ll also flatten actual sublayers - which may not be what you want. You may be better of doing what I describe in my next post.

Anway, the differences between the options are explained in the Houdini documentation, e.g. see “Save style” parameter for the USD ROPs

So I want to actually get back to this and provide a better workaround.

  1. Keep the USD ROPs set to “Flatten Implicit Layers” (like the default)
  2. But under Extra Files enable the “Flatten SOP layers” checkbox.

1 Like

Thanks for updates!
Sorry for the very late reply, was on vacation :slight_smile:
I’ve tried all these options and suggestions, but it seems that the only thing that passes through for me is to set this option when importing the layer from /obj/.

Not sure why exactly it doesn’t work with Adding as a New Layer or Merging it into an Existing Layer, but I’ll take this for now!