some mark fancher youtube vex tidbits-
//in a rig attrib wrangle, to rotate joints - take into account parenting!-
vector axis={1,0,0};
prerotate(4@localtransform, chf("angle"),axis);
-----------------------------------------------------------------------------------------
//in a rig attrib wrangle,to scale joints - take into account parenting-
prescale(4@localtransform, chf("scale"));
--------------------------------------------------------------------------------------------------------
//point wrangle, after a distance along geometry - nice rampable normalised mask
float map=f@map;
float p=chf("position");
float t=chf("transition");
t=max(t,0.0001); //clamps down value
p=fit01(p,-t,1); //makes mask zero when t at low values and p at zero
float mask=fit(map,p,p+t,1,0);
mask=chramp("ramp",mask);
f@mask=mask;
--------------------------------------------------------------------------------------------
how to store activation frame based on a threshold of something
in a point wrangle
if(@value>chf("threshold")){
i@group_active=1;
}
inside a solver...connect prev_frame to input 2 and input 1 to 1 of a point wrangle..
int prev_active=inpointgroup(1,"active",@ptnum); //check if previous frame was active
//if group active and NOT previously active then give active_frame value of current frame
if(i@group_active==1 && prev_active==0){
f@active_frame=@Frame;
}
float activationFramePrevious=point(1,"active_frame",@ptnum);
f@active_frame=max(activationFramePrevious, @active_frame);
simple spring solver - prev frame into input 1, input 1 into 2nd input of wrangle
based on F=-kx -bv
where F is force, k is the spring coefficient (stiffness), x is the distance, b is the damping and v is velocity. We also use F=ma to calculate acceleration (and use that for velocity, which ultimately gets added to Position)
float m=chf("mass");
float k=chf("stiffness");//stiffness coefficient
float b=chf("damping");//damping coefficient
vector p2=point(1,"P",@ptnum);//position of point on "current" frame
vector x=@P-p2; //distance between previous and current
vector f=-k*x -b*v@_v;//calculate force using damped harmonic motion equation
vector a =f/m; //get acceleration from f=ma to then find...
v@_v+=a;//velocity
v@P+=v@_v;//new position is calculated by adding velocity vector to current pos