On this page

Overview

Groups are named collections of points or faces.

The Group SOP node lets you sort points or faces in its input geometry into groups based on various criteria. Other operators may also create groups as a side effect.

Most nodes that operate on points or primitives give you the option of applying the node’s effects to certain groups in the input stream, instead of to every point/primitive. In this way, you can identify groups of points based on certain properties, and apply nodes to those groups and not to other points.

When a point is deleted, Houdini automatically removes the point from all the point groups it belongs to.

Ordered and unordered groups

A point group can be ordered or unordered. Unordered groups store their points in creation order. Ordered groups store points in selection order.

When you select points in the viewer pane, a single click performs an ordered selection, while a marquee box generates an unordered group. The only time bulk selections generate or maintain an ordered selection is when only one point is selected in the marquee box.

To...Do this

Create a point or primitive group

  1. Set the selection type:

    • Click Select on the left toolbar.

    • For points, click the Geometry Selection Mode and choose Points, or press 2.

    • For primitives, click the Geometry Selection Mode and choose Primitives, or press 4.

  2. In the viewer, use the tab menu to choose Group.

  3. On the viewport geometry, select the points/primitives you want in the new group. Then click Enter in the viewer to finish the selection.

  4. In the parameter editor, set the name of the new group in the Group Name field.

Use existing groups when selecting points/primitives for a new group

  1. Select the Group node.

  2. In the operation control toolbar, choose the name of an existing group from the Group Name menu.

  3. In the operation control toolbar, use the Group Type menu to change the component type (primitives, points, edges, vertices) based on the Group Name selected.

Combine and filter groups

The Group Combine node lets you create a group that is a combination of existing groups.

  1. Create a group. This creates a Group node with the geometry connected to it.

  2. Create a Group Combine node, and connect the Group node output to the Group Combine input.

  3. In the Group Combine parameter editor, specify the starting group of component types (primitives, points, edges, vertices) with the Group Name parameter:

    • In the left-hand field, enter the name of the new group to create, or choose an existing group to start with from the drop-down box.

    • Include the components of the group in the right-hand field by choosing Equals from the middle drop-down box. Include the components that are not in the right-hand field group by choosing the Equals All But option.

  4. Further combine and filter the group components in the options below Group Name by choosing to perform a union, intersection, exclusive or, or subtraction with additional groups.

Group syntax

Many geometry operators (SOPs) work on a specific subset of points or primitives. When you use the operator in the viewer, you select the points/primitives you want to use. In the parameter editor, this list of points/primitives is specified in the Group parameter using the following patterns.

You can use multiple patterns separated by spaces. The matches for each pattern are combined to form the group.

Pattern

Meaning

*

All points, primitives, vertices, or edges. To match no elements, use !*.

?*

Match anything in a named group.

n

Component number ‹n›.

group_name

In SOPs other than the Group SOP, you can specify a named group of points/primitives (created with the Group SOP).

You can use pattern matching (*, ?, and [ ]) in the group name. For example, arm* includes all point/primitive groups whose names start with arm. ^ can be used in the pattern by enclosing the pattern in { }. For example, {arm* ^arm3*} includes all groups whose names start with arm, but not arm3.

n›-‹m

Components numbered from ‹n› to ‹m› (inclusive).

n›-‹m›:‹step

Components numbered from ‹n› to ‹m› (inclusive), skipping every ‹step›. For example, 1-100:2 means every other number from 1 to 100.

n›-‹m›:‹keep›,‹step

Components numbered from ‹n› to ‹m› (inclusive). Use the first ‹keep› numbers and then skip every ‹step› after that.

!‹pattern

Every component except the ones matching the pattern. For example, !1-10 means every point/primitive except the numbers 1 to 10.

pattern› may be a numeric pattern, attribute pattern, or group name pattern.

^‹pattern

Remove components matching the pattern from the results of the preceding pattern. For example, 0-100:2 ^10-20 means every other number from 1 to 100 except the numbers 10 to 20.

pattern› may be a numeric pattern, attribute pattern, or group name pattern.

@‹attribute›‹op›‹value

Components where ‹attribute› matches ‹value›, based on the ‹op›, which can be one of =, == (same as =), !=, >, <, >=, or <=.

For example, @v>0 will create a group of all points whose v attribute is greater than 0.

You can specify components using [‹index›] after the attribute name, for example @Cd[2] will get the blue channel of the diffuse color (Cd) attribute.

As a convenience, you can also use .x/.y/.z, .u/.v/.w, or .r/.g/.b instead of [0], [1], and [2]. For example P.x to get the X-axis component of the position (P) attribute.

(If you don’t specify a component for a multi-component attribute type, the comparison will use the first component.)

For example, @P.y>0 will create a group of all points whose Y component is greater than 0.

For string attributes, you must put quotation marks around the ‹value› if it contains spaces, for example @myattr="foo bar".

You can use wildcards (* and ?) in the ‹value› when using =, ==, and != on string attributes.

You can combine the attribute syntax and the range syntax:

@id=5-10

You can also use the attribute syntax with an integer pattern, but you need to enclose the pattern in quotes:

@id="5 8 10 15"

@id="0-4 78"

You can use this to compare against intrinsic attributes as well:

@intrinsic:indexorder<100

@‹attribute›=‹val›,‹val›,...

Components with the given attribute containing one of the listed values. For example:

@id=1,2,90,120

For string attributes, you must enclose values containing spaces in double quotes, for example:

@path=/foo/*,/bar,"some string"

Edge syntax

Some nodes deal with edges (the line connecting two points) rather than points or polygons, for example, the Dissolve node. In these nodes (or a node set to a mode that affects edges), you can use the following syntax in a group field to select edges.

Pattern

Meaning

n

All edges in primitive number ‹n›.

p‹n

Point number ‹n› / edges with point number ‹n›.

n›e‹m

Edge number ‹m› of primitive ‹n›.

p‹a›-‹b

Edges between point number ‹a› and point number ‹b›.

Geometry

Understanding

Modeling

Terrain

Fracturing

  • Destruction

    How to break different types of materials.

Clouds

Next steps

Guru level