Houdini 12 Reference Panes

Overview

The bundle list shows all bundles in the current scene. Bundles are groups of nodes, potentially from different networks. Bundles let you refer to a group of nodes by name instead of listing them explicitly. Bundles are especially useful for light linking.

To use a bundle anywhere Houdini expects a list of nodes (such as in a light mask) by using @bundle. For example, if you have a bundle named keylights, you can use @keylights to refer to it in a light mask.

Normal (manual) bundles

You can set the contents of normal bundles by dragging nodes onto the bundle in the bundle list pane or by using the toolbar buttons (see below).

To...Do this
Create a new bundle

Choose Bundle > New Bundle, or click New Bundle in the toolbar.

Create a bundle from the current selection

Right-click the network editor background and choose Add > Add bundle.

Make a bundle only able to contain certain types of nodes

Select the bundle in the list on the left and use the Filter menu at the bottom.

Add nodes to a bundle

Drag the node(s) from a network editor and drop it on the bundle name in the list on the left.

or

  1. Select the bundle in the list on the left.

  2. Select the node(s) in the network editor, then click Add selected in the toolbar.

Remove a node from a bundle
  1. Select the bundle in the list on the left.

  2. The list on the right shows the contents of the bundle. Select the node you want to remove from the list on the right and choose Edit Contents > Remove or press ((Delete)).

or

  1. Select the bundle in the list on the left.

  2. Select the node(s) you want to remove in the network editor, then click Remove selected in the toolbar.

View and edit the flags of nodes in a bundle
  1. Select the bundle in the list on the left.

  2. The list on the right shows the contents of the bundle. The columns to the right of each node name show the state of the node’s Selectable, Display, Bypass, and Template flags (if the node has those flags).

  3. Click in the columns to toggle the flags for individual nodes, or use the buttons on the toolbar to toggle the flags for all nodes in the selected bundle.

Rename a bundle

Click the bundle’s name in the list on the left.

Duplicate an existing bundle

Select the bundle in the bundle list pane and choose Bundle > Duplicate.

Merge the contents of multiple bundles into a single bundle

Select the bundles you want to merge in the bundle list pane and choose Bundle > Merge.

Delete a bundle

Select the bundle in the bundle list pane and choose Bundle > Delete.

Convert Normal Bundle to Smart Bundle

Select the bundle in the bundle list pane and choose Bundle > Convert To Smart Bundle.

Toolbar

Creates a new bundle.

Creates a new smart bundle (see below).

Set the contents of the displayed bundle to the current selection.

Adds the current selection to the displayed bundle.

Removes the current selection from the displayed bundle.

Turns the select flag on or off for all nodes in the bundle that have the flag.

Turns the display flag on or off for all nodes in the bundle that have the flag.

Turns the bypass flag on or off for all nodes in the bundle that have the flag.

Turns the template flag on or off for all nodes in the bundle that have the flag.

Turns the expose flag on or off for all nodes in the bundle that have the flag.

Selects the contents of the displayed bundle.

Adds the contents of the displayed bundle to the current selection.

Removes the contents of the displayed bundle from the current selection.

Smart bundles

Normally you define the contents of bundles by dragging nodes onto the bundle in the bundle list pane. However, you can also define smart bundles. These are like smart playlists in iTunes: they automatically include all nodes that match a pattern you define.

To...Do this
Create a smart bundle

Choose Bundle > New Smart Bundle, or click New Smart Bundle in the toolbar.

Edit a smart bundle’s matching pattern

Double-click the smart bundle’s icon.

Nodes whose paths match this pattern will be put into the bundle. As nodes are created or deleted, the contents of the bundle update automatically.

You can also use a space-separated list of patterns, in which a node will be included if its path matches all the patterns.

Convert a smart bundle to a normal bundle
  • Select the smart bundle in the list on the left and choose Bundle > Convert to Normal Bundle.

  • If you manually edit the contents of a smart bundle (by adding or removing nodes), Houdini will convert the bundle into a normal bundle.

Smart bundle patterns

  • Use * to match any string.

  • Use ? to match any single character.

  • Use ^ to match only if the following pattern doesn't match.

  • Use % to match anything up to but not including the next /

  • Use ( , | , and ) to match any of the | separated strings you specify.

  • Patterns that don’t contain a slash will match any node where the pattern matches the node’s name.

  • Putting a star at the end of a pattern, e.g. /obj/model*, will match nodes under /obj/ whose names start with model, and any of their children, because * matches slashes (/) in the path.

    To match nodes whose names start with model but not their children, use the compound pattern: /obj/model* ^/obj/model*/*. The ^ in front of the second pattern means to not include nodes matching /obj/model*/*.

Example Smart Bundle Patterns

/obj/%

Will match any nodes at the object level, but none of their children.

/obj/node(12|13|14)/child

Will match the nodes with any of the following paths: /obj/node12/child, /obj/node13/child, obj/node14/child

/obj/*/child

Will match any node called “child” that is a subchild of obj. (i.e. * will match anything in between “/obj/” and “/child”)

Categories vs. Bundles

The old bundle support did the following:

   membership = []
   foreach bundle in all_bundles:
      if bundle.contains(object)
          membership.append(bundle.name)
   RiAttribute('grouping', 'string membership', ' '.join(membership))

While this is possible, it’s also quite expensive to do loops for all bundles for all objects. You could try putting the following function in the Python session module (i.e. Windows > Edit Python Source).

def bundleList():
    node = hou.pwd()
    bundles = []
    for b in hou.nodeBundles():
        if b.containsNode(node):
            bundles.append(b.name())
    return ' '.join(bundles)

Then put pythonexprs('hou.session.bundleList()') in the Categories_ parameter of geometry nodes. You should have the bundle names showing up as categories for your objects.