I have some prims that I need to drive through a Clip SOP. Each prim has got its own clipping plane origin and direction, previously computed and stored in prim vector attributes, eg v@clipOrigin and v@clipDirection
I would like to connect these attribute values to the inputs of a Clip SOP: Origin & Direction parameters but cannot figure out how to do it.
I tried (just showing the Origin.x parameter of the Clip here, but the y/z and the Direction.x/y/z would be analogous:
@clipOrigin.x no error, but wrong result (alway zero)
v@clipOrigin.x error: unable to evaluate expression - extra tokens detected in expression
ch("../nodeJustAboveClip/clipOrigin/x") error (bad parameter reference)
hou.ch("../nodeJustAboveClip/clipOrigin/x") error (unknown function in expression)
also tried with a spare parameter
I realize the clipOrigin is not a parameter on my nodeJustAboveClip SOP, but rather an attribute on its prim output. So 3-5 are likely just plain wrong.
Just in case Clip assumes it is running over points rather than prims, I also inserted a Attribute Promote SOP to copy the prim v@clipOrigin to each point.
With version 1 above, the result is the same - no error but always zero.
If you know how to do this, thank you in advance !
This is in Houdini 16.5 Indie
SOLVED: I was using the wrong syntax in the parameter expressions. You can pick up prim or detail attributes in SOP (not just Clip SOP) parameters like this:
prim(surface_node, prim_num, attrib_name, attrib_index)
detail(surface_node, attrib_name, attrib_index)
point(surface_node, point_number, attribute, index)
Note these are VEX expression functions used in parameter expression one-liners, not regular VEX functions used in wrangles. The signatures of the functions are slightly different.