Hey folks,
I absolutely love Geometry Nodes. I’ve been using them since it was introduced in alpha stage. Over the years, I’ve developed a few useful scripts to improve my Python skills and for my own commercial pipelines (see the Geo-Scatter project, which runs entirely on Geometry Nodes).
Recently, I’ve decided to centralize all these node tools into a single free plugin: a super-powerful tool that node wizards will surely love!
Here it is, say hello to Node Booster
Features
You can consider NodeBooster a hybrid between two types of projects:
- A very useful set of operators and functionalities to improve your nodal workflow!
You’ll be able to create node trees faster and more efficiently, thanks to shortcut-based nodal operators, for example. - A set of new nodes that will be added alongside Blender’s native nodes.
You’ll find new nodes, such as the Math Expression node in the Add Menu > Booster Nodes.
(For now, only the Geometry Node Editor is supported.)
New Node: Math Expression
With this node, you’ll be able to evaluate a math expression. The variables will be created as sockets input or constants automatically when you confirm the expression and press Enter.
About:
- The following notations are supported:
+
,-
,*
,/
,%
,//
,**
, and the²
operator. - Many functions are recognized, such as
sin(a)
,nroot(a,n)
,lerp(fac,a,b)
, and many others. Please see the full list in your node editor under N Panel > Node Booster > Active Node > Glossary for the function names, their arguments, and descriptions. - Macros for irrational numbers are available. The macros
Pi
,eNum
, andGold
can be automatically assigned to their Unicode symbolsπ
,𝑒
, andφ
, which will be recognized and assigned. Make sure to press theπ
button to activate these macros. - Algebraic notations are supported (also known as implicit multiplication). You can work with expressions such as
2ab(4ac+π)²
, where variable names are split into individual characters (e.g.,abc
will be interpreted asa*b*c
). To activate this feature, make sure theab
button is toggled ON!- Note that function names will still be recognized and prioritized. For example, if you use
sin
, the interpreter will treat the sequence as a function rather than as individual variables. - When using this algebraic notation mode, ensure there is no ambiguity in the order of operations. For instance,
1/2ab
does not yield the same result as1/(2ab)
.
- Note that function names will still be recognized and prioritized. For example, if you use
- If anything goes wrong, you will receive an error message.
- In N Panel > Node Booster > Active Node, you can bake the Plugin Node into a Blender Node Group for sharing with third parties who do not have the tool.
- Debug: You can see how the node operates behind the scenes. Your expression is first sanitized, then transformed into a function expression, which is executed by the plugin to create a hidden node tree. Navigate to N Panel > Node Booster > Active Node > Development to view these debug expressions.
- Pro Tip: You’ll also see a ‘NodeTree’ template below these two debug strings. You can drag and drop the Node Group icon (located to the left of the template) to add the hidden node tree to your tree, allowing you to observe what the plugin is doing behind the scenes.
- WARNING: This is an early release. Please verify the results; if you believe the math is incorrect, let me know and I’ll fix it.
Limitations:
- Currently, only Geometry Node Tree types are supported.
For Later (?):
- This node has a lot of potential. I could implement dynamic
Int
orBool
types and easily evaluate comparison operations, as well as add more functions such asispair(a)
orisneg(a)
, etc. - This node could evolve into a more sophisticated Advanced Expressions system, allowing the creation of multi-type variables (e.g.,
Int
,Bool
,Vector
,Quaternion
, andMatrix
) for more advanced 3D math. The socket type could dynamically swap. We could even write simple VEX-like code similar to Houdini. If you’d like to see such a project come to life, please consider a donation.
New Node: Sequence Volume
This node will evaluate the sound from the Video Sequencer Editor’s volume on each depsgraph frame_pre update, which is useful if you’d like to create motion graphics or effects that react to music, for example.
This node was made possible thanks to @tintwotin and his post Get the sound intensity of a current frame.
Limitations:
- The node will not work if the plugin is disabled.
- Currently, only Geometry Node Tree types are supported.
For Later (?):
- This node has a lot of potential, and I would like to integrate a feature to sample only specific aspects of the sound or sample the sound with an offset.
New Node: Python Expression
This node will grant you the ability to evaluate a line of Python code directly, allowing you to directly feed it to Geometry Nodes through an output socket.
About:
- You can fetch and synchronize almost any kind of data in Blender to Geometry Nodes as long as it fits into one of the following types:
Float
,Boolean
,Integer
,Vector
,Color
,Rotation
,Matrix
,bpy.types.Object
,bpy.types.Collection
,bpy.types.Material
, orbpy.types.Image
. - The node socket output type will automatically adjust based on the value evaluated in your expression.
- The shortcuts
bpy; D = bpy.data; C = context = bpy.context; scene = context.scene
andfrom mathutils import *; from math import *
will be available in your evaluation context. - The name
self
is also recognized as the node object. Note that it might not be available in every context. - The macro
#frame
will also work in there. - You can define extra convenience variables in your node preferences (see Node Editor N Panel > Node Booster > Active Node > Preferences).
- The node will automatically be re-evaluated on each depsgraph post and frame_pre update by default, ensuring that the values are always in sync with Blender.
Limitations:
- The node will not work if the plugin is disabled.
- Currently, only Geometry Node Tree types are supported.
- This system relies on string evaluation, so if you use objects with escape characters (e.g.,
bpy.data.objects["my"name"].location
), it may fail.
Tip & Trick:
- If you’re unsure how to find the code lines you need, go to Blender Preferences > Interface > Display and enable ‘Python Tooltips’. With this option enabled, hovering over properties will display the full bpy data.
New Node: Python Script
Similar to the node above, but instead of entering a line of code, you select a blender text data, the whole file will be evaluated, and the python variables starting with the letters OUT_
will automatically create new sockets and update their values.
Code Example
import bpy
from math import *
# Put any complex calculation here,
# the values will be updated automatically & feed to geometry node
# Their var names simply needs to ends with 'OUT_' prefix
x = sin(10/50)
this_name = "Foo"
OUT_FloatValue = x
OUT_Foo_Object = bpy.data.objects[this_name]
OUT_MyQuaternion = bpy.context.object.rotation_euler.to_quaternion()
OUT_MyFloatList = [i for i in range(10)] #will be translated into a matrix
New Node: Camera Info
Gather information about the scene’s active camera, or any selected camera. Thanks to @Strike_Digital for the original implementation.
Limitations:
- The node will not work if the plugin is disabled.
- Currently, only Geometry Node Tree types are supported.
New Node: Is Rendered View
This node checks if the rendered view shading mode is active. It works well with is Viewport
, allowing you to preview your final object even in the Cycles dynamic viewport (which can handle a heavier workload compared to a raster viewport).
Limitations:
- The node will not work if the plugin is disabled.
- Currently, only Geometry Node Tree types are supported.
- It will return True if any of your viewports are in rendered shading view. Unfortunately, Blender’s Geometry Nodes do not support returning geometry for a single viewport.
Draw Routes
Quickly draw reroutes and create links from input to output sockets in this mode. Select a node, then press E to enter nodal mode.
For Later (?):
- The new Blender node panel system is not yet supported; it’s unclear if the API allows for it.
- It would be nice to enable right-to-left linking and possibly implement a way to add nodes on the fly while continuing the linking process.
Favorites
Add a favorites flag with CTRL+Y, and cycle through your favorites with Y.
Color Palette Assign
Assign colors to selected nodes easily using a palette.
Draw Frames
Quickly draw and assign frames by continuously pressing J.
For Later (?):
- There is room for improvement; currently, parenting frames is not supported.
Reroute Chamfer
Chamfer selected reroutes with CTRL+B. Note that this is not as useful if your noodle curvature is not set to straight. You can change this in Theme > Node Editor > Noodle Curving
.
Downstream/Upstream Selection
Select nodes downstream or upstream by using CTRL+Left Mouse or CTRL+ALT+Left Mouse. Hold the SHIFT key to preserve the selection.
Advanced Node Search
Quickly search for nodes using the advanced node search tool, located in the N panel.
For Later (?):
- This functionality could be greatly improved; for instance, by implementing recursive search and visualizing the results in the UI before selection. Consider making a donation if you’d like to see this feature implemented.
Purge Unused
Remove unused nodes or elements. This operator can be found in the node editor’s ‘Node’ header menu.
Customized Shortcuts
All operator shortcuts can be customized in Node Editor N Panel > Node Booster.
For Later (?):
- It would be nice if the shortcuts were saved in the plugin preferences.
Download it now
Node Booster is completely free!
However, to keep this project alive and well-maintained, your support makes all the difference.
If you enjoy using it and want to see new, cool features, continued development, or any form of customer support, please consider a one-time donation or joining on Patreon.
- nodebooster.zip (Free)
- Github (Free)
- BlenderExtension (Free) (Coming soon…)
- Gumroad (for Donations) (Coming soon…)
- BlenderMarket (for Donations) (Coming soon…)
- Patreon (for Donations)
Changelogs
v1.0 Beta
Release Date: 24/02/2025
Blender Compatibility: 4.2 | 4.3 | 4.4
Description: This is the initial release, ready for beta testers.