|On this page|
This node can modify point instance transforms and properties in a few ways:
Set transform and property values using parameters and expressions.
Set property values using VEX snippets.
Create a SOP network inside this node (or elsewhere in the node hierarchy) that generates points where each point corresponds to an instance and SOP attributes on the points correspond to properties. See point cloud editing below.
This node is useful, for example, if you want to transform instances from the results of an RBD simulation. At the same time, you could use property editing to update the
Point cloud editing
This node lets you build a SOP network to modify instance transforms and properties by processing geometry that represents the instances. Points in the geometry correspond to instances, and the SOP attributes on the points correspond to instance properties.
You can set the node to get transforms and/or individual properties by processing a SOP network.
If you choose "Internal SOP", the node uses the nodes you build in the SOP subnet inside this node.
In this mode, the points are created for you and fed through the network (connect the output of
Sub-Network Input #1to the first node in your processing network).
Each point has a
pathSOP attribute set to the scene graph path of the instancer.
If you choose "External SOP", you can specify a SOP network anywhere in the Houdini node hierarchy. However, the network must generate the points with the proper attributes somehow.
The points must have a
pathSOP attribute set to the scene graph path of the instancer.
By default, the node will try to match points up with instances by matching point numbers to instance indices. This will probably only work you are processing every instance in a single instancer. Otherwise, you should turn on Match by ID and set the
idSOP attribute on each point to the index of the corresponding instance.
SOP attribute names and types must match the corresponding property names set up on this node (although some names can be remapped automatically, see Tips below).
Beside the point position (
P), SOP point instancing attributes, such as
up, are translated back into the instance transform. See instancing attributes for more information.
Tips and notes
If you try to edit the USD
accelerationattributes, the node will show an option to remap from the corresponding SOP attributes (
In VEX snippets, you can use
@variable names containing colons (
:). This makes it easier to automatically bind certain USD attribute names (for example
i@primvars:foo). (These names are not normally legal in names in VEX source code. The node automatically encodes these kinds of names when used in a snippet.)
A space-separated list of instances, using
/path[instance_index] syntax (for example,
/geometry/instancer /geometry/instancer). The index within the square brackets can be an inclusive range, for example
/geometry/instancer[4-7]. You can refer to instances of nested instancers using multiple indexes, for example
Author new transforms on the selected instances. If this is off, the node will not override the existing transforms.
How to compute the transform for each selected instance. "Internal SOP" uses the SOP subnet inside this node to process points representing the instances. "External SOP" uses an external SOP network that must generate points representing the instances from scratch. (See point cloud editing above.) "Uniform" gets the transform from parameters (which can be driven by expressions).
Match By ID
When Source is "External SOP" and this is on, the node looks for
id SOP attributes on the generated points. The
id should be the index of the corresponding instance. (When this is off, the node matches point numbers to instance indices, which only works if you process every instance in a single instancer.)
When Source is "External SOP", the node path to the geometry node to cook to get the generated points. Each point in the output should correspond to one of the selected instances.
When Source is "External SOP", if this is not blank, only consider points in this point group from the geometry node’s output.
The order in which Houdini applies translates, rotates, and scales, and the order in which it applies rotation.
Movement amount along XYZ axes.
Degrees rotation around XYZ axes.
Non-uniform scaling along XYZ axes.
Scales the object uniformly along all three axes.
Amount of shearing in the XY plane, the XZ plane, and the YZ plane.
Moves the local origin of the object.
Rotates the local origin of the object after translation.
Click to automatically fill in the Properties multi-parm. (The node assumes any array attribute on the instancer with an array length the same as the number of instances contains per-instance values.) If you want to re-do this, click Clear in the multi-parm, then click this button again.
For each property, the node only computes a new value if this is checked.
The name of the property to edit or create. You can choose an existing attribute from the pop-up menu to the right of this field. (The node assumes any array attribute on the instancer with an array length the same as the number of instances contains per-instance values.)
The USD type of the attribute to create/edit. If you chose the Name from the pop-up list, this is automatically set to the correct type.
How to compute the attribute value for each selected instance. "Internal SOP" uses the SOP subnet inside this node to process points representing the instances. "External SOP" uses an external SOP network that must generate points representing the indices from scratch. (See point cloud editing above.) "Uniform" gets the value from a parameter (which can be driven by expressions).
When Source is "Uniform", get the value for each instance by evaluating a VEX snippet. The snippet should write the value to the
value variable. You can use the variables typically available to an Attribute Wrangle SOP.
@ptnum is the index of the current point. You can use
npoints(0) to get the total number of points. You can use
@Time to make the snippet time-dependent.
When Source is "Uniform", the value to set the attribute to for each instance. (This can be driven by an expression.)
Skip pruning/hiding instances.
Hide selected instances.
Remove selected instances.
Use internal SOP to delete or hide instances using a SOP workflow. Deleted USD primitive instances from the embedded sopnet will delete the corresponding instances, while using a Visibility SOP to hide instances will hide the corresponding instances.
Set this parameter to a non-zero value to prune instances, or zero to unhide instances when Method is set to "Hide" and not delete instances When Method is set to "Delete". This parameter exists to provide an easy way to animate the visibility of instances by authoring an opinion at each time sample.