MotionBuilderのコンストレントは、
Mayaで用意された仕組みと似たものはあるのですが、
任意でリグを組む…というのが少し苦手です。
▼用意されているコンストレイント
Maya | MotionBuilder |
---|---|
Orient | Rotation |
Point | Position |
Scale | Scale |
例えば、
[移動] ⇒ [スケール]
[スケール] ⇒ [回転]
といった単純なものです。
そこで、Mayaでいうノードを繋げて入出力の仕組みを作っていくのが
Relationコンストレイントになります。
上記の画像はAssetBrowserに入っている
・Cylinder
・SkeletonRoot
を配置しただけのもになります。
AssetBrowser⇒Templates⇒Constraints の中に
Relationがあるので、それをViewerにドロップすると
Navigatorに新しいRelationコンストレイントが作られます。
(renameして、「Relation_TransToScale」にしました。)
先ほどのSkeletonRootを入力にしたいので、
「Sender」として投げ込みます。
Cylinderは出力先のReciverにします。
今回作りたいコンストレイントは、
[X軸に移動]⇒[X軸にスケール]
になります。
なので、次にMayaでいうノード選びが始まります。ノードの正式名は「Relation オペレータ」です。
SkeletonRootのTranslationには、[0, 0, 40]
CylinderのScaleは、[1, 1, 1]
と3つの数値型・・・Vector型で数値が入っています。
今回は1つの数値・・・Number型を使ってX軸の数値だけ欲しいので、
「ScaleAndOffset(Number)」を選びます。
- ClampMax[Number] :最大値
- ClampMin[Number] :最小値
- Offset[Number] :オフセット値、基準の値を設定
- ScaleFactor[Number] :かけたい倍率
- X[Number] :入力する数値
という構成になっています。
画像では、VectorToNumberやNumberToVectorが接続の間に挟まっていますが、
変換のために自動で作られています。
Offsetには初期値である「1.00」を右クリックでSetValueして、
ScaleFactorには移動値に「0.1」倍させるための値をSetValueしています。
あとは、0.1倍した数値をCylinderのScalingに接続して、
変換用に自動で作られたNumberToVectorのYとZに「1.0」をSetValueすれば、
[X軸に移動]⇒[X軸にスケール] のコンストレント完成です。
もしこんな風にあったはずのCylinderが消えていたら、
Scaleに「0」が設定されて見えなくなっています。
入力から出力まですべて繋いだ後だと、
ShowValueでどういった数値を送っているか把握しながらコンストレイントを作ることができます。
[余談]
今回、ScaleAndOffsetのオペレータしか使いませんでしたが、
AND・OR回路、IFの大なり小なり、加減乗除、三角関数なども用意されています。
MayaでMatrix型を使っていたとしても、
結局の中身は、XYZのVector型とTranslationに分解できるので、
そこを理解していればMotionBuilderのRelationコンストレイントも理論上作れるはず・・・!