 One of the big new features that is coming to Blender 4.0 that might be flying under your radar is the new functionality to create tools with the geometry nodes. This makes it very simple to create custom tools that you can use to accelerate your workflow without writing a single line of Python code. Not that there's anything wrong with Python, but it does mean that now a lot more people will be able to customize their workflow and that it makes it a lot more easy to mock up new ideas for a new tool and integrate it as part of your library to reuse and share it. This means that with all the existing procedural capabilities of geometry nodes you'll be able to create tools that you can run directly from within edit mode or sculpt mode which operates on your editable geometry directly as you work. While this doesn't keep the procedural aspect of the node tree intact, it means that you can keep editing the geometry with custom build tools that are catered to exactly what you need without leaving the 3D viewport. You might be wondering why, since geometry nodes has been pushing the non-destructive workflow with Blender further than it's ever been, push this in the direction of a destructive workflow instead. And the answer to that is that there is room for both. Being able to customize a non-destructive workflow is at the heart of what geometry nodes have been created for, and now this is brought to destructive workflows as well. So how does one create one of these node tools now? The important thing you need to know to get started is that the geometry nodes editor now has a mode setting that can be switched to tools. By default this is set to modifier. Here creating a new tool is as easy as clicking on the new button. That creates a new node tree just as you are used to from creating a new modifier in geometry nodes. The main difference between a modifier and a tool node tree is how it can be used. A modifier node tree is run again and again procedurally whenever something about the geometry changes as part of the modifier stack. A tool node tree is run once from the menu and applied immediately as you are editing the geometry. This also means that Blender needs to know which is which when you create a new node tree. You can specify the type of the node tree here in the node group settings. Usually these will be set automatically as you create the node tree depending on the editing context. At the top bar of the node editor you can specify in what context the tool should show up. So the type of geometry and the editing mode, like for example mesh edit mode or sculpt mode. This will also be set automatically when you create the new tool node tree in a certain context. Then you can see that in the right context there is a new menu entry that is just characterized by this unassigned icon here. This is where new tools go before they are categorized into a menu. We'll go over how that works later. But now you can already see how the tool that we just created shows up in the menu entries next to the built-in tools. So any operation that you do in this tool node tree will be executed and applied immediately anytime you run the tool. All from within the viewport, just like the regular built-in editing tools in Blender. Let's build a simple little example tool so I can show you how this works. We will make a small tool to turn selected edge loops into dimensional tubes or pipes in mesh edit mode. The file with this example is one of the setups provided by Tim Greenberg, aka PassiveStar on the Blender demo files website. The best way to create tubes or pipes like this in geometry nodes is to use curves. So let's add in one node to convert the existing edges into curves and then another node to convert those curves back into a mesh. We just need to add another curve circle node to define the profile for the meshing process and then we can already see the initial version of the tool in action. You can see how all the edges of our mesh are turned into these tubes now, just like a wireframe. There is one thing I want to point out here. You need to make sure that the type of geometry that is going to the output of the tool node tree is the same type that you do the editing for. With modifiers you can procedurally create any type of geometry, but now with tools it needs to be written directly into the data that you are editing. So it needs to be compatible. That means without the conversion to mesh you are left without data as there cannot be any curve data inside of the mesh. The same is true for instances, volumes, etc. Now let's move on with the example. The next thing I want to do is to make this use the actual selection from mesh edit mode. For this kind of context-based data there are a few new nodes that are exclusive to tool node trees. Since we are applying the operation immediately when the tool is used we don't need the information that we base it on to be persistent. We don't need the selection to be kept around for later. So for tools we can have access to additional context information that we can access with special input nodes like the selection face sets and the 3D cursor. For now we just use the selection input node. Now the actual selection from edit mode is used the next time we run that tool. Keep in mind that this node cannot be used in the modifier node tree since the selection is just a temporary attribute for the editing user interface and it's not available in a modifier context. So now the tool is respecting the selection that we have set but it is still not quite doing what it should. Instead of adding the generated geometry to the existing one it is completely replacing it. So let's use a join geometry node to join it together with the input geometry. And there we go. This means that the core functionality is there. But I want to expose some additional control to this node setup somehow. The way that you can expose parameters as settings for tools is the same as for modifier node trees. You can just create node group inputs to make any setting accessible from the outside. For modifiers these settings just show up in the user interface of the modifier panel. But this doesn't exist for tools that are directly applied. So for tools you can find these in the operator panel that you get in the bottom left of the viewport or by hitting of 9 after running the tool. Here you can change the settings that you exposed from the node tree after running it and any change will run it again with the adjusted settings. So let's expose some of the parameters that we have available on the node tree to make this tool a bit more flexible. Okay great, there's one last thing that I want this tool to do in order to make it more convenient. A useful aspect of mesh editing tools that create new geometry is that the operation also clears the previous selection and selects the newly generated geometry instead. This allows you to immediately work on the new geometry without having to select it yourself. So for setting the selection there is also a new node for tools that allows this called the set selection node. We can simply insert this at the end of our operation and set the selection to what we need. So let's set it to false for the existing and to true for the new geometry. Now after running the tool you have a selection that is isolated to the new geometry. That makes it a lot easier to use this tool in your workflow as now you can operate on the newly created geometry immediately after using the tool. And that is already our simple tool finished. And now to make this tool available outside of this specific file you have to turn it into an asset that is accessible as part of a library. That works simply by marking the node tree as an asset with right click and making sure that the file that contains it is part of a library that you have specified in your user preferences. By default the asset is not assigned to any catalog. So it shows up under the unassigned catalog in your asset library. This is also what makes it show up in the unassigned menu in the viewport. Using the catalog structure of your asset library you can specify exactly in what menu the tool will show up. This way by recreating the existing menu structure you can also fit them into one of the menus that are in Blender by default. This tool for example we can fit into the edge menu simply by creating the edge catalog. And now it shows up together with the other edge operations whenever you press ctrl E. Of course this can also be assigned with your own shortcuts. And that's already everything you need to know about node tools in Blender 4.0. But to put it into perspective what this addition to Blender means I want to talk briefly about what kind of things are planned to add to the system in the future. Some of the things that are planned to be possible using the node tool system include the addition of more of the mentioned information from the context like the mask from scope mode, the active attribute or the view angle for example. Also custom gizmos to specify the input visually in the viewport modal operators to give an interactive input before confirming and other properties that will give more value to the fact that these tools can be run as part of a destructive workflow rather than in a procedural setting. After all there is great value in combining the vast and growing procedural capabilities of geometry nodes with a strong customizable tool set for a destructive workflow. So once again this is only the first step in an effort to bring all of the capabilities of the geometry node system to the ability of users to create custom tools for their specific workflow without the need of writing code in a way that interrogates enter their workflow on a fundamental level. I hope this overview video gave you a good start into building your own tools with Blender 4.0 and I'll see you next time.