-
Notifications
You must be signed in to change notification settings - Fork 408
Description
The issue is to raise discussion and a decision as to what works best for ther MaterialX Graph Editor.
Context
Currently the graph editor will try and determine what node to preview render based on the current selection.
There are various DCCs and sample apps like USDView which define this logic. USD is more restrictive and only considers materials as the root for what is renderable.
We define a "renderable" in MaterialX as any scalar / surfaceshader / material type output on any node or nodegraph; a shader node; or a material node.
- If there is no selection it will attempt to use the first "renderable".
- If there is one or more item selected, the basic ordering is:
- Materials
- Shaders (surface shaders as volume or displacement shaders are not renderable currently)
- Nodegraph outputs
- For items of equivalent type, the "first" found is chosen. e.g. 2 or more materials / surface shaders selected, 2 or more outputs on downstream graph.
Individual selected nodes are not considered to be previewable but are considered renderable.
Proposal Ideas
- Allow the ability to make the renderable chosen to be explicit.
- Consider the ability to chose individual nodes with possible upstream graphs / subgraphs being available for preview. Note that this is not the same as allowing swatch previews for all nodes which many DCCs allow -- which is more complicated features. This is more akin to the "isolate select" / "soloing" in Maya for instance.
- Consider the ability to "lock" the renderable to be downstream root when working on a graph / subgraph. The root could be a shader / material or nodegraph output depending on the graph configuration.
- Disambiguate what renderable is chosen when more than node is selected.
- The current / default behaviour can be tweaked with app options to change or choose the renderable acting as overrides.
Feature items can be incrementally considered and gradually built up as desired. Later "decorative" extensions such as customized geometry per selection can be considered -- e.g. 2d images nodes preview on planes vs 3d shader ball.
The selection system should initially be as simple as possible -- select node and allow a UI to "make it the active renderable" -- this has been prototyped to a certain extent.
Prototype
Old trial prototype of being able to choose a node root for preview.
NodeEditor_Isolate_Render.mp4
See this Slack thread for some discussion on this. There has also been mentioned in Slack about
- Avoiding accidentally switching rendering when different nodes in an upstream graph are selected to edit;
- Confusion as to logic used to select the renderable
- Unexpected re-rendering of the same renderable when it should logically not occur from a user's perspective.