Use a WALTER ROTATE.
in a primitive wrangle:
float randomFactor=rand(@primnum+2323)*chf("randomMult");
matrix3 rot = primintrinsic(0, "transform", @primnum);
vector4 orient = quaternion(rot);
vector x = normalize(qrotate(orient, {1,0,0}));
vector y = normalize(qrotate(orient, {0,1,0}));
rotate(rot, radians(chf("angle") * randomFactor), x);
rotate(rot, radians(chf("angley")), y);
setprimintrinsic(0, "transform", @primnum, rot);
//////////////////
what we are doing is:
- making a random factor to multiply the rotations, using primnum as a seed
- creating a matrix called "rot", and initialising it to the transform of the primitive
- create a vector called "orient", using the quarternion of the rot matrix
- create vectors x and y
- rotate the rot matrix using input angles for x and y
- then finally set the primitive intrinsic using the rot matrix