import maya.cmds as mc import math from pymel.core import * #CODE CREATES PAINTS MESH VERTEX COLORS OF A MESH BASED ON DISTANCE DEFORMATION TO THE DRIVER MESH #CREATES KEYFRAMES AND ANIMATION OF BOTH THE NCLOTH SHAPE AND THE MESH VERTEX COLORS. #WRITTEN BY LUIS QUINONES #COMPLICITMATTER.COM // COMPUTATIONALMATTER.COM #///////////////////////////////////////////////////////////////////////////////////////////////////// #get the timeslider startFrame startFrame = mc.playbackOptions(q = True, minTime = True) #get the timeslider endFrame endFrame = mc.playbackOptions(q = True, maxTime = True) #set the current frame to the start frame currentFrame = startFrame #///////////////////////////////////////////////////////////////////////////////////////////////////// #BaseGeom Selection Meshes = mc.ls(sl=True, long=True) #Get Vertex Count as INT verts = mc.polyEvaluate(Meshes[0],v=True) prevLoc = [] for x in range(verts): prevLoc.append(mc.pointPosition(Meshes[0]+'.vtx[{x}]'.format(x=x))) count = 1 count2 = 2 #mc.setKeyframe('pPlane1', v = 1, at = "visibility") while(currentFrame < endFrame): if currentFrame == startFrame: print 'plane 1 hidden' mc.setKeyframe('pPlane1', v = 0, at = "visibility") mc.setKeyframe('Base', v = 0, at = "visibility") #print "the Frame is currently at %d" % currentFrame unSel = mc.select(cl=True) sel = mc.select('pPlane1',r=True) Meshes2 = mc.ls(sl=True, long=True) verts3 = mc.polyEvaluate(Meshes2,v=True) arrVertLoc = [] for i in range(verts3): arrVertLoc.append(mc.pointPosition(Meshes2[0]+'.vtx[{i}]'.format(i=i))) dist = ( (prevLoc[i][0]-arrVertLoc[i][0])**2 + (prevLoc[i][1]-arrVertLoc[i][1])**2 + (prevLoc[i][2]-arrVertLoc[i][2])**2 )**0.5 print dist color = mc.polyColorPerVertex(Meshes2[0]+'.vtx[{i}]'.format(i=i), rgb=(0,0,1)) if dist < 0.3: print "Ziiiiing" R = 0 R = 0 R = 0 elif dist >= 0.3: R = dist + .75 #print 'R = %f' % R G = 1/dist * 0.5 #print 'G = %f' % G B = 0 #print 'R %f ' % R #print 'G %f ' % G #print 'B %f ' % B color = mc.polyColorPerVertex(Meshes2[0]+'.vtx[{i}]'.format(i=i), rgb=(R,G,B)) #color = mc.polyColorPerVertex(Meshes2[0]+'.vtx[{i}]'.format(i=i), rgb=(arrVertColor,arrVertColor,arrVertColor)) nnewMesh = mc.duplicate( Meshes2[0], ic=False) mc.constructionHistory( Meshes2[0], tgl = False) #mc.setAttr('pPlane %d'%count+".visibility", 1) mc.setKeyframe('pPlane %d'%count2, v = 0, at = "visibility") if currentFrame == endFrame: mc.setKeyframe('pPlane1', v = 1, at = "visibility") mc.currentTime(currentFrame) currentFrame += 1 mc.setKeyframe('pPlane %d'%count2, v = 1, at = "visibility") if currentFrame != startFrame: mc.setKeyframe('pPlane %d'%count, v = 0, at = "visibility") count += 1 count2 += 1 Update