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