Skip to content

Graph Editor : Proposal : Add user control over the renderable used for preview rendering #2613

@kwokcb

Description

@kwokcb

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.

  1. If there is no selection it will attempt to use the first "renderable".
  2. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions