Separate Geometry by Selection in Blender Geometry Nodes
Separating geometry based on a selection is a fundamental procedural workflow in Blender Geometry Nodes. By utilizing the dedicated Separate Geometry node, you can split meshes, curves, or point clouds into two distinct geometry streams—one containing elements that meet your criteria and another containing those that do not. This guide covers how to set up the Separate Geometry node, define selection criteria, and route the resulting geometry streams for independent modification.
The Separate Geometry Node
The core tool for this process is the Separate Geometry node located under Add > Geometry > Operations > Separate Geometry.
The node includes the following inputs and settings:
- Geometry: The incoming mesh, curve, or point cloud data.
- Selection: A boolean field (True/False) that dictates which elements are separated.
- Domain: A dropdown menu (Point, Edge, Face, Spline, Instance) that defines the level of geometry being evaluated and separated.
The node provides two outputs:
- Selection: Contains only the geometry where the
selection condition evaluated to
True. - Inverted: Contains the remaining geometry where the
selection condition evaluated to
False.
Step-by-Step Setup
- Add the Node: Press
Shift + A, search for Separate Geometry, and place it between your input geometry and output. - Set the Domain: Choose the appropriate geometry domain (e.g., Face if separating polygons, Point if separating vertices).
- Plug in a Selection Condition: Connect a boolean output to the Selection socket.
- Route the Outputs:
- Connect the Selection output to your desired downstream nodes to modify only the chosen parts (e.g., extruding selected faces or transforming points).
- Connect the Inverted output to apply different operations to the unselected parts.
- Use a Join Geometry node if you need to merge the modified streams back together before the final output.
Common Selection Methods
1. Separating by Position (Bounding/Spatial)
To separate geometry based on location:
- Add a Position node.
- Connect it to a Separate XYZ node.
- Plug an axis (e.g.,
Z) into a Compare node set to Greater Than. - Connect the boolean result to the Selection socket of the Separate Geometry node.
2. Separating by Index
To isolate specific elements by their ID or index:
- Add an Index node.
- Connect it to a Compare node (e.g., Equal, Less Than, or Modulo for alternating elements).
- Plug the result into the Selection socket.
3. Separating by Normal / Orientation
To separate upward-facing faces:
- Add a Normal node.
- Connect it to a Vector Math node set to Dot
Product, with the second vector set to
(0, 0, 1)for the Z-axis. - Pass the result into a Compare node (Greater
Than
0.7) to isolate faces pointing predominantly upward.
4. Separating by Named Attribute / Vertex Group
To use existing vertex groups or UV-based attributes:
- Add a Named Attribute node.
- Set the data type to Boolean or Float and enter the name of your vertex group or attribute.
- Connect the output directly (if boolean) or through a Compare node (if float) into the Selection socket.