Advertisement
Guest User

Untitled

a guest
Oct 16th, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Rubberhose
  2.  
  3.  
  4. /////////////////////////////////////////////////////
  5. //WRIST & SHOULDER CONTROLLERS ROTATION /////////////
  6. /////////////////////////////////////////////////////
  7.  
  8. function parentTotal() {
  9.     var parentVal = 0;
  10.     var layerChain = "thisLayer";
  11.     while (eval(layerChain).hasParent) {
  12.         layerChain += ".parent";
  13.         parentVal += eval(layerChain).rotation;}
  14.     return parentVal;
  15. }
  16.  
  17. try {
  18.     var eff = thisLayer(4)("RubberHose 2");
  19.     var autoRotate = eff("Auto Rotate End");
  20.     if (autoRotate == 1) {
  21.         var a = thisComp.layer(thisLayer(2)("Admin")(2)("A")(2)(1).name).toComp([0,0,0]);
  22.         var b = thisComp.layer(thisLayer(2)("Admin")(2)("B")(2)(1).name).toComp([0,0,0]);
  23.         var s = length(a,b);
  24.         var sFac = eff("Parent Scale");
  25.         var realism = eff("Realism");
  26.         var bendDir = eff("Bend Direction") / 100;
  27.         var hoseLength = eff("Hose Length") / 2;
  28.         var bendRad = eff("Bend Radius");
  29.         var autoFlop = eff("AutoFlop");
  30.         var baseRot = 180-radiansToDegrees(Math.atan2(b[0]-a[0], b[1]-a[1]));
  31.         var outerRad = Math.sin(0.78539816339)*s;
  32.         var straight = (1.4142135623731 * outerRad) / 2;
  33.         straight /= Math.max(Math.abs(sFac), 0.001);
  34.         var roundShrink = linear(Math.abs(bendRad), 0, 100, 1, 0.87);
  35.         var innerRad;
  36.  
  37.         if (hoseLength > straight) {
  38.             innerRad = straight + Math.sqrt( Math.pow(hoseLength, 2) - Math.pow(straight, 2) ) * roundShrink;
  39.             innerRad = linear(realism, 0, 100, hoseLength, innerRad);
  40.             innerRad = linear(Math.abs(bendDir), straight, innerRad);
  41.         } else {
  42.             innerRad = straight;}
  43.  
  44.         innerRad = linear(Math.abs(autoFlop), straight, innerRad);
  45.         var flopDir = 1;
  46.         if (bendDir < 0) { flopDir = -1; }
  47.         flopDir *= autoFlop;
  48.         var opp = (innerRad - straight) * flopDir;
  49.         var theta = Math.atan(opp/Math.max(straight, 0.001));
  50.         var bendAngle = radiansToDegrees(theta);
  51.         if (sFac < 0) { baseRot *= -1; }
  52.         bendRad *= (theta / -Math.PI) / linear(s, hoseLength, 0, 2, 0.9);
  53.         var parentRot = (hasParent) ? parentTotal() : 0;
  54.         var rotCalc = (baseRot + bendAngle - bendRad) - parentRot;
  55.         rotCalc + value; }
  56.     else {value;}
  57. }catch(e){value;}
  58.  
  59.  
  60. /////////////////////////////////////////////////////
  61. //HOSE SCALE ////////////////////////////////////////
  62. /////////////////////////////////////////////////////
  63.  
  64. function parentTotal() {
  65.     var sFactor = [1,1];
  66.     var scaleNorm = [0,0];
  67.     var layerChain = "thisLayer";
  68.     while (eval(layerChain).hasParent) {
  69.         layerChain += ".parent";
  70.         scaleNorm = eval(layerChain).scale;
  71.         if (scaleNorm[0] != 0 && scaleNorm[1] != 0) {
  72.             scaleNorm = [100/scaleNorm[0], 100/scaleNorm[1]];
  73.         }
  74.         sFactor = [sFactor[0]*scaleNorm[0], sFactor[1]*scaleNorm[1]];
  75.     }
  76.     return sFactor;
  77. }
  78.  
  79. var s = [100,100];
  80. if (hasParent) {
  81.     var sFactor = parentTotal();
  82.     s = [s[0] * sFactor[0], s[1] * sFactor[1]];
  83. }
  84.  
  85. s;
  86.  
  87. /////////////////////////////////////////////////////
  88. //HOSE ROTATION /////////////////////////////////////
  89. /////////////////////////////////////////////////////
  90.  
  91. function parentTotal() {
  92.     var parentVal = 0;
  93.     var layerChain = "thisLayer";
  94.     while (eval(layerChain).hasParent) {
  95.         layerChain += ".parent";
  96.         parentVal += eval(layerChain).rotation;
  97.     }
  98.     return parentVal;
  99. }
  100.  
  101. var r = 0;
  102. if (thisLayer.hasParent) {
  103.     r = -parentTotal();
  104. }
  105.  
  106. r;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement