Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #spider connect Crv
- # rev 01
- from pymel.core import *
- import math
- import random as r
- import time
- start = time.clock()
- def grpr(name):
- g = ls(name)
- if not g:
- g = group(n=name,em=1)
- else:
- g = g[0]
- return g
- def grprk(name):
- g = ls(name)
- if g:
- delete(g)
- g = group(n=name,em=1)
- return g
- def getPiv(s):
- select(s)
- setToolTo('Move')
- piv = manipMoveContext('Move', q=True, p=True,m=2)
- return piv
- def getDist(s1,s2,s1t,s2t):
- dist = math.sqrt((s2t[0] - s1t[0])**2 + (s2t[1] - s1t[1])**2 + (s2t[2] - s1t[2])**2)
- return dist
- sl = selected()
- dlist = []
- crvGrp = grpr("crvGrp_lv2")
- clusterGrp = grpr("cluster_grp")
- doneList = []
- DistanceAmount = 1
- toleranceAmnt = .1
- droop = 1
- i=1
- x=0
- rl = 0
- sv = []
- ss = []
- select(cl=1)
- for s in sl:
- xform(s,cp=1)
- if i == len(sl):# stop at the end
- pass
- else:
- if rl:
- dc = sl[i],s
- else:
- dc = ss, s
- if dc in doneList:
- pass
- else:
- doneList.append(dc)
- for ss in sl:
- tt = 0
- if s != ss:
- if len(sl) <= 2:
- dist = DistanceAmount
- tt = 1
- else:
- s1t = getPiv(s)
- s2t = getPiv(ss)
- dist = getDist(s,ss,s1t,s2t)
- #print dist, DistanceAmount - toleranceAmnt,DistanceAmount + toleranceAmnt
- if dist > DistanceAmount - toleranceAmnt and dist < DistanceAmount + toleranceAmnt:
- if tt:
- s1t = getPiv(s)
- s2t = getPiv(ss)
- ddd = getDist(s,ss,s1t,s2t)
- print "distance is ", ddd
- crvName = str(s)+str(ss)+"_crv_"
- ccCheck = 0
- ccCheck2 = 0
- else:
- crvName = str(s)+str(ss)+"_crv"
- ccCheck = ls(str(s)+str(ss)+"_crv")
- ccCheck2 = ls(str(ss)+str(s)+"_crv")
- if ccCheck:
- pass
- elif ccCheck2:
- pass
- else:
- """
- rcv1 = r.randint(2,len(s.cv)-2)
- rcv2 = r.randint(2,len(ss.cv)-2)
- s1t = getPiv(s.cv[rcv1])
- s2t = getPiv(ss.cv[rcv2])
- """
- s1t = [0,1,0]
- s2t = [1,0,1]
- cc = curve(p = [s1t,s2t],d=1, n = crvName)
- ccR = rebuildCurve(cc,ch=1,rpo=1,rt=0,end=1,kr=0, kcp=0,kep=1,kt=0,s=3,d=3,tol=0.01)
- """
- crvCluster = cluster(cc.cv[0], n = "{0}_cluster2".format("test"))
- crvCluster2 = cluster(cc.cv[1], n = "{0}_cluster1".format("test1"))
- parent(crvCluster[1], clusterGrp)
- parent(crvCluster2[1], clusterGrp)
- rpc = r.uniform(.1,.9)
- rpc1 = r.uniform(.1,.9)
- attachToCrv = pathAnimation(crvCluster[1],fm=1, su = rpc, c = s)
- attachToCrv1 = pathAnimation(crvCluster2[1],fm=1,su = rpc1, c = ss)
- poMarker = listConnections(attachToCrv+".positionMarkerTime[0]")
- poMarker1 = listConnections(attachToCrv1+".positionMarkerTime[0]")
- ccR = rebuildCurve(cc,ch=1,rpo=1,rt=0,end=1,kr=0, kcp=0,kep=1,kt=0,s=10,d=3,tol=0.01)
- setAttr(poMarker[0]+".visibility",0)
- setAttr(poMarker1[0]+".visibility",0)
- setAttr(crvCluster[1]+".visibility",0)
- setAttr(crvCluster2[1]+".visibility",0)
- setAttr(attachToCrv+".uValue", rpc)
- setAttr(attachToCrv1+".uValue", rpc1)
- """
- parent(ccR[0],crvGrp)
- xform(ccR,cp=1)
- rl=1
- i+=1
- select(sl)
- elapsedChunk = (time.clock() - start)
- print "done, took:", elapsedChunk
Advertisement
Add Comment
Please, Sign In to add comment