-
Notifications
You must be signed in to change notification settings - Fork 21
Procedural Publishing: AYON Publish ROP #122
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: develop
Are you sure you want to change the base?
Conversation
BigRoy
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Some mostly cosmetic notes - will test out functionality tomorrow.
client/ayon_houdini/startup/otls/AyonPub.1.1.hda/Driver_1AyonPub_8_81.1/CreateScript
Outdated
Show resolved
Hide resolved
client/ayon_houdini/startup/otls/AyonPub.1.1.hda/Driver_1AyonPub_8_81.1/DialogScript
Show resolved
Hide resolved
client/ayon_houdini/startup/otls/AyonPub.1.1.hda/Driver_1AyonPub_8_81.1/DialogScript
Show resolved
Hide resolved
|
sooo here is a small scene to play around. Importantits important to know that currently publishing only works via the render button on the rop. you can not trigger the setup from the Publisher Ui. also all files need unique file extensions per ayon_publish rop node. appendix |
…lib functions where possible, fix grammar/typos, tweak filenames and class names to match rest of AYON codebase
|
@Lypsolon I checked out your PR.. decent start. I did some tweaking as I tested it: #127 The PR also fixes:
We'll need to keep in mind some other goals to clean things up down the line:
These checkboxes have moved to the PR description instead. |
…meters that we needed unlocked
|
soo a bit later we got a little system that exports an advanced character via deadline. its important to know that this system dose not support Ayon submit to farm right now as the submit to farm dose not generate the dependent jobs. also the system will run Jobs for all the nodes in the Graph (as Deadline usually dose) this is nice because upstream nodes are executed and if we would do things like Run node A -> load the output -> export the loaded data this should work. |
…suport single file export, and it exposed some issues with Deadline
MustafaJafar
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hello,
I've some cosmetic notes to be consistent with the current AYON HDAs if you don't mind.
- This HDA file
ayon-houdini\dell\ynput.dev.ayon_publish.1.6.hda, I think you can remove it from this PR. You can keep it on your side if you are using it, but can just exclude it when usinggit addgit add . git restore --staged dell/ynput.dev.ayon_publish.1.6.hda - when saving/creating an HDA for ayon-houdini, we
- set the menu Entry to
AYON - set the Author to
ayon - set version to
1.0. currently, we don't change the version unless we have made a non backward compatible changes. (actual version control is done explicitly with git) - don't use branches or adding them to the HDA name.
- add the Houdini context to the node. so, the name should be
ayon_rop_publish

forgot to remove it. did.
done. |
client/ayon_houdini/plugins/publish/collect_ayon_publish_outputs.py
Outdated
Show resolved
Hide resolved
client/ayon_houdini/plugins/publish/collect_ayon_publish_outputs.py
Outdated
Show resolved
Hide resolved
/out…119-create-ayon-publish-rop-node # Conflicts: # client/ayon_houdini/api/lib.py # client/ayon_houdini/plugins/publish/save_scene.py
| self.log.error(f"Operation error on{node.path(): {e}}") | ||
| raise | ||
| except hou.PermissionError as e: | ||
| node.addError(f"Permission error: {str(e)}") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Wasn't addError only allowed to be used from within a Python node or within the cook itself? See docs
This should only be called on the currently cooking node within a cook.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice catch. We need to write our own flag error instead of this then.



Changelog Description
Implements a special AYON Publish ROP node that publish a product from any of the files of its input ROPs. This way, any ROP can be easily published into a product type of the user's choice and it can act as a generic building block to allow publishing from within custom studio HDAs.
Additional review information
This PR implements a General Publish node into the
/outcontext. The idea is that you will be capable to publish everything you want.The approach
A new AYON Publish ROP will publish any of its direct inputs as representations to a new product defined by the AYON Publish ROP's attributes.
With systems like deadline's own submitter from Houdini you can then publish complex graphs to Deadline without requiring AYON logic to do the farm submission itself.
Implementation.
ayon_publish()function in the ayon_houdini module to keep most code in the AYON codebase instead of the HDA.ayon_publishfunction calls publish with a selection of pyblish plugins.render()function on the givenayon_publishnode. In case we publish from a node we will set a variable to bypass the.render()call because the nodes will call it themselves.Known issues
$HIPvariable gets out of sync because upstream nodes will export with the different file version as downstream nodes.ipormddoes not work because it writes no files)Testing notes:
Local publish
Farm publish
It should work also completely on the farm when customizing some logic in Deadline's submitter, see the changes here.
Complex dependency graphs
A complex dependency graph in
/outshould also work fine. See the example files shared here.TODO
node.addError? (Do we need to have our own flag error event for this as we need to also checked on the error during cooking too.)modelvalidations if publish model product type (this may required a separate PR to differentiate the relevant validators for certain ROPs to target the ROPs instead once Show publish plug-in attributes based onfamiliesinstead of onlyproductTypeayon-core#994 is merged.AYON_productNameon the instance, but compute it at runtime from creator + variant, etc.Use cases