Hey guys I'm doing some tearing cloth simulations and I wan't to control how they tear over time. I'm using some attribute transfers + noise in SOPs to control a group which changes over time. This group, “pins”, should drive the group inside a Pin To Target constraint inside vellum. It seems that vellum only takes the group on the creation frame (frame 1) and never receives the animated group. Am I approaching this the wrong way? I'm no Houdini pro by any means so It may be possible I'm approaching this the wrong way? I understand how I can animate vellum constraints inside the dopnet's “forces” node using vellumconstraints, but animating the breaking threshold isn't going to give the same look as being able to actually animate the locations of these constraints.
here i make some nice animated attributes that convert to a group:
and then i use this custom “pins” group via Pin To Target:
and yay i get some animating constraint locations (i want to dive into the noise look here to get neat tearing patterns)
but when i run the simulation it only takes the group on the first frame. It'd be quite intuitive if your sops animations were able to be used but i'd love to know how i should recreate this in the vellum mindset.
The vellum constraint node is only run on the first frame. So it creates all the pin constraints on that first frame. The “Animated” flag adds an attribute that the target position to be updated, but will not re-create the pins. Thus it won't notice that the group has since changed. This might seem a pedantic separation when the group is “pins” as it seems trivial to re-evaluate membership in that group. But that generation group can be any arbitrary expression.
Since you created soft pins they exist as spheres on the Constraints geometry.
The easiest way to deactivate them is to set their stiffness to 0. You can do this in the vellumconstraintproperty DOP inside the forces tab.
The Animated Constraints help card example shows a setup reading in to a vellum constraints property. You could do similar with a vexpression of
Got it so your recommendation would be to set every point as a pin initially and then using an attribute just modify the stiffness via vellumConstraintProperty DOP. I'm animating some breaking values already in there so that sounds reasonable.
The original attribute I'm generating the group from is called “PinSelection” and its 0-1, does that mean I can do a vexpression like 1e10 * @PinSelection to essentially have pins add influence or not? Am I understanding how stiffness would work in this correctly?
In the vellumconstraintspropertiy it is bound to the Constraint primitives. Thus @PinSelection would read the primitive attribute on the constraint geometry, which likely isn't where you have your animated data.
This is why you likely want to use a point() expression to read from one of the other inputs, and set that input to the animated geometry. In particular,