ゴール(Goal)とはパーティクルが目標とするオブジェクトのことです。
ゴールを設定することによって、
パーティクルと目標の物体の間にスプリングがついているかのようなアニメーションを作成することができます。
カーブオンサーフェイスを除くすべてのオブジェクトをゴールにすることができ 、
ひとつのパーティクルに対してゴールを複数対応させることもできます。
文字を NURBS カーブで作成し、そのカーブから作られた planarSerface にゴールを設定してみましょう。
import maya.cmds
def makeString1():
text = maya.cmds.textCurves(f='Times-Roman', t='Maya')
chars = maya.cmds.listRelatives(text[0])
psurf = []
for curv in chars:
pln = maya.cmds.planarSrf(curv, polygon=1)
psurf.append(pln[0])
maya.cmds.setAttr((pln[0] + '.v'), 0)
for ps in psurf:
ename = maya.cmds.emitter(pos=(1.5, 10.0, 1.5), type='direction', dx=0.0, dy=-1.0, dz=0.0, spread=0.2)
pname = maya.cmds.particle()
maya.cmds.setAttr((pname[0] + '.particleRenderType'), 4)
shp = maya.cmds.listRelatives(pname, s=True)
maya.cmds.addAttr(shp[0], ln='radius', at='float')
maya.cmds.setAttr((shp[0] + '.radius'), 0.05)
maya.cmds.connectDynamic(pname[0], emitters=ename[0])
maya.cmds.goal(pname[0], goal=ps, weight=0.2)
maya.cmds.setAttr((pname[0] + '.conserve'), 0.9)
import maya.cmds
def makeString1():
text = maya.cmds.textCurves(f='Times-Roman', t='Maya')
chars = maya.cmds.listRelatives(text[0])
psurf = []
for curv in chars:
pln = maya.cmds.planarSrf(curv, polygon=1)
psurf.append(pln[0])
maya.cmds.setAttr((pln[0] + '.v'), 0)
for ps in psurf:
ename = maya.cmds.emitter(pos=(1.5, 10.0, 1.5), type='direction', dx=0.0, dy=-1.0, dz=0.0, spread=0.2)
pname = maya.cmds.particle()
maya.cmds.setAttr((pname[0] + '.particleRenderType'), 4)
shp = maya.cmds.listRelatives(pname, s=True)
maya.cmds.addAttr(shp[0], ln='radius', at='float')
maya.cmds.setAttr((shp[0] + '.radius'), 0.05)
maya.cmds.connectDynamic(pname[0], emitters=ename[0])
maya.cmds.goal(pname[0], goal=ps, weight=0.2)
maya.cmds.setAttr((pname[0] + '.conserve'), 0.9)
Maya で使用できるフォントのリストを表示するには、 以下のコマンドを実行します。