コンストレインとはリジッドボディの運動を制限するものです。
これによって振り子、蝶番(ちょうつがい)など、
空間中の点や他のリジッドボディに動きを拘束されたアニメーションを作成することができます。
オブジェクトにコンストレインを設定すると、
そのオブジェクトは自動的にリジッドボディになります。
コンストレインは maya.cmds.constrain() 関数によって作られます。
各コンストレンは作成した後、 オブジェクトやコンストレインを移動すると コンストレンの長さや位置を変化させることができます。
ヒンジ(Hinge) コンストレインを使用してニュートンの振り子を作ってみましょう。
ネイル(Nail) コンストレインでも作成できますが、
動きの方向がずれるので、うまくいきません。
import maya.cmds
def makeFuriko1():
gname = maya.cmds.gravity(pos=(0, 0, 0), magnitude=9.8)
for i in range(0, 3):
sname = maya.cmds.sphere()
x = 2.03 * i
maya.cmds.move(x, 0, 0)
if i is 0:
maya.cmds.move(0, 5, 0, (sname[0] + '.rotatePivot'))
maya.cmds.rotate(0, 0, -80)
maya.cmds.rigidBody(active=True, mass=0.5, bounciness=1.0)
maya.cmds.constrain(hinge=True, p=(x, 5, 0))
maya.cmds.connectDynamic(sname[0], f=gname[0])
import maya.cmds
def makeFuriko1():
gname = maya.cmds.gravity(pos=(0, 0, 0), magnitude=9.8)
for i in range(0, 3):
sname = maya.cmds.sphere()
x = 2.03 * i
maya.cmds.move(x, 0, 0)
if i is 0:
maya.cmds.move(0, 5, 0, (sname[0] + '.rotatePivot'))
maya.cmds.rotate(0, 0, -80)
maya.cmds.rigidBody(active=True, mass=0.5, bounciness=1.0)
maya.cmds.constrain(hinge=True, p=(x, 5, 0))
maya.cmds.connectDynamic(sname[0], f=gname[0])