Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Rubberhose
- /////////////////////////////////////////////////////
- //WRIST & SHOULDER CONTROLLERS ROTATION /////////////
- /////////////////////////////////////////////////////
- function parentTotal() {
- var parentVal = 0;
- var layerChain = "thisLayer";
- while (eval(layerChain).hasParent) {
- layerChain += ".parent";
- parentVal += eval(layerChain).rotation;}
- return parentVal;
- }
- try {
- var eff = thisLayer(4)("RubberHose 2");
- var autoRotate = eff("Auto Rotate End");
- if (autoRotate == 1) {
- var a = thisComp.layer(thisLayer(2)("Admin")(2)("A")(2)(1).name).toComp([0,0,0]);
- var b = thisComp.layer(thisLayer(2)("Admin")(2)("B")(2)(1).name).toComp([0,0,0]);
- var s = length(a,b);
- var sFac = eff("Parent Scale");
- var realism = eff("Realism");
- var bendDir = eff("Bend Direction") / 100;
- var hoseLength = eff("Hose Length") / 2;
- var bendRad = eff("Bend Radius");
- var autoFlop = eff("AutoFlop");
- var baseRot = 180-radiansToDegrees(Math.atan2(b[0]-a[0], b[1]-a[1]));
- var outerRad = Math.sin(0.78539816339)*s;
- var straight = (1.4142135623731 * outerRad) / 2;
- straight /= Math.max(Math.abs(sFac), 0.001);
- var roundShrink = linear(Math.abs(bendRad), 0, 100, 1, 0.87);
- var innerRad;
- if (hoseLength > straight) {
- innerRad = straight + Math.sqrt( Math.pow(hoseLength, 2) - Math.pow(straight, 2) ) * roundShrink;
- innerRad = linear(realism, 0, 100, hoseLength, innerRad);
- innerRad = linear(Math.abs(bendDir), straight, innerRad);
- } else {
- innerRad = straight;}
- innerRad = linear(Math.abs(autoFlop), straight, innerRad);
- var flopDir = 1;
- if (bendDir < 0) { flopDir = -1; }
- flopDir *= autoFlop;
- var opp = (innerRad - straight) * flopDir;
- var theta = Math.atan(opp/Math.max(straight, 0.001));
- var bendAngle = radiansToDegrees(theta);
- if (sFac < 0) { baseRot *= -1; }
- bendRad *= (theta / -Math.PI) / linear(s, hoseLength, 0, 2, 0.9);
- var parentRot = (hasParent) ? parentTotal() : 0;
- var rotCalc = (baseRot + bendAngle - bendRad) - parentRot;
- rotCalc + value; }
- else {value;}
- }catch(e){value;}
- /////////////////////////////////////////////////////
- //HOSE SCALE ////////////////////////////////////////
- /////////////////////////////////////////////////////
- function parentTotal() {
- var sFactor = [1,1];
- var scaleNorm = [0,0];
- var layerChain = "thisLayer";
- while (eval(layerChain).hasParent) {
- layerChain += ".parent";
- scaleNorm = eval(layerChain).scale;
- if (scaleNorm[0] != 0 && scaleNorm[1] != 0) {
- scaleNorm = [100/scaleNorm[0], 100/scaleNorm[1]];
- }
- sFactor = [sFactor[0]*scaleNorm[0], sFactor[1]*scaleNorm[1]];
- }
- return sFactor;
- }
- var s = [100,100];
- if (hasParent) {
- var sFactor = parentTotal();
- s = [s[0] * sFactor[0], s[1] * sFactor[1]];
- }
- s;
- /////////////////////////////////////////////////////
- //HOSE ROTATION /////////////////////////////////////
- /////////////////////////////////////////////////////
- function parentTotal() {
- var parentVal = 0;
- var layerChain = "thisLayer";
- while (eval(layerChain).hasParent) {
- layerChain += ".parent";
- parentVal += eval(layerChain).rotation;
- }
- return parentVal;
- }
- var r = 0;
- if (thisLayer.hasParent) {
- r = -parentTotal();
- }
- r;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement