-
Notifications
You must be signed in to change notification settings - Fork 41
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
System for implementing Houdini Nodes in version controlled and IAC based system #591
Comments
Here @fabiaserra mentions there's a ready-to-go solution for this:
Probably best to continue the discussion here. Thanks @fabiaserra - perfect. I'd have imagined there was a solution to this. Does this mean we would ship the extended/expanded state in the repository, but somehow turn those into .hda just before houdini launch? Or when do we convert back? Do we even convert back? Or is Houdini capable of loading the expanded hda directly and did you end up doing so? I would assume there's a performance bottleneck there. |
Nah, you keep them always expanded, Houdini treats them the same way as a binary .hda. I think the bottleneck is pretty negligible, you can ask SESI or do some benchmarks but we had a lot of expanded HDAs and that wasn't a concern |
For parm interfaces that are common across nodes what you want to do is also abstract that away into code as described on these articles https://www.andynicholas.com/post/customising-houdini-nodes-part-1-hdas-or-dynamic-ui so it's easier to maintain |
Hey guys, I was reading through this issue and comments (specifically customising-houdini-nodes and expanding HDAs comment ). Expanded HDA
Changes are explicit in Expanded HDA. You can adjust the default parameters and monitor any modifications a user makes to the HDA through version control. Unlike binary format, which cannot be tracked or edited without launching Houdini. Customize HDAsCustomizing a binary Static CustomizationThere are couple of options:
Dynamic Customization
Best PracticesStore the code separately from the HDA, for example, in a dedicated Python file. This method is not a substitute for other customization techniques of HDAs; rather, it complements them. Saving the code externally is the suggested approach for any substantial pipeline integration. |
Not more explicit, the binary .hda is not explicit at all
Not true, having expanded HDAs is way more than just the internal code as you can tweak default parms and see any changes a user does to the HDA in version control, binary format is impossible to track and edit without launching Houdini
Not true, most big studios use expanded HDAs and there's no difference in customizing either.
It's called "monkey patching"
This is not an alternative to the other ways of customizing HDAs, all of those methods you can do it by saving the code outside of the HDA and that's the recommended approach for any significant pipe integration |
@fabiaserra |
This is done via `hotl` executable that comes with Houdini using the `-t` flag. Also see: ynput#591 (comment)
This is done via `hotl` executable that comes with Houdini using the `-t` flag. Also see: ynput/ayon-core#591 (comment)
This has been solved now - and implemented currently for the Load Asset LOP. This is still a goldmine of information for those that don't know about this feature - but with the knowledge gained here the first PR using it has been merged recently and hence this problem is now 'solved'. Feel free to re-open on |
Is there an existing issue for this?
Please describe the feature you have in mind and explain what the current shortcomings are?
While BigRoy was working on a recent improvement on the USD front, it became necessary to implement an HDA to handle Asset Loading. In the implementation phase, it became apparent that .hda files do not conform to the idea behind the Plain Text workflow, making overall QA for PRs hard.
We decided not to take action against this in the PR because we belive there might be a value in taking some more time for it and having a more robust setup to handle this.
PR: #294
How would you imagine the implementation of the feature?
We Thought about 2 Options for implementing a system like this.
1 Implement a system that allows .hda creation from source code.
This would mean that you describe your nodes in, e.g. a Python file, and when you create a package, a .hda file will be built from this.
2 Implement a PythonClass system that allows us to describe Houdini nodes in a central and general way and cast away .hda completely.
In this case, we would bould some PyhtonClasses that allow you to describe nodes in an Opinionated way from inside ayon. they would need options like (depend, connect, ayon tools, etc.)
atop this setup, we would need to have a system that loads said classes as nodes into Houdini. for that, a member of the Houdini-WG mentioned a while back that it's possible to have a shelf button that is not bound to a shelf. This will then appear in the Tab menu and act like a Normal node. we would abuse this in order to load our PyNodes.
Are there any labels you wish to add?
Describe alternatives you've considered:
No response
Additional context:
No response
The text was updated successfully, but these errors were encountered: