Houdini - Constraints and anchor_id - Part 2
See Part 1 here.
99% of the time, when you setup constraint points that are close to/on the surface of a geometry, you don’t actually need i@anchor_id
.
[left] We have a constraint network with points that only have @name
declared. The points on her body have @name = "thing"
, the ones on top @name = ""
.
[right] The constraint network that gets built inside DOPs is as expected, everything just works.
Packed Primitives and anchor_id
So far, we’ve been importing the girl into DOPs as an RBD Object. What happens if we Pack her and import her as an RBD Packed Object?
[Above] We pack her – which turns the whole thing to a single point and a single primitive – and in the Wrangle set the only point @name = "thing"
.
The obvious problem then becomes: how do we refer to points on packed primitives, since technically, they have only one point?
If we keep everything the same, e.g. the constraint points have @name
which match the single packed primitive’s @name
– the Constraint Network looks correct but actually doesn’t work.
The points aren’t actually “sticking” to her.
From Houdini’s docs:
So all we have to do is set i@anchor_id
of the constraint points to -1
.
[Above] The final constraint network. i@anchor_id
(pink), s@name
(cyan). Since the “top” points have an empty name, their i@anchor_id
can actually be anything. We use -1
for clarity.