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

  1. Add the Node: Press Shift + A, search for Separate Geometry, and place it between your input geometry and output.
  2. Set the Domain: Choose the appropriate geometry domain (e.g., Face if separating polygons, Point if separating vertices).
  3. Plug in a Selection Condition: Connect a boolean output to the Selection socket.
  4. 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:

  1. Add a Position node.
  2. Connect it to a Separate XYZ node.
  3. Plug an axis (e.g., Z) into a Compare node set to Greater Than.
  4. 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:

  1. Add an Index node.
  2. Connect it to a Compare node (e.g., Equal, Less Than, or Modulo for alternating elements).
  3. Plug the result into the Selection socket.

3. Separating by Normal / Orientation

To separate upward-facing faces:

  1. Add a Normal node.
  2. Connect it to a Vector Math node set to Dot Product, with the second vector set to (0, 0, 1) for the Z-axis.
  3. 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:

  1. Add a Named Attribute node.
  2. Set the data type to Boolean or Float and enter the name of your vertex group or attribute.
  3. Connect the output directly (if boolean) or through a Compare node (if float) into the Selection socket.