パーティクルを自動的に発生させるためには maya.cmds.emitter() 関数を使用します。
emitter() 関数によって点・面などから発生させたパーティクルのアトリビュートを、
キーフレームやエクスプレッションによって変化させてアニメーションさせることができます。
また、個々のパーティクルにおける色などのアトリビュートをアニメーションさせたい場合は、
maya.cmds.dynExpression() を使用します。
以下の Python 関数をスクリプトエディタに打ち込んで実行すると 3 つのパーティクルが作られ、その 3 つのパーティクルからエミッターによって全方向(omni)にパーティクルが発生します。
import maya.cmds
maya.cmds.particle(p=((1, 0, 0), (0, 1, 0), (0, 0, 1)))
name = maya.cmds.emitter(rate=10, minDistance=1.5, maxDistance=2.5)
maya.cmds.particle()
maya.cmds.connectDynamic(emitters=name[0])
import maya.cmds
maya.cmds.particle(p=((1, 0, 0), (0, 1, 0), (0, 0, 1)))
name = maya.cmds.emitter(rate=10, minDistance=1.5, maxDistance=2.5)
maya.cmds.particle()
maya.cmds.connectDynamic(emitters=name[0])
以下は、球体の表面からパーティクルを発生させて(type "surface")、 パーティクルと球をエクスプレッションで回転させるスクリプトです。
import maya.cmds
def makeEmitter1():
name = maya.cmds.sphere()
maya.cmds.scale(5, 5, 5)
maya.cmds.expression(object=name[0], string='ry = 30 * time')
ename = maya.cmds.emitter(name[0], type='surface', normalSpeed=1.0, tangentSpeed=0.0, rate=1)
pname = maya.cmds.particle()
maya.cmds.expression(object=pname[0], string='ry = 30 * time')
maya.cmds.connectDynamic(pname[0], emitters=ename)
import maya.cmds
def makeEmitter1():
name = maya.cmds.sphere()
maya.cmds.scale(5, 5, 5)
maya.cmds.expression(object=name[0], string='ry = 30 * time')
ename = maya.cmds.emitter(name[0], type='surface', normalSpeed=1.0, tangentSpeed=0.0, rate=1)
normalSpeed=1.0
tangentSpeed=0.0
rate=1
pname = maya.cmds.particle()
maya.cmds.expression(object=pname[0], string='ry = 30 * time')
maya.cmds.connectDynamic(pname[0], emitters=ename)