Node Based Render outputs

Hey everyone,
Long time lurker first time poster. I’ve made an addon for blender that introduces node based rendering and render nodes. You can use expressions called Match Statements to collect objects from the scenegraph and modify various attributes on them. This tool effectively replaces the view layer system that Blender currently has.

When it comes time to render, the tooling supports command line rendering by simply parsing the renderNode that you want to render. “-- --renderLayer chr_bellaBody_bty” as an example.

Light group creation is simplified as it too uses Match Statements to bulk collect lights in the scene.

I created this new account so I can’t upload videos at the moment, but, i’ll link the youtube channel where I have demonstrations of the light group creation in the comments.

I have nodes currently for, aov creation, light group creation, camera and resolution selection (Say you wanted to render all shadow passes at half rez but, your bty renders at full rez), object settings (ray visibility etc) and render settings. I have documentation and user guide that I also can’t attach. It’s pinned in the discord that I created for this tool which i’ll also link below.

6 Likes

Just replying here with some more information.
This screenshot is a zoomed in version of doing render based overrides on a renderLayer.

https://discord.gg/72y9rdEm - This is the discord server I made for this tool. If you go to the support channel it has pinned in it the user guide. This goes through in great detail everything from getting started to python access and scripting avaliability.

https://www.youtube.com/channel/UCwhA5eBEGjAq-bVIHfQEiUw - Here’s the youtube channel where I have a few videos demonstrating how the tool works

So… Where do I download it? And does it work with Eevee? Do you have documentation not on Discord? I don’t really want to join Discord server just to read documentation

@joseph
You can get the tool on GumRoad, but it is a paid tool. https://julianrwood.gumroad.com/l/BlenderNodeBasedRenderEditor

It doesn’t work with Eevee, I built this for my own cycles workflow so i’ve personally never used Eevee. If having an Eevee version would interest enough people i’d be happy to do a port for it. It should be easy enough.

I’ve just uploaded the documentation into my googledrive. Let me know if you can’t access it and i’ll try and work something else out.

2 Likes

I’ll buy a copy and throw a 100% tip on there if you can get it working with Eevee Legacy :slight_smile:

1 Like

@joseph No worries mate, leave it with me for a few days and i’ll get back to you

1 Like

@joseph how far back of the blender versions are you wanting? I’ve got it working for 4.1 but obviously 4.3 is a different beast altogether.

1 Like

I use 4.1 so that’s perfect! Thanks!

Ok no worries, i’ll likely release this update tomorrow night.

@joseph I’ve just updated the GumRoad page with the latest documentation and a v002.zip of the tool with support for 4.1 Eevee. I’ll be back online tomorrow around 5pm AEST if you need any help getting it running. Just got work during the day that’s all.

Thanks mate

1 Like

One important note: you’ve obfuscated your source code with .pyc files, but you are not allowed to do this with Blender add-ons.

Sharing or selling Blender add-ons (Python scripts)

Blender’s Python API is an integral part of the software, used to define the user interface or develop tools for example. The GNU GPL license therefore requires that such scripts (if published) are being shared under a GPL compliant license. You are free to sell such scripts, but the sales then is restricted to the download service itself. Your customers will receive the script under the same license (GPL), with the same free conditions as everyone has for Blender.

2. Source Code

[…] The source code must be the preferred form in which a programmer would modify the program. Deliberately obfuscated source code is not allowed. Intermediate forms such as the output of a preprocessor or translator are not allowed.

You’re currently breaking the Blender license, which, unfortunately, means I’ll have to unlist this topic until you are compliant with the terms of use of Blender and also this site. Since you didn’t know that, I’m not going to unlist it right now, I’ll give you a few weeks to get your addon compliant. The next update needs to include your source code, correctly GPL licensed

1 Like

@joseph Thanks for this. I had no idea that this was a thing.

I didn’t even realise that the .pyc files where in the zip. I’ve removed them, added the license and the copyright disclaimers. Feel free to double check me there and make sure that i’ve got that right if you’d like to.
I’ve also removed the non-compliant versions so as to avoid any further issues.

Thanks mate,
Let me know if you run into any other dramas

1 Like

No worries, thanks for resolving that so quickly! I look forward to playing around with this :slight_smile:

Hey eveyrone, bit of an update on something that i’ve built to show how powerful this workflow can be.
I’ve built a quick pyside render submitter. When working on tv shows you can much more easily manage your render layers, submitting different frame ranges per layer.
Theoretically you could save these settings to disk and then as long as you have good scene management, you could wire in rig updates and daisy chain to renders and then submit a rig update without opening up a single blender file.
I want to add dynamic groups to this tool that read from disk. That way I could have version controlled groups that can be pushed to the floor and updated in all of my shots blender scenes.
I also want to add the ability to create and edit lights from a node with this tool. You could then wrap the light nodes into a dynamic group and update it in one shot, write the update to disk, and then have a different shot pickup those lighting changes.

Hey Julian,
I am very hooked with your Addon. I found this by accident and think this is a very promising solution. The light group feature is so great. Before I buy: is this compatible to Mac? I work 90% on a Mac.

What is the “cook scene” button for? It seems to apply the changes set within a node. But in the renderlayer node: is it creating the folder at the destination path when “cook scene” is pressed?

There was a usd node editor for blender 3.4 by AMD a few years ago which disappeared which made me very sad. Node based rendering and scene management is the way to go I think. You seem very enthusiastic about what you do. Do you have plans to make this a long lasting project?
I can imagine this Addon is a solution for many people.

Thank you for the great work!

Hey @vitoli

Thanks for the kind words, i’m glad you like the idea.

  • So in terms of making this a long lasting project, i’m happy to continue to develop it further but beyond community feature requests I’ve really only integrated it into my own pipeline. This integration was just automated parent path setting (As the tool handles everything else itself). I do have plans for versioned dynamic groups and an idea for light creation and editing but this would require quite a lot of work.
    Full USD workflows like Solaris or Katana 8+ will need to wait until blender has more usd features and native tooling (Beyond just using it as a file exchange platform). I’m not sure of blenders plans in this area though. Livegroups would be the best bang for buck for multi-shot workflows I think. Mainly it would be used for storing passes across a sequence or show.

  • In terms of if this tool works on MAC. I’m not sure as I develop and work on windows and Linux so I know it works on both of those. I got a notification on gum road that you had purchased it, let me know if it doesn’t work and i’ll look into how to build a MAC specific version. My assumption is that it should work. This tooling also should work in 4.4 as i’m currently using it in Cycles 4.4. Eevee might be missing a few functions or throw a few errors. Flag any issues and i’ll look at patching them up.

  • The cook scene evaluates and sets any node properties. There are some gotchyas here though (Ones that I didn’t actually realise until after releasing).
    ----------------- It’s important to note that everything in a node is always set (Even if you haven’t touched a property). For example if you drop a Cycles render settings node down, every option visible on the node gets set whether you’ve checked or changed an option.
    ------------------ The node evaluation works from left to right. When you cook the scene the from the root node. A bunch of default settings get set for every setable property in the tool. So make sure to always use the nodes to set a property and do not do it in the blender ui.

Thanks again, feel free to post any feature requests and i’ll look into adding them in. Or any quesitons and i’ll keep answering them.

Thanks,
Julian

Hello @JulianrWood, thank you for your fast and detailed response. It’s funny that you mentioned @Bernardo because I have read his whole thread while researching node-based, non-destructive, USD-related workflows in Blender. Also, the new import nodes in Blender 4.5 by @CodeBlaze are a real game changer for working non-destructively with mesh data. I was so happy to read about this and I am very excited and hope that FBX and USD will follow.
There also is a node based editor for baking called BakeWrangler by @netherby which I found today which looks really interesting.

Out of interest: how do you use the sequencer for post-processing? I have never used it before.

I gathered some feedback during the last two weeks for your product that I want to provide:

Things I am very happy about

  • Your Addon works like a charm.
  • The blue “signal path” for the current node path provides great feedback to the user.
  • I am very happy to have light group support. (I use this feature a lot and coded my own solution that sets up the light groups by reading out all subcollections of a collection named “Lights.” My script also sets up the compositor for tweaking each light group there. My code is only a script and not really usable for anyone else…)

Bugs (or features?)

  • When I select a collection in the SceneInput Node and hit Cook Scene, I get an error that I will attach at the end. If I do not select a collection, it simply reads out the whole outliner, which is all I need. So that error does not affect me.
  • The “Render” N-Panel Tab also appears in the geometry nodes and shader node editor. Additionally, your subcategories appear in the Add Menu (Shift A). I really care about non-cluttered GUIs; others might not. Just worth a mention.
  • When I change the File Format, e.g., to JPG, this won’t be reflected in the previewed path in the RenderLayer node, which caused confusion. Now that I know everything in a node is set whether I hit Cook Scene or not, I now know: I just need to check my file output properties. There I see: JPG is set.

Suggestions

  • When creating a new Node Graph, it is empty. What about adding a SceneInput and a RenderLayer by default? It would feel native, like geometry nodes.
  • Saving presets \o/ In every project, I have light groups called main, rim, fill, world, etc., and setting those up manually is time-consuming.
  • I usually do not use versioning of my frames. I just overwrite them, and DaVinci searches and finds them in the same folder. What about a toggle for “versioning on/off” in the Render Layer node?
  • Many shots require drivers, e.g., controlling the temperature of a light for a night and day shot. If you would expose the custom properties in the CyclesObjectSettings, that would be the gate to unlimited power.
  • For now, it’s only possible (which is amazing) to set visibility for objects with the ObjectSettings (and the Visibility) Node. A CollectionSettings/CollectionVisibility Node would make it possible to enable and disable every object within that collection.
  • Why is the Visibility Node only disabling visibility? A toggle for visbility on/off would be right, wouldn’t it?
  • The ability to set the start and the last frame is also essential for iterating and having different shots.

So all of this is just my point of view and related to how I work, which might be very similar to your workflow. I find your work very impressive and in no way want to be disrespectful with the amount of suggestions I have written down. Let’s discuss! What do you think about my feedback?

Best,
Vitus

error log
Python: Traceback (most recent call last):
  File "/Users/vituspacholleck/Library/Application Support/Blender/4.5/scripts/addons/RenderEditor_v003/editor_LightingAndRendering/nodes/utilityFunctions.py", line 314, in execute
    cookNode(context.node)
  File "/Users/vituspacholleck/Library/Application Support/Blender/4.5/scripts/addons/RenderEditor_v003/editor_LightingAndRendering/nodes/utilityFunctions.py", line 211, in cookNode
    failed = node.executeNodeCookFunctions()
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/vituspacholleck/Library/Application Support/Blender/4.5/scripts/addons/RenderEditor_v003/editor_LightingAndRendering/nodes/sceneIn.py", line 57, in executeNodeCookFunctions
    self.setDefaultAttributes()
  File "/Users/vituspacholleck/Library/Application Support/Blender/4.5/scripts/addons/RenderEditor_v003/editor_LightingAndRendering/nodes/sceneIn.py", line 178, in setDefaultAttributes
    scene.eevee.gtao_factor = 1.0
    ^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'SceneEEVEE' object has no attribute 'gtao_factor'
1 Like

@vitoli sorry for the late reply, i’ve started a new job and was just settling in for a few weeks.

Glad to hear that you’re loving it and thanks so much for this feedback! There’s a lot of good ideas here!

how do you use the sequencer for post-processing? I have never used it before.

I use it to process the Kwaraha filter over my images currently. But other then that I have a full Natron pipeline for compositing that I use. I use multi-channel exr’s for my rendering exclusively rather then JPG or PNG as it helps with keeping colorspaces in wack. I’ve tried using Davinci and found it painful to use.

Bugs

  • When I select a collection in the SceneInput Node and hit Cook Scene, I get an error that I will attach at the end. If I do not select a collection, it simply reads out the whole outliner, which is all I need. So that error does not affect me.

This is interesting. I would’ve thought it would load nothing :person_shrugging: hahah. I will investigate this

  • The “Render” N-Panel Tab also appears in the geometry nodes and shader node editor. Additionally, your subcategories appear in the Add Menu (Shift A). I really care about non-cluttered GUIs; others might not. Just worth a mention.

Yep, I found this out well after the release of the tool myself. I’ll look to fix this at some point as well

  • When I change the File Format, e.g., to JPG, this won’t be reflected in the previewed path in the RenderLayer node, which caused confusion. Now that I know everything in a node is set whether I hit Cook Scene or not, I now know: I just need to check my file output properties. There I see: JPG is set.

Yeah ok this is great, thanks for letting me know about this. I think the output node builds the path but really there should be some more work done to determine how outputs paths are assembled.

Suggestions, i’ll just go over a few

  • Saving presets \o/ In every project, I have light groups called main, rim, fill, world, etc., and setting those up manually is time-consuming.

So my solution for this is going to be some sort of implementation of livegroups. A Version control group that can live on disk in a txt file that can be loaded into different shots, changed and then pushed out to all of the other shots. Effectively multiple Blender scenes can be referencing the same livegroup. For example for you render passes these could all be stored in a livegroup. Same with you’re light group setup. Currently My workaround is to just store this setup information in a template and import the Rendering nodegraph from the template.

  • Many shots require drivers, e.g., controlling the temperature of a light for a night and day shot. If you would expose the custom properties in the CyclesObjectSettings, that would be the gate to unlimited power.

Yes! I was thinking about a generic parameterSet node. Then the user can just specify whatever property they’d like to make a change on and then node will load that value type and allow the user to make the change.

I was also going to add in a lightObjectSettings to allow for parameter lighting changes

  • The ability to set the start and the last frame is also essential for iterating and having different shots.

This is a reasonable request. My render submitter handles the frame range setting for me but this would be best for most users! Thanks!

Just on the versioning of the renders. I’ll have a look at how easy this is in the code to change but in general i’d rather keep it as is. All of the versioning code is not obfuscated so you could try just copying the code that deals with the versioning into your davinci script and use that to grab the latest renders?

As for your error log. This looks like an eevee property has changed and doesn’t exist i nyour version of Blender. The Eevee params change all the time, it’s hard to keep up with. Which version of Blender are you using?

Thanks heaps for all your time on this. I’ll aim to try and get to this after i’ve finished some personal work that is taking my spare time up.

Julian

Hey Julian, great to hear you resonate with that feedback. Your ideas sound great. Take your time. Looking forward!

I am using 4.5 but used 4.4 when posting having this issues.

Hey Julian,

I hope you are doing fine.

I just found something interesting: a node based editor for assigning materials and set visibility etc based on string inputs, very similar to your addon.
I bought it and will look into the code. It has not been updated for very long and I will build my own needs into this.
Maybe this is interesting for you too.

https://superhivemarket.com/products/palette-nodes---rule-based-assignment-tool

Best,
Vitus

1 Like