Houdini USD Component Builder Publish Errors

We’re getting hung upon publishing USD files from Houdini. We use a modified version of the component builder, but for this test, we’re just using the standard component builder. We create our usdMain in the Create section and the corresponding OUT node appears to be configured correctly.

We get stuck on the “Integrate Asset” portion with these errors:

CRITICAL: Error when registering
Traceback (most recent call last):
  File "/Users/keithmanlove/Library/Application Support/AYON/addons/core_1.0.3/ayon_core/plugins/publish/integrate.py", line 158, in process
    self.register(instance, file_transactions, filtered_repres)
  File "/Users/keithmanlove/Library/Application Support/AYON/addons/core_1.0.3/ayon_core/plugins/publish/integrate.py", line 290, in register
    file_transactions.process()
  File "/Users/keithmanlove/Library/Application Support/AYON/addons/core_1.0.3/ayon_core/lib/file_transaction.py", line 140, in process
    copyfile(src, dst)
  File "/Applications/Houdini/Houdini20.0.751/Frameworks/Python.framework/Versions/3.10/lib/python3.10/shutil.py", line 254, in copyfile
    with open(src, 'rb') as fsrc:
FileNotFoundError: [Errno 2] No such file or directory: '/Volumes/Working/Films/Ayon_Test/Environment/Buildings/Building_Box/work/USD/usd/assets/Building_Box/Building_Box.usd:SDF_FORMAT_ARGS:format=usda'

Traceback (most recent call last):
  File "/Users/keithmanlove/Library/Application Support/AYON/dependency_packages/ayon_2410161715_darwin.zip/dependencies/pyblish/plugin.py", line 528, in __explicit_process
    runner(*args)
  File "/Users/keithmanlove/Library/Application Support/AYON/addons/core_1.0.3/ayon_core/plugins/publish/integrate.py", line 170, in process
    raise exc
  File "/Users/keithmanlove/Library/Application Support/AYON/addons/core_1.0.3/ayon_core/plugins/publish/integrate.py", line 158, in process
    self.register(instance, file_transactions, filtered_repres)
  File "/Users/keithmanlove/Library/Application Support/AYON/addons/core_1.0.3/ayon_core/plugins/publish/integrate.py", line 290, in register
    file_transactions.process()
  File "/Users/keithmanlove/Library/Application Support/AYON/addons/core_1.0.3/ayon_core/lib/file_transaction.py", line 140, in process
    copyfile(src, dst)
  File "/Applications/Houdini/Houdini20.0.751/Frameworks/Python.framework/Versions/3.10/lib/python3.10/shutil.py", line 254, in copyfile
    with open(src, 'rb') as fsrc:
FileNotFoundError: [Errno 2] No such file or directory: '/Volumes/Working/Films/Ayon_Test/Environment/Buildings/Building_Box/work/USD/usd/assets/Building_Box/Building_Box.usd:SDF_FORMAT_ARGS:format=usda'

I’m not sure if we’re also supposed to be using the “Save to Disk” function of the OUT node, but the publishing process does seem to break the USD file above (“Save to Disk” fixes it). I assumed this is because we didn’t make it through the publish process.

Let me know if you need anything else from me or want to see what we’re working with.

Thanks!
Keith

Hey @keithmanlove

Thanks for reporting - and I can totally see where this bug may originate from.

Could you by any chance share an example file? It’d save me the need for a setup in this case.


I have a feeling this should fix it: Remove the :SDF_FORMAT_ARGS: from the collected filenames for Explicit Layer Save paths by BigRoy · Pull Request #159 · ynput/ayon-houdini · GitHub

But there may be more to it since other code may rely on those arguments still being inside the files. So a test case would be nice to confirm.

OK, I’ll take a look at this.

Here’s the simple test: Dropbox

Thanks - allowed me to test it here and I almost had it right the first time :wink:

The PR should be fixed now. Are you able to give it a test run?

Nevermind - it did pass the publish, but failed to update the layer path to the published one. :man_facepalming:

Fixed now. :slight_smile:

Haha yeah that’s what I was just confused about. Your brain is moving way faster than mine today.

Thanks!

Just to be sure - can you confirm it works for you? :slight_smile: @mustafa_jafar was kind enough to also quickly test the PR and confirmed it on his end. :rocket: but always good to make sure I’m not missing anything on your particular case.

This solves the integration issue - however, for purely the component builder this may be more wortwhile if there were no need to write out the extra layer the USD ROP itself generates. It could be more preferred to instead just write out the Component Builder’s output somehow using its internal ROP. However, that’d be more involved to implement.

Also, you may’d like to disable the USD contribution.

1 Like

Confirmed. We’ll play around with it more. We’ve already hacked the component builder up pretty substantially, so maybe we can tweak it and still getting some of the benefits. A big benefit of our setup is being able to generate lots of assets with TOPs and get FBX proxies, thumbnails, etc. But maybe more necessary in a library project than a single hero asset.

1 Like

Sounds lovely! Feel free to report more issues - and of course, if you’re able to, share some of the things you’re building too. :heart:

1 Like

Hi Keith, I have a lot of questions :laughing:

it would be great if you could share how you’re using Ayon with TOPs. Are you publishing USDs in batch with TOPs? Are you embedding links to previews into USD itself? Are both published?

We don’t yet. We use TOPs and the component builder and are looking into AYON. Haven’t gotten that far yet!

Right, right :slight_smile: keep us posted, though.

Hello,
For information:

3 Likes

2 posts were split to a new topic: Houdini TOPs automations