getavalon / core

The safe post-production pipeline - https://getavalon.github.io/2.0
MIT License
213 stars 48 forks source link

Link Loader action against specific panel/UI of host based on user decision #542

Open BigRoy opened 4 years ago

BigRoy commented 4 years ago

Is your feature request related to a problem? Please describe.

In Houdini it's non-trivial to decide what panel is the active one or where in the Network Tree the user is most likely expected to have a specific node created.

Houdini itself resolves this by having all tools activate inside a single panel, e.g. the shelf button most often activate a "context" where you need to click in the first viewport and press enter to put things down. Or e.g. creating a new node is done with TAB or Right Click in the Network View where it creates the nodes in that panel.

The issue is that with the Avalon Loader, that being separate from any of Houdini panels, it's non-trivial to decide where to create the loaded content.

Describe the solution you'd like

I'm looking for a way to decide where to put down the specific content. Of course this could be done in a multitude of ways.

  1. Have the Loader UI initialized a specific parent panel where it will act in. This could also be useful for issues with Hosts that allow multiple "projects/scenes" to be open and creating content needing to run against a specific scene, e.g. see problem 1 in this Gaffer Integration issue. This would mean at the very least that the Loader UI should be spawned/created from the specific panel.

  2. Or I was thinking about allowing "Drag and Drop" from the Loader action, e.g. right click the published subset and then in the Loader Actions menu allow dragging the menu item onto the panel/UI element of choice. However, that would mean that somehow on 'drop' you should be able to run code that identifies where you're dropping to.

Describe alternatives you've considered

I have tried to 'guess' in Python code what panel to use, for example find the first Houdini network view that is in the type of network I'd like, e.g. the one in SOPs. However, in production use cases the behavior remained confusing and gave behavior that the Artist would not expect where it assumed to wrong panel.

davidlatwe commented 4 years ago

Do you mean that when loading a subset, not only put inside the /obj/AVALON_CONTAINERS, but also put one into the desired network tree ?

BigRoy commented 3 years ago

Yes, that's what I meant! In particular for things like USD nodes Sublayer in Solaris that makes admittedly much more sense.

Once we have access to where you're currently working e.g. in Houdini you could also even be able to directly throw down a "Fetch" node that loads the object from /obj/AVALON_CONTAINERS into your current SOPs network.