importmaya.cmdsascmdsimportmaya.melasmelimportmathtarget='mySphere'# cmds.delete(target) # cmds.polyPlane(n=target)# cmds.polySphere(n=target, sx=4, sy=4, r=5)cmds.select(target)vertCount=cmds.polyEvaluate(v=True)foriinrange(vertCount):vPos=cmds.xform(target+".pnts["+str(i)+"]",query=True,translation=True,worldSpace=True)# select vertcmds.select(target+".pnts["+str(i)+"]")# returns list of XYZ normalsvNormals=cmds.polyNormalPerVertex(query=True,xyz=True)cmds.select()cnt=len(vNormals)numNormals=cnt/3X=0Y=0Z=0forninrange(0,cnt,3):X+=vNormals[n]Y+=vNormals[n+1]Z+=vNormals[n+2]X/=numNormalsY/=numNormalsZ/=numNormals# normalize vectorstr_cmd='unit <<{}, {}, {}>>'.format(X,Y,Z)vec=list(mel.eval(str_cmd))# calculate the rotationsxyLength=math.sqrt(vec[0]*vec[0]+vec[1]*vec[1])vecLength=math.sqrt(vec[0]*vec[0]+vec[1]*vec[1]+vec[2]*vec[2])xAngle=0zAngle=0# radians: converts degrees to radians # degrees: converts radians to degrees# xyLength will be zero when $vec is pointing along the +z or -z axisif(xyLength==0):zAngle=math.radians(90)if(vec[0]>0)elsemath.radians(-90)else:zAngle=math.acos((vec[1])/vecLength)xAngle=math.acos(xyLength/vecLength)xAngle=xAngleif(vec[2]>0)else-xAnglezAngle=-zAngleif(vec[0]>0)elsezAnglexRot=math.degrees(xAngle)zRot=math.degrees(zAngle)cmds.polyCone(r=.5,sx=1,sy=1,sz=3)cmds.rotate(xRot,x=True,r=True)#-r $a[0] 0 0;cmds.rotate(zRot,z=True,r=True)# -r 0 0 $a[1];cmds.xform(t=vPos)cmds.select(clear=True)print'test'
Comments (0)
HTTPSSSH
You can clone a snippet to your computer for local editing.
Learn more.