import maya.cmds as cmds
import maya.mel as mel
import math
def dist(a,b):
return math.sqrt(math.pow(a[0]-b[0],2)+math.pow(a[1]-b[1],2)+math.pow(a[2]-b[2],2))
for i in range (1,50):
cmds.currentTime(i)
a=cmds.nParticle('nParticle1',id=0,q=1,attribute='position')
b=cmds.nParticle('nParticle2',id=0,q=1,attribute='position')
if dist(a,b)<1:
cmds.select('nParticle1.pt[0]',tgl=True)
cmds.select('nParticle2.pt[0]',tgl=True)
mel.eval('createNConstraint pointTopoint 0;')
break
上面的代码在制作了两个nParticle(每个都有一个粒子)之后执行,并将力场生成设置为负值,以便它们吸引。
问题是,我想在它们非常接近时创建一个动态约束。但是,在我进入第1帧之前,maya不会对此进行评估。我需要在不进入第1帧的情况下评估结果并继续到最后一帧。