← All ideas

Stage / Scene Nodes: A Proposal for Improved Scene Organization and Flexibility

I've been willing to start a thread about this topic for quite some time. I hope this starts a constructive discussion and the Blender dev team picks up on the topic!

As a seasoned user of various DCC software, including Houdini, Solaris, Clarisse, and Katana, I've observed Blender's remarkable advancements in recent years. However, one area that I believe could benefit from further development is scene organization, particularly in regard to bridging the gap with USD pipelines.

Currently, Blender primarily relies on the Outliner for scene management and render pass management, which serves its purpose but has its limitations. To address these shortcomings, I propose implementing a procedural node system dubbed "Stage Nodes" to enhance scene organization and flexibility.

This new module would introduce a dedicated panel within the interface akin to Geometry Nodes, providing a centralized hub for managing scene data. Users could filter and manipulate scene elements using a versatile "group node" mechanism, similar to collections yet offering expanded capabilities.

Stage Nodes would enable filtering based on object type, naming criteria, and more. Additionally, users could apply property overrides to filtered groups, affecting aspects like shaders, visibility, and other parameters. These transformed groups could then be further processed downstream, culminating in a newly generated view or render layer.

The existing view layer interface would act as a display for Stage Nodes modifications, similar to the View Node workflow. Users could select a desired Stage Nodes configuration from a dropdown menu, directly influencing the active view layer.

This procedural node system would unlock several limitations currently hindering Blender's scene management capabilities. For instance, it would allow users to assign distinct cameras to output layers, specify custom resolutions, and override any desired properties for specific outputs.

Here is a list of potential features this system would unlock that currently is neither possible or easy to set up in Blender:

  • Camera overrides ( different camera per view layer)
  • Render settings override (again different render setings per viewlayer, including different resolutions)
  • Dynamic collections (being able to use text wildcards to populate a collection, particularly usefull for linked external data)
  • Material overrides (currently a very needed feature in Blender, in this case a node that allows dynamic assigning using textual wildcards)
  • Anim action override (having a different action on a rig or object per view layer can also be usefull in many different cases)
  • More flexibility with lighting (currently it can be cumbersome to have different light setups per viewlayer)
  • World shader override
  • It keeps on going, just insert your imagination here as long as there are enough nodes...

I hope this proposal sparks further discussion and exploration within the Blender community. Together, we can refine this concept and expand its functionalities, ultimately enhancing Blender's position among industry-standard DCCs.

Ill just start with just a small UI example, but please keep in mind this is just scratching the surface, much more can be done with it Board (3).png Im trying to keep the legacy way of Blender in this workflow, but also exploring the creation and setup of extra viewlayers using a more procedural approach. More nodes can be added to manage lists and collections Board.png

Use case: Material override per render layer (lookdev turntable)

stage_nodes.png A common lookdev task is rendering the same asset three ways simultaneously. For simplicity ill just consider a clay, full shading, and wireframe materials (but could be variants of the same material) to send to a client or art director. In Blender currently, there is no way to assign a different material to the same object, or multiple objects per view layer. In this case it would be even harder if we need to change multiple objects, using some filtering system. Your only options are:

Duplicate the objects three times and manually change materials in each copy Write a Python script to swap materials before each render Use a single scene and re-render three separate times, changing materials by hand between each

The moment the base scene changes (new mesh, adjusted lighting, camera tweak), you have to manually sync all three copies. This is error-prone and kills iteration speed. With Stage Nodes, the same scene collection feeds three branches. Each branch passes through a Material Override node that non-destructively replaces all materials on the filtered objects with a target shader. The result flows into its own View Layer Input. One change to the source scene propagates to all three outputs automatically — no duplication, no scripts, no manual re-syncing. This single use case alone would be enough to justify the system for any studio doing lookdev work.

100%

Development Status: Open

Upvote 30 Downvote 0
nunoalexconceicao
18 Dec 2023

15 Comments

Bill-Spitzak

Something like this is really needed to make it easier to try different modifications of a scene. As I see it there would be exactly one of these node trees, and the "selected node" would be what controls all other data in Blender, selecting it is equivalent to opening a different .blend file now. It would be really great if absolutely everything, even UI settings, was produced by this graph, making it as close to changing .blend files as possible. All normal editing would be dumped into a single "user modifications" node that records the changes. A current .blend file would produce a trivial graph containing one of these nodes that edits from an empty scene into the current scene. To match with USD it would be possible to save any nodes (other than USD reading nodes) as a USD layer, or to group a bunch of them and save that as a USD layer.

1
Bill-Spitzak

I just found this while looking for something else. I do want to say that adding this has nothing to do with the also necessary need to fix up Blender's really weird ideas about Collection/Parent objects so they work the way any sane user would expect. If that is correctly done then a crude form of "scene switching" could be done by clicking the visibility of different parent objects. But nowhere near what this could do.

Bill-Spitzak

A Sequencer (multi-shot workflow) could be done by making a different node for each shot. There would still be a single tree. I suspect though that it will require also some ability to make the edits vary depending on which shot as that is a lot more user-friendly. Only very simple versions of this can be saved in USD as variants.

jayb

I totally agree with you, this is probably one of the main shortcoming of blender right now that limits its adoption by more studios especially bigger ones. I have a long experience on Katana (6+ years) and most studios are switching to USD and usually using either one or the other (Katana/Houdini solaris) as their main software for scene management (from a lookdev / lighting / rendering point of view) because combined with USD you end up with something that is the easiest to scale for big productions, understand and work with by artists. It is also really easy to set-up templates and like a nice and tidy nuke script it is such an elegant way to manage big scenes. I would be delighted to see this feature make its way into blender.

1
XanzulsCG

This looks very interesting, I'd love to have a similar layout to solaris/clarisse/katana in blender as well as that will go along nicely with the "everything nodes" project and make Blender a lot more flexible and procedural.

costa

I think it's in the long term plans, It's just geometry nodes is relatively new and still has many design changes, I can Imagine that it would be a sort of geometry nodes that gets some integration of scene management overtime.

nunoalexconceicao Author

Be as it may, if its being already considered, I believe this should be given priority for a shorter term objective, maybe 1 to 2 years maximum. Which means it needs to be considered and discussed as soon as possible

this could be integrated somehow in the Composition tab? Or it have to be in another tab?

nunoalexconceicao Author

I dont think it would make sense to have it in Compositor tab, as its not about processing the image but the scene itself before rendering.

nunoalexconceicao Author

Some user stories for context:

Look Development:

User Story: An artist wants to efficiently pose, texture, and render an asset for various look development purposes, including turnarounds, different camera angles, and multiple light rigs.

Proposed Solution: Utilize the Stage Nodes module to streamline the look development workflow. The artist can isolate and manipulate the asset using group nodes, assign different materials, and apply various camera transforms. The system should support multiple light rigs, allowing the artist to easily configure different lighting setups for each output. Additionally, the user should be able to specify custom resolutions and formats for each render layer.

Benefits:

Enhanced efficiency and productivity in look development tasks Improved flexibility for handling multiple materials, camera angles, and light rigs Streamlined workflow for generating turnarounds and renders with varying specifications Layout and Lighting

User Story: An artist needs to efficiently manage and render multiple shots using a shared light rig, while applying specific overrides for LOD, sun orientation, light intensity, and sampling settings.

Proposed Solution: Implement Stage Nodes to efficiently organize and manage shot-specific lighting setups. Leverage group nodes to filter scene elements based on naming conventions, applying LOD overrides using a modifier override node. For each shot, adjust the sun's orientation and intensity using override nodes on the light object. Establish a linking mechanism to propagate changes made to the shared light rig across all shots, except for those with overridden properties. Finally, utilize a scene render override node to apply custom sampling settings for specific shots.

Benefits:

Efficient organization and management of multiple shot-specific lighting setups Streamlined application of LOD, sun orientation, light intensity, and sampling overrides Facilitated propagation of light rig changes across shots Improved control over render quality and rendering time

nunoalexconceicao Author

And some more potencial uses: Asset Management and Versioning:

Utilize Stage Nodes to create and manage asset variations, allowing for easy comparison and versioning of different asset configurations. Implement a version control system integrated with Stage Nodes to track changes and revert to previous versions of scene setups. Develop a tool that automatically generates asset naming conventions based on Stage Nodes configurations, ensuring consistent naming for variations and versions.

Animation Breakdowns and Compositing:

Employ Stage Nodes to create animation breakdowns, isolating individual character poses, camera movements, or lighting setups for separate renders or compositing. Implement a method to automatically generate animation markers based on Stage Nodes configurations, facilitating efficient scene setup for animation breakdowns. Develop a tool that simplifies the process of compositing multiple render layers created using Stage Nodes, including matching lighting and camera settings.

Production Pipeline Integration and Automation:

Integrate Stage Nodes with external production management systems, allowing for seamless data sharing and communication between artists. Develop automated workflows that utilize Stage Nodes to generate render data, asset variations, and animation breakdowns based on production requirements. Explore the possibility of integrating Stage Nodes with USD pipelines, enabling seamless collaboration and data exchange between Blender and other DCC software.

These examples demonstrate the vast potential of Stage Nodes to revolutionize scene management, asset organization, and workflow automation within Blender. By leveraging this procedural node system, artists can streamline their operations, enhance productivity, and achieve greater flexibility in managing complex scene setups.

2
iCameiSawiBlended

The user stories describe here the benefits of Stage Nodes, but not what they are or how they work. Without specifics, not sure what you are suggesting.

Perhaps do some specific mockups (showing actual specific examples of "Stage Nodes" in action) showing how they're used to handle each of those cases, and how they improve on the current workflows.

Also worth listing what you think the specific shortcomings of the current system (outliner, GN, scene settings) are, because there might be easy solutions you're not aware of. And if not, then you've demonstrated the need.

nunoalexconceicao Author

I might be doing examples but its still too early for that. First I want to see how much interest and upvotes this feature request can bring and of course someone else can also contribute to the idea.

1
iCameiSawiBlended

You've got 6 (now 7) votes. For RightClickSelect, that's not bad.

I'd like to see Blender hardened so it's more suitable for industry, and you've got experience with other DCC which I think is invaluable.

1
nunoalexconceicao Author

Ive just added a new use case that helps illustrate how can this feature would address something that Blender currently is unable or very convoluted in addressing. Hope this helps clarify how easy it would be with this node system