リギングの基本【ジョイント:01】
今回は意外と浸透していないジョイント軸の合わせ方について書かせていただきます。
簡単に、ジョイントの軸の基礎
左から
Aim Axis:x, Aim Axis:y, Aim Axis:z
と呼ばれることが多いです。
親ジョイントは子ジョイントのほう(Aim Axisの方向)を向くように設定しましょう。
Up Axisはジンバルロックなどの兼ね合いもあるので、関節が曲がる方向を意識してジンバルロックがなるべく起こらないような設定にしましょう。
aimConstraintを使用したジョイントの軸の合わせ方
①子ジョイント→親ジョイントの順に選択し、RiggingメニューからConstrain > Aimのオプションを開いて、EditからReset Settingsを実行
②Aim Vector(上のAim Axisにあたるもの)を[1, 0, 0]とUp Vector(こっちは状況に合わせて)を[0, 0, 1]に設定し、Apply
③aimConstraintで作成されたaimConstraintノードを削除
④回転値を0にしたい場合はフリーズ
⑤ペアレント(子にするジョイントを親ジョイントの子にします)
aimConstraintで選択した方向にジョイントを向かせるScript
aimConstraintのオプションを出すのが面倒な方はぜひぜひ
# -*- coding: utf-8 -*-
from maya import cmds, mel
def joint_aim(obj=None, target=None, aim='x', up='z', wup='y'):
axis = {
'x':[1,0,0],
'y':[0,1,0],
'z':[0,0,1]
}
cmds.delete(
cmds.aimConstraint(
obj,
target,
w=True,
offset=[0,0,0],
aimVector=axis[aim],
upVector=axis[up],
worldUpType='vector',
worldUpVector=axis[wup]
)
)
sel=cmds.ls(os=True, type='joint')
joint_aim(obj=sel[0], target=sel[1], aim='x', up='z', wup='y')
外部のScriptを使用する
その前に、MayaのJoint Orientの機能は思った方向に向かないので
絶対に使用しないでください。
自分でジョイントの方向を設定するScriptを作成するか、
cometJointOrientという骨を設定するのにめちゃめちゃ便利なScriptがあるので、こちらを使いましょう。
設定方法はAim AxisとUp Axisの概念がわかっていれば使用できます。
①cometJointOrientは下記のURLからアクセス
②cometScripts.zipをクリック
③zipファイルを解凍したらcometJointOrient.melをMayaに読み込んで実行
終わりい
かなり基本的なことですが、今まで出会った方の中で意外と知らなかったという方が多かったので、書かせていただきました。
ジョイントはプロジェクトの始まりから終わりまでずっと関わるものなので、正しく、効率よく設定できるようにしたいですね。
それでゃあ!