How to get information about the current loop
Sometimes you need to use the current loop or the current piece number in an expression on one of the nodes in the same loop. You can get this information with a Block Begin SOP node that uses the Fetch Metadata method.
Set up a looping block using the instructions above.
Select the Block Begin SOP node, and then in the Parameter Editor click Create Meta Import Node.
This button adds a second Block Begin SOP node to the side of the existing one. This node is set up to generate an empty geometry with some detail attributes.
The detail attributes are as follows:
numiterations
The expected total number of iterations, taking into account the Max Iterations and Single Pass parameters on the Block End SOP node of the loop.
iteration
The current iteration number, always starting at
0
and increasing by 1 each loop.value
In piecewise loops, this is the current value of the attribute. For example, the
piece
integer orname
string, or if there is no attribute, the current point or primitive number.In simple repetition loops, this is a floating point value starting at the Block End SOP’s Start Value and increasing by the specified Increment each loop.
ivalue
In simple repetition, this is an integer version of
value
. This can be useful if the value is naturally an integer (for example, starts at1
and increments by2
) and/or if values are over 24 million (where floating point numbers lose precision).To grab the value of these attributes in a node inside the loop, do the following:
In a Houdini expression, use the detail expression function.
For example:
detail("../block_begin2", "iteration", 0)
In an Attribute Wrangle SOP node, use the detail VEX function.
In Python, use hou.Geometry.attribValue():
node("../block_begin2").geometry().attribValue("iteration")