def SpiralOfPointsStraight(initRadius, endRadius, numberOfPoints, startPoint, endPoint): RigTools = RMRigTools.RMRigTools() ShapeCntrl = RMRigShapeControls.RMRigShapeControls() distancia = RMRigTools.RMPointDistance(startPoint,endPoint) minLength = math.sin(math.pi / (numberOfPoints + 1)) * initRadius #initRadiusdistancia/numberOfPoints/10 print "minLength:%s" % minLength if minLength * numberOfPoints < distancia: #Locators = RigTools.RMCreateNLocatorsBetweenObjects( startPoint, endPoint, numberOfPoints ) Locators = RigTools.RMCreateBiasedLocatorsBetweenObjects( startPoint, endPoint , numberOfPoints, minLength) Locators.insert(0,startPoint) Locators.insert(len(Locators),endPoint) parentJoint, jointArray = RigTools.RMCreateBonesAtPoints( Locators ) resetPnt, control = ShapeCntrl.RMCircularControl(startPoint,radius = initRadius) cmds.addAttr (control, longName = "unfold", keyable = True, hasMinValue = True, hasMaxValue = True, maxValue = 10,minValue = -10) unfoldStep = 10.0 / float(numberOfPoints+1) currentStep = 10.0 index = 0 deltaRadius = (initRadius - endRadius) / numberOfPoints currentRadius = initRadius #jointArray.reverse() angle=20 for joints in jointArray[:-1]: #angle = 180 - SegmentAngleInCircle(currentRadius, RMRigTools.lenght_of_bone(joints) ) if index > 0: angle = getAngle (currentRadius ,joints,jointArray[index-1]) else: angle = getAngle (currentRadius ,joints,None) #angle = SpiralFunction (index, numberOfPoints, initRadius, endRadius, distancia) #angle = SpiralFunctionBiasedPoints (index, numberOfPoints, initRadius, endRadius, distancia, minLength) RMRigTools.connectWithLimits ( control + ".unfold", joints + ".rotateY", [[-currentStep, angle], [-(currentStep-unfoldStep), 0], [currentStep-unfoldStep, 0], [currentStep, -angle]]) currentStep = currentStep - unfoldStep print currentRadius currentRadius = currentRadius - deltaRadius index+=1
def __init__(self, NameConv=None): if NameConv: self.NameConv = NameConv else: self.NameConv = nameConvention.NameConvention() RigTools = RMRigTools.RMRigTools(self.NameConv)