Houdini 20.5 Nodes Geometry nodes

Group Expression geometry node

Runs VEX expressions to modify group membership.

On this page
Since 16.0


This node runs the expression on every point/primitive/vertex (depending on the Class parameter) in the input geometry. Each expression will be assigned to the specified group. To get the group’s current value, use the @group_ syntax. It can access information from other geometry using attributes and VEX functions.

  • Unlike Wrangle nodes, you do not have to write a complete VEX statement, only a VEX expression. Each expression is wrapped with an assignment to the given group and a semicolon. If you need to write a more complicated multi-line function, use the Attribute Wrangle with @group_

  • The generated VEX snippet can be viewed by updating the generated code tab.

  • Press on the node to see any error output from the snippet.

  • You can use the VEX function ch to evaluate parameters. The path is relative to this node (ch("parm") will evaluate the parameter parm on this node). This evaluation will be done at the current time.

  • Unlike the Attrib Create SOP, this does not use local variables. Further, all backtick expressions and $F variables will be evaluated at frame 1, not the current time. Use @Frame, @Time, or @TimeInc instead.

The VEX snippet parameter lets you enter a snippet of VEX code to run on the input geometry. See VEX snippets for basic information on the syntax available in the snippet parameter. See the VEX chapter for general information on the VEX language.



Group Type

What type of groups to edit. All group expressions are run in a single pass so must have the same group type.

Group VEXpressions

Number of vexpressions to apply.

Group Name

Name of group to generate.


A single expression in VEX, with no assignment or semi-colon.

Merge Op

How to merge the expression with any existing group of the same name.


Evaluation Node Path

VEX functions like ch() usually evaluate with respect to this node. Enter a node path here to override where the path search starts from. This is useful for embedding in a digital asset, where you want searches to start from the asset root.

Attribute To Match

Which attribute to use for matching. This attribute must be present on both inputs for matching to be done. Otherwise matching is done by element number (e.g., point number when running over points). The attribute should either be an integer or string attribute. This controls how the opinput#_ virtual bindings connect. You can use v@opinput1_Cd, for example, to read the second input’s v@Cd attribute.

Generated Code

Update Code

Updates the generated code parameter with the current state of the set of snippets.

Generated Code

The equivalent code for an Attribute Wrangle SOP to perform the functions of the expressions. This is useful if a simple expression becomes complicated and you want to upgrade it to a full wrangle SOP. Changing this does not affect the behavior of the node.

See also

Geometry nodes