Integrating Node Wrangler features into core Blender #121749

Open
opened 2024-05-13 17:10:07 +02:00 by Nika Kutsniashvili · 10 comments
Contributor

With Extensions platform launching for 4.2 what were once add-ons shipped with Blender are moving in to online platform. There are some exceptions made for add-ons which are integral for using Blender, such as Cycles and FBX i/o. Those will be converted and made regular parts of core Blender.

Design for tackling core add-ons

Node Wrangler is one of the most, if not THE most, used add-ons that come with Blender, so argument can be made that it deserves to ship with Blender. In fact, users were constantly demanded that this add-on was enabled by default. But Node Wrangler is a massive add-on loaded with functionalities that may not be useful for casual user and is better suited to be part of an extension. Most users are not even aware of most of the things add-on is capable of.

So since Node Wrangler contains both: functionality that is part of core UX for every user (such as ctrl-shift preview), and functionality that is better suited for an extension, it makes most sense to decouple those.

Proposal is to integrate more useful features of Node Wrangler into core Blender as python scripts, and what is left can be added on extensions platform, and users can download it from there.


I went through the code and testing to determine which features should be integrated, and this is my proposal:

Should be part of core Blender:

  • Preview Node (Since Shader editor doesn't have Viewer node, this functionality is needed to Shift-Click on node and preview it by connecting it to Material Output node. Most used feature of the add-on)
  • Connect to Output [O, Shift-Alt click] (Connects selected node to Output node. In Shader editor this is same as Shift-Ctrl clicking it, but in Compositor and Geometry Nodes, where that shortcut uses Viewer Node, this one (Shift-Alt click) connects node to Group Output/Composite, instead of Viewer node)
  • Lazy Connect (Holding Alt and hovering over two nodes automatically creates link from first to second. Output and Input are chosen automatically based on some criteria, and while not always perfect is super fast in most cases)
  • Make Link (Holding Shift-Alt and hovering over two nodes creates link between them, but instead of automatically choosing it shows two menus in succession that lets user choose output and input sockets, if there are more one)
  • Lazy Mix (Holding Shift-Ctrl and hovering over two nodes creates overlay around nodes, and on release creates Mix node with first outputs from selected nodes linked. It's tricky and can be improved to better determine correct data-type, but is very useful and very widely used even in current form)
  • Select Frames Children / Parent Frame [] (Those kind of operator exists in almost every context and makes sense here too, also is very useful)
  • Reset Backdrop [Z] (Works in Compositor only. It's similar to "Fit Backdrop to Available Space" operator in View menu, but this one resets Scale to 1 instead of fitting to view)
  • Reset Node [Backspace] (Resets node to default values. This feature isn't available built-in for entire node, and resetting properties individually puts all values to 0 instead of reseting to values node comes with.)

Should be part of extension:

  • Merge Selected Nodes (Can connect outputs of any two nodes with Mix, Join Geometry, Mesh Boolean or Math nodes with any mode. It is too massive and general, and while great functionality, it doesn't work outside few intended cases, shortcuts are hard to remember and mostly unnecessary for casual users)
  • Add Texture Setup (Shift-T while node selected to add connected Coordinates - Mapping nodes)
  • Detouch Outputs [Shift-Alt-D] (Similar thing, but not exactly already possible with holding Alt and dragging node)
  • Add Reroutes [Numpad /] (Adds reroute node for every output socket and connects them)
  • Link Active to Selected [ \ ] (What title says, but is way to tricky with too much options and doesn't work in most cases)
  • Clear Label
  • Modify Labels [Shift-Alt-L] (While this is better than built-in Batch Rename in some cases, it's better to improve Batch rename than have separate operator just for nodes)
  • Frame Selected [Shift-P] (Already possible with Ctrl-J, but we can change shortcut of that to Shift-P if it makes more sense and is seen as parenting operation rather than joining on user level)
  • Align Nodes [Shift-=]
  • Switch Type [Shift-S] (This is already depricated in add-on)
  • Save Viewer Image (In Compositor when Viewer node selected shows operator in sidebar > Node panel that can save image shown externally)
  • Change Factor of Mix Nodes (Not exposed anywhere, probably not a finished feature)

Undecided:

  • Add Principled Setup (Ctrl-Shift-T while Principled BSDF selected to import multiple PBR images and connect with correct names, colorspaces and middle nodes, such as Normal and Displacement)
  • Swap Links [Alt-S] (It's an easy way to swap links in Mix and Math nodes, and also if there's only one link it can change which input it goes to very quickly, good for changing socket after connecting with Lazy Connect)
  • Batch Change Blend Type (& Math Operation) (Very useful right now, but do they fit in future design?)
  • Copy Settings to Selected (If two of the same type of node selected copies settings from active to selected. Similar functionality exists for object-level properties, could fit in Blender's design. Currently broken and needs a fix)
  • Copy Label to Selected
  • Reload Images (There is RCS request to put this button in the header. Refreshes external images and is very important when working with images that are being modified in external image editors. VSE has similar operator, so fits in the design)
  • Delete Unused Nodes [Alt X] (Can be seen as similar clean-up tool as Delete floating vertices in Mesh edit mode)
  • "Attributes" menu (In Shader editor Add menu > Input it adds list of all available attributes and on selection adds Attribute node with correct mode and attribute name written inslide. Is SUPER fast way of adding attribute, also makes all attributes available when searching in Add menu)
  • Import Multiple Images/Image Sequence - (In Add > Texture menu. Similar thing exists in VSE as built-in operator. Is very useful, but needs to be decided if they should be in Add menu, or available in more 'built-in' manner?)

Features can be implemented one-by-one, as separate PR's, so it's not immediate to agree on which features to port right away. We can start by most obvious ones and leave rest for discussion / feedback.

Features than will be implemented in core Blender also have to be removed from add-on, so that extension doesn't add features that already exist (and sometimes may have been slightly modified). This is easy now when they're still hosted here, but once they're ported and uploaded on extensions that will have to be done on remote repository with collaboration of maintainers.

With Extensions platform launching for 4.2 what were once add-ons shipped with Blender are moving in to online platform. There are some exceptions made for add-ons which are integral for using Blender, such as Cycles and FBX i/o. Those will be converted and made regular parts of core Blender. [Design for tackling core add-ons](https://devtalk.blender.org/t/changes-to-add-on-bundling-4-2-onwards/34593/1) Node Wrangler is one of the most, if not THE most, used add-ons that come with Blender, so argument can be made that it deserves to ship with Blender. In fact, users were constantly demanded that this add-on was enabled by default. But Node Wrangler is a massive add-on loaded with functionalities that may not be useful for casual user and is better suited to be part of an extension. Most users are not even aware of most of the things add-on is capable of. So since Node Wrangler contains both: functionality that is part of core UX for every user (such as ctrl-shift preview), and functionality that is better suited for an extension, it makes most sense to decouple those. Proposal is to integrate more useful features of Node Wrangler into core Blender as python scripts, and what is left can be added on extensions platform, and users can download it from there. --- I went through the code and testing to determine which features should be integrated, and this is my proposal: **Should be part of core Blender:** - [x] **Preview Node** *(Since Shader editor doesn't have Viewer node, this functionality is needed to Shift-Click on node and preview it by connecting it to Material Output node. Most used feature of the add-on)* - [x] **Connect to Output** [O, Shift-Alt click] *(Connects selected node to Output node. In Shader editor this is same as Shift-Ctrl clicking it, but in Compositor and Geometry Nodes, where that shortcut uses Viewer Node, this one (Shift-Alt click) connects node to Group Output/Composite, instead of Viewer node)* - [ ] **Lazy Connect** (Holding Alt and hovering over two nodes automatically creates link from first to second. Output and Input are chosen automatically based on some criteria, and while not always perfect is super fast in most cases) - [ ] **Make Link** (Holding Shift-Alt and hovering over two nodes creates link between them, but instead of automatically choosing it shows two menus in succession that lets user choose output and input sockets, if there are more one) - [ ] **Lazy Mix** (Holding Shift-Ctrl and hovering over two nodes creates overlay around nodes, and on release creates Mix node with first outputs from selected nodes linked. It's tricky and can be improved to better determine correct data-type, but is very useful and very widely used even in current form) - [ ] **Select Frames Children / Parent Frame** [] *(Those kind of operator exists in almost every context and makes sense here too, also is very useful)* - [ ] **Reset Backdrop** [Z] *(Works in Compositor only. It's similar to "Fit Backdrop to Available Space" operator in View menu, but this one resets Scale to 1 instead of fitting to view)* - [ ] **Reset Node** [Backspace] (Resets node to default values. This feature isn't available built-in for entire node, and resetting properties individually puts all values to 0 instead of reseting to values node comes with.) **Should be part of extension:** - **Merge Selected Nodes** (Can connect outputs of any two nodes with Mix, Join Geometry, Mesh Boolean or Math nodes with any mode. It is too massive and general, and while great functionality, it doesn't work outside few intended cases, shortcuts are hard to remember and mostly unnecessary for casual users) - **Add Texture Setup** *(Shift-T while node selected to add connected Coordinates - Mapping nodes)* - **Detouch Outputs** [Shift-Alt-D] (Similar thing, but not exactly already possible with holding Alt and dragging node) - **Add Reroutes** [Numpad /] *(Adds reroute node for every output socket and connects them)* - **Link Active to Selected** [ \ ] *(What title says, but is way to tricky with too much options and doesn't work in most cases)* - **Clear Label** - **Modify Labels** [Shift-Alt-L] *(While this is better than built-in Batch Rename in some cases, it's better to improve Batch rename than have separate operator just for nodes)* - **Frame Selected** [Shift-P] (Already possible with Ctrl-J, but we can change shortcut of that to Shift-P if it makes more sense and is seen as parenting operation rather than joining on user level) - **Align Nodes** [Shift-=] - **Switch Type** [Shift-S] *(This is already depricated in add-on)* - **Save Viewer Image** (In Compositor when Viewer node selected shows operator in sidebar > Node panel that can save image shown externally) - **Change Factor of Mix Nodes** *(Not exposed anywhere, probably not a finished feature)* **Undecided:** - **Add Principled Setup** *(Ctrl-Shift-T while Principled BSDF selected to import multiple PBR images and connect with correct names, colorspaces and middle nodes, such as Normal and Displacement)* - **Swap Links** [Alt-S] *(It's an easy way to swap links in Mix and Math nodes, and also if there's only one link it can change which input it goes to very quickly, good for changing socket after connecting with Lazy Connect)* - **Batch Change Blend Type (& Math Operation)** *(Very useful right now, but do they fit in future design?)* - **Copy Settings to Selected** (If two of the same type of node selected copies settings from active to selected. Similar functionality exists for object-level properties, could fit in Blender's design. Currently broken and needs a fix) - **Copy Label to Selected** - **Reload Images** (There is RCS request to put this button in the header. Refreshes external images and is very important when working with images that are being modified in external image editors. VSE has similar operator, so fits in the design) - **Delete Unused Nodes** [Alt X] *(Can be seen as similar clean-up tool as Delete floating vertices in Mesh edit mode)* - **"Attributes" menu** (In Shader editor Add menu > Input it adds list of all available attributes and on selection adds Attribute node with correct mode and attribute name written inslide. Is SUPER fast way of adding attribute, also makes all attributes available when searching in Add menu) - **Import Multiple Images/Image Sequence** - (In Add > Texture menu. Similar thing exists in VSE as built-in operator. Is very useful, but needs to be decided if they should be in Add menu, or available in more 'built-in' manner?) --- Features can be implemented one-by-one, as separate PR's, so it's not immediate to agree on which features to port right away. We can start by most obvious ones and leave rest for discussion / feedback. Features than will be implemented in core Blender also have to be removed from add-on, so that extension doesn't add features that already exist (and sometimes may have been slightly modified). This is easy now when they're still hosted here, but once they're ported and uploaded on extensions that will have to be done on remote repository with collaboration of maintainers.
Nika Kutsniashvili added the
Type
Design
label 2024-05-13 17:10:07 +02:00

I do not like idea of putting things from addons into core. This can be addon.

I do not like idea of putting things from addons into core. This can be addon.
Iliya Katushenock added this to the Python API project 2024-05-13 17:18:44 +02:00
Member
  • Switch Type [Shift-S] (This is already depricated in add-on)

There wasn’t any kind of consensus, but discussions in blender/blender-addons#101514 hinted at this being possibly part of core Blender.

> - **Switch Type** [Shift-S] *(This is already depricated in add-on)* There wasn’t any kind of consensus, but discussions in blender/blender-addons#101514 hinted at this being possibly part of core Blender.

I would also vote for swap links to be included. It's invaluable for cleanup and speed imo

I would also vote for swap links to be included. It's invaluable for cleanup and speed imo

https://blenderartists.org/t/voronoi-linker-addon-node-wrangler-killer/1495885
After using this plugin, I haven't used the fast connection of Node Wrangler anymore.
This plugin also has many useful features such as quick preview,quickly link to expand socket, fast mathematical operations, swapping links, hiding node sockets, hiding node options, custom preview target socket, quick socket renaming and exchange group (group input output)node socket order,
The quick connection of this plugin is both fast and precise.This plugin also implements the Reset Node you mentioned.
I think this plugin greatly enhances the user experience. You can refer to it.

https://blenderartists.org/t/voronoi-linker-addon-node-wrangler-killer/1495885 After using this plugin, I haven't used the fast connection of Node Wrangler anymore. This plugin also has many useful features such as quick preview,quickly link to expand socket, fast mathematical operations, swapping links, hiding node sockets, hiding node options, custom preview target socket, quick socket renaming and exchange group (group input output)node socket order, The quick connection of this plugin is both fast and precise.This plugin also implements the Reset Node you mentioned. I think this plugin greatly enhances the user experience. You can refer to it.
Member

To use the nodes to do something, I believe everyone have to enable the node wrangler, except he/she don't know this addon.
So it's time to put it in the core. I vote yes.

To use the nodes to do something, I believe everyone have to enable the node wrangler, except he/she don't know this addon. So it's time to put it in the core. I vote yes.
Author
Contributor

First PR for porting preview functionality in shader editor, the most important part of the add-on #122016

First PR for porting preview functionality in shader editor, the most important part of the add-on #122016
Contributor

Preview node for the Compositor shortcut should also be implemented.

Preview node for the Compositor shortcut should also be implemented.

https://blenderartists.org/t/voronoi-linker-addon-node-wrangler-killer/1495885
After using this plugin, I haven't used the fast connection of Node Wrangler anymore.
This plugin also has many useful features such as quick preview,quickly link to expand socket, fast mathematical operations, swapping links, hiding node sockets, hiding node options, custom preview target socket, quick socket renaming and exchange group (group input output)node socket order,
The quick connection of this plugin is both fast and precise.This plugin also implements the Reset Node you mentioned.
I think this plugin greatly enhances the user experience. You can refer to it.

Voronoi linker does a lot more things than node wrangler

> https://blenderartists.org/t/voronoi-linker-addon-node-wrangler-killer/1495885 > After using this plugin, I haven't used the fast connection of Node Wrangler anymore. > This plugin also has many useful features such as quick preview,quickly link to expand socket, fast mathematical operations, swapping links, hiding node sockets, hiding node options, custom preview target socket, quick socket renaming and exchange group (group input output)node socket order, > The quick connection of this plugin is both fast and precise.This plugin also implements the Reset Node you mentioned. > I think this plugin greatly enhances the user experience. You can refer to it. Voronoi linker does a lot more things than node wrangler

I mostly enable node wrangler to use Ctrl+Shift+T because my workflow is mostly PBR. It's also a dependency in some of my scripts and addons, for example my substance integration addon that relies on it to load textures from substance into blender (I now have to show a message asking users to enable it manually): https://github.com/passivestar/substance-tools

Would be awesome to see Ctrl+Shift+T nativized!

I mostly enable node wrangler to use `Ctrl+Shift+T` because my workflow is mostly PBR. It's also a dependency in some of my scripts and addons, for example my substance integration addon that relies on it to load textures from substance into blender (I now have to show a message asking users to enable it manually): https://github.com/passivestar/substance-tools Would be awesome to see `Ctrl+Shift+T` nativized!

Shift-Alt click does not work in the composition editor

Shift-Alt click does not work in the composition editor
Sign in to join this conversation.
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset System
Interest
Audio
Interest
Automated Testing
Interest
Blender Asset Bundle
Interest
BlendFile
Interest
Collada
Interest
Compatibility
Interest
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
Interest
EEVEE
Interest
EEVEE & Viewport
Interest
Freestyle
Interest
Geometry Nodes
Interest
Grease Pencil
Interest
ID Management
Interest
Images & Movies
Interest
Import Export
Interest
Line Art
Interest
Masking
Interest
Metal
Interest
Modeling
Interest
Modifiers
Interest
Motion Tracking
Interest
Nodes & Physics
Interest
OpenGL
Interest
Overlay
Interest
Overrides
Interest
Performance
Interest
Physics
Interest
Pipeline, Assets & IO
Interest
Platforms, Builds & Tests
Interest
Python API
Interest
Render & Cycles
Interest
Render Pipeline
Interest
Sculpt, Paint & Texture
Interest
Text Editor
Interest
Translations
Interest
Triaging
Interest
Undo
Interest
USD
Interest
User Interface
Interest
UV Editing
Interest
VFX & Video
Interest
Video Sequencer
Interest
Virtual Reality
Interest
Vulkan
Interest
Wayland
Interest
Workbench
Interest: X11
Legacy
Asset Browser Project
Legacy
Blender 2.8 Project
Legacy
Milestone 1: Basic, Local Asset Browser
Legacy
OpenGL Error
Meta
Good First Issue
Meta
Papercut
Meta
Retrospective
Meta
Security
Module
Animation & Rigging
Module
Core
Module
Development Management
Module
EEVEE & Viewport
Module
Grease Pencil
Module
Modeling
Module
Nodes & Physics
Module
Pipeline, Assets & IO
Module
Platforms, Builds & Tests
Module
Python API
Module
Render & Cycles
Module
Sculpt, Paint & Texture
Module
Triaging
Module
User Interface
Module
VFX & Video
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Priority
High
Priority
Low
Priority
Normal
Priority
Unbreak Now!
Status
Archived
Status
Confirmed
Status
Duplicate
Status
Needs Info from Developers
Status
Needs Information from User
Status
Needs Triage
Status
Resolved
Type
Bug
Type
Design
Type
Known Issue
Type
Patch
Type
Report
Type
To Do
No Milestone
No project
No Assignees
10 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: blender/blender#121749
No description provided.