cwisbg

Curve growing thing wrk

Feb 1st, 2019
460
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.21 KB | None | 0 0
  1. #Get closest point on crv
  2. # find  parent stroke end clip position/value
  3.  
  4. from pymel.core import *
  5. import maya.api.OpenMaya as om
  6. import random as r
  7. class OnCrvObj:
  8.     def __init__(self):
  9.         self.CrvObj = self
  10.         self.CrvPos = self.getTransform()
  11. def MakeMoPath(CrvObj):
  12.     cpCheck = ls("CrvPointMoPath")
  13.     if cpCheck:
  14.         delete(cpCheck)
  15.     cp = createNode("motionPath",n="CrvPointMoPath")
  16.     setAttr(cp+".fractionMode", 1)
  17.     CrvObj.worldSpace >> cp.geometryPath
  18.     lCheck = ls("ClosestPoint_lctr")
  19.     if lCheck:
  20.         delete(lCheck)
  21.     l = spaceLocator(n = "ClosestPoint_lctr")
  22.     cp.allCoordinates >> l.translate
  23.     #target.getShape().worldMatrix[0] >> cp.inputMatrix
  24.     #target.getShape().worldMesh[0] >> cp.inMesh    
  25.     return cp, l
  26. def getDist(p1,p2):
  27.     dist = defAttr.srt((p1[0] - p2[0])**2 + (p1[1] - p2[1])**2 + (p1[2] - p2[2])**2)
  28.     return dist  
  29.    
  30. sampleAmnt = 100
  31. xInc = 0.01
  32.  
  33. #sl = selected()
  34. objects = sl[:-1]
  35. Crv = sl[-1]
  36.  
  37. moPathNode, lctr = MakeMoPath(Crv)
  38. x = 0
  39. bestPos = 10000
  40. bestLoc = 0
  41. xSave = 0
  42. for i in range(0,sampleAmnt):
  43.     if x < 1:
  44.         setAttr(moPathNode+".uValue", x)
  45.     LctrPos = lctr.getTranslation()
  46.     PointOnPathPos = objects[0].getTranslation()
  47.     dist = getDist(LctrPos,PointOnPathPos)
  48.     if dist < bestPos:
  49.         bestPos =  dist
  50.         bestLoc = LctrPos
  51.         xSave = x
  52.     x += xInc
  53. #EndPos = spaceLocator(n = "Lctr_"+str(xSave))
  54. #move(EndPos, bestLoc)
  55.  
  56. CrvObjectStroke = listConnections(objects[0].worldSpace[0])
  57. CrvCrvStroke = listConnections(Crv.worldSpace[0])[1]
  58. GrowStuff = [CrvCrvStroke, CrvObjectStroke[0], str(xSave), str(0.05)]
  59.  
  60. GrowExpression = "if("+GrowStuff[0]+".maxClip>="+GrowStuff[2]+"){if("+GrowStuff[0]+".maxClip<1){"+GrowStuff[1]+".maxClip="+GrowStuff[0]+".maxClip-"+GrowStuff[2]+";}else{if("+GrowStuff[1]+".maxClip < 1)"+GrowStuff[1]+".maxClip += "+GrowStuff[3]+" ;}}else{"+GrowStuff[1]+".maxClip = 0 ;}"
  61. #ex = expression(CrvObjectStroke[0], uc="all",  td=1, s = GrowExpression, ae=1, n = CrvObjectStroke[0]+"_exp",an=1 )
  62. ex = expression(CrvObjectStroke[0], s = GrowExpression, n = CrvObjectStroke[0]+"_exp")
  63. expression(ex, e=1,s=GrowExpression,ae=1, uc="all")
  64. delete(moPathNode,lctr)
Advertisement
Add Comment
Please, Sign In to add comment