cwisbg

spider con

May 23rd, 2016
370
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.46 KB | None | 0 0
  1. #spider connect
  2. # rev .03
  3. from pymel.core import *
  4. import math
  5. import random as r
  6. import time
  7. start = time.clock()
  8.  
  9. DistanceAmount = 8
  10. toleranceAmnt = 3
  11. droop = .3
  12. noiseAmnt = .5
  13.  
  14.  
  15.  
  16. def grpr(name):
  17. g = ls(name)
  18. if not g:
  19. g = group(n=name,em=1)
  20. else:
  21. g = g[0]
  22. return g
  23. def grprk(name):
  24. g = ls(name)
  25. if g:
  26. delete(g)
  27. g = group(n=name,em=1)
  28. return g
  29. def getPiv(s):
  30. select(s)
  31. setToolTo('Move')
  32. piv = manipMoveContext('Move', q=True, p=True,m=2)
  33. return piv
  34. def getDist(s1,s2,s1t,s2t):
  35. dist = math.sqrt((s2t[0] - s1t[0])**2 + (s2t[1] - s1t[1])**2 + (s2t[2] - s1t[2])**2)
  36. return dist
  37. def wiggler(crv,amnt):
  38. i = 0
  39. x = 0
  40. l = len(crv[0].cv)-2
  41. for c in crv[0].cv:
  42. if x < 2:
  43. pass
  44. elif i == l:
  45. break
  46. else:
  47. rp = r.randint(0,1)
  48. if rp:
  49. rx = r.uniform(-amnt,amnt)
  50. ry = r.uniform(-amnt,amnt)
  51. rx = r.uniform(-amnt,amnt)
  52. move(c,rx,ry,rx, os=1,r=1)
  53. i += 1
  54. x +=1
  55.  
  56.  
  57. sl = selected()
  58. dlist = []
  59. crvGrp = grpr("crvGrp")
  60. jntGrp = grpr("jntGrp")
  61. doneList = []
  62.  
  63.  
  64.  
  65.  
  66. i=1
  67. x=0
  68. rl = 0
  69. sv = []
  70. ss = []
  71. select(cl=1)
  72. for s in sl:
  73. if i == len(sl):# stop at the end
  74. pass
  75. else:
  76. if rl:
  77. dc = sl[i],s
  78. else:
  79. dc = ss, s
  80. if dc in doneList:
  81. pass
  82. else:
  83. doneList.append(dc)
  84. for ss in sl:
  85. tt = 0
  86. if s != ss:
  87. if len(sl) <= 2:
  88. dist = DistanceAmount
  89. tt = 1
  90. else:
  91. s1t = getPiv(s)
  92. s2t = getPiv(ss)
  93. dist = getDist(s,ss,s1t,s2t)
  94. #print dist, DistanceAmount - toleranceAmnt,DistanceAmount + toleranceAmnt
  95. if dist > DistanceAmount - toleranceAmnt and dist < DistanceAmount + toleranceAmnt:
  96.  
  97. jnt = ls(s+"_crvJoint")
  98. if not jnt:
  99. print "creating jnt ", s+"_crvJoint"
  100. jnt = joint(n = s+"_crvJoint")
  101. jntPc = parentConstraint(s,jnt)
  102. parent(jnt,jntGrp)
  103. jnt2 = ls(ss+"_crvJoint")
  104. if not jnt2:
  105. print "creating jnt2 ", ss+"_crvJoint"
  106. jnt2 = joint(n = ss+"_crvJoint")
  107. jntPc = parentConstraint(ss,jnt2)
  108. parent(jnt2,jntGrp)
  109.  
  110.  
  111. if tt:# if only two things are selected
  112. s1t = getPiv(s)
  113. s2t = getPiv(ss)
  114. ddd = getDist(s,ss,s1t,s2t)
  115. crvName = str(s)+str(ss)+"_crv_"
  116. ccCheck = 0
  117. ccCheck2 = 0
  118. print "distance is ", ddd
  119. else:
  120. crvName = str(s)+str(ss)+"_crv"
  121. ccCheck = ls(str(s)+str(ss)+"_crv")
  122. ccCheck2 = ls(str(ss)+str(s)+"_crv")
  123. if ccCheck:
  124. pass
  125. elif ccCheck2:
  126. pass
  127.  
  128.  
  129. else:
  130. s1t = getPiv(s)
  131. s2t = getPiv(ss)
  132. cc = curve(p = [s1t,s2t],d=1, n = crvName)
  133. xform(cc,cp=1)# center pivot
  134. ccR = rebuildCurve(cc,ch=0,rpo=1,rt=0,end=1,kr=0, kcp=0,kep=1,kt=0,s=3,d=3,tol=0.01)
  135.  
  136. #droop
  137. doffx = r.uniform(-noiseAmnt,noiseAmnt)
  138. doffz = r.uniform(-noiseAmnt,noiseAmnt)
  139. dNoise = r.uniform(-noiseAmnt,noiseAmnt)# droop noise
  140. cvList1 = 1,2,3,4
  141. cvList2 = 4,3,2,1
  142. cvList = []
  143. if s1t[1] > s2t[1]:
  144. cvList = cvList1
  145. else:
  146. cvList = cvList2
  147. print dNoise,doffx,doffz
  148. move(ccR[0].cv[cvList[0]], doffx, -droop+droop/2+dNoise, doffz,r=1,os=1)
  149. move(ccR[0].cv[cvList[1]], doffx, -droop, doffz,r=1,os=1)
  150. move(ccR[0].cv[cvList[2]], doffx, -droop, doffz,r=1,os=1)
  151. move(ccR[0].cv[cvList[3]], doffx, -droop+droop/2+dNoise, doffz,r=1,os=1)
  152.  
  153. if jnt and jnt2:
  154. crvBind = skinCluster(ccR[0],jnt,jnt2)
  155. wiggler(ccR,noiseAmnt)
  156.  
  157. parent(cc,crvGrp)
  158.  
  159.  
  160.  
  161.  
  162. rl=1
  163. i+=1
  164. select(sl)
  165. elapsedChunk = (time.clock() - start)
  166. print "done, took:", elapsedChunk
Add Comment
Please, Sign In to add comment