ArmControl を移動すると、メカニカル アームが完全にまっすぐになるまで伸びたり、必ずしも適切でない方向を向いたりする可能性があります。
アームの移動範囲を制限して、IK システムが予想外のポーズをとらないようにすることができます。次のセクションでは、以下のように IK システムの移動範囲を制限します。
- コントロール オブジェクト(ArmControl)の移動を Y 方向と Z 方向だけにロックします。X チャネルを選択や変更ができないようにロックして、アームが左右に移動できないようにします。
- アームの回転ベース上での回転について、Y 軸の周囲だけを回転して、X 軸と Z 軸の周囲を回転しないようにロックします。
- ArmControl の移動について、メカニカル アームが完全にまっすぐになるまで伸びないように制限します。
ArmControl の移動 X (Translate X)チャネルをロックするには
- アウトライナ(Outliner)で、ArmControl ノードを選択します。
- チャネル ボックス(Channel Box)を開いて、ArmControl のトランスフォーム チャネルを表示します。
- すべての移動(Translate)チャネルまたは回転(Rotate)チャネルを 0 に設定します(0 になっていなかった場合)。
- チャネル ボックス(Channel Box)で、移動 X (Translate X)チャネル名をクリックして選択します。
- 移動 X (Translate X)の文字を右クリックします。
プルダウン メニューが表示されます。
- プルダウン メニューから選択項目のロック(Lock Selected)を選択します。
移動 X (Translate X)の数値フィールドがグレー表示になり、そのチャネルがロックされたことを示します。ArmControl を X 方向に移動しようとしても、移動 X (Translate X)チャネルをロック解除しないかぎり移動することはできません。
SwivelBase の回転 X (Rotate X)チャネルと回転 Z (Rotate Z)チャネルをロックするには
- アウトライナ(Outliner)で、SwivelBase ノードだけを選択します。
- チャネル ボックス(Channel Box)を開いて、SwivelBase の回転チャネルを表示します。
- すべての移動(Translate)チャネルまたは回転(Rotate)チャネルを 0 に設定します(0 になっていなかった場合)。
- チャネル ボックス(Channel Box)で、[Ctrl]キーを押しながら回転 X (Rotate X)チャネル名と回転 Z (Rotate Z)チャネル名をクリックして選択します。
- 選択した名前のいずれかを右クリックして選択項目のロック(Lock Selected)を表示されるプルダウン メニューから選択します。
回転 X (Rotate X) チャネルと回転 Z チャネルがロックされていることを確認するには
- アウトライナ(Outliner)で、SwivelBase ノードだけが選択されていることを確認します。
- 側面ビューのパネル メニューで、パネル > 正投影 > 上面(Panels > Orthographic > Top)を選択します。
- パネル メニューでシェーディング > すべてをスムーズ シェード(Shading > Smooth Shade All)を選択します。
- 下の図のように、メカニカル アームの全体が表示されるように上面ビューをドリーします。
- チャネル ボックス(Channel Box)を使用して、回転 Y (Rotate Y)チャネルに 45 を入力して[Enter]を押し、SwivelBase を回転させます。
ビューで SwivelBase が回転しますが、メカニカル アームは回転しません。
SwivelBase およびアームのスケルトンとサーフェスのすべてが同じ階層にペアレント化されていたことに、何か問題があると思われます。
IK システムのセットアップ中に、期待したとおりに動作していないことに気づいた場合、作業を中止して、そのように動作している原因(または期待どおりに動作していない原因)を検証すると有益です。このように作業を見直すことで、問題の所在を突き止めることができます。
この例では、ArmControl と IK ハンドル(IK Handle)は、SwivelBase 階層内にペアレント化されていません。
ArmControl と IK ハンドル(IK Handle)がメカニカル アームの動作を制御するため、これらを SwivelBase 階層内にペアレント化して、SwivelBase を回転すればアームも回転するようにする必要があります。
IK ハンドル(IK Handle)をスケルトン階層内にペアレント化するには
- アウトライナ(Outliner)で、SwivelBase ノードを選択します。
- チャネル ボックス(Channel Box)で、SwivelBase の回転 Y (Rotate Y)チャネルを 0 にリセットします。
これまでのトランスフォームをすべて 0 に設定してから、階層内の SwivelBase の下に IK ハンドル(IK Handle)をペアレント化する必要があります。
- 以下の手順を実行する前に、SwivelBase ノードの選択を解除します。
- アウトライナ(Outliner)で、[Ctrl]キーを押しながら ikHandle1、ArmControl、SwivelBase という名前のノードを選択します。
選択順序は重要です。最初に[Shift]キーを押しながら子ノードになる項目を選択してから、最後に[Shift]キーを押しながら親ノードになる項目を選択する必要があります。
- メイン メニューで、編集 > ペアレント化(Edit > Parent) (ホットキー p)を選択します。
アウトライナ(Outliner)のスケルトン階層で、IKHandle と ArmControl が SwivelBase ノードの子ノードになりました。
- アウトライナ(Outliner)で、SwivelBase だけを選択します。
- チャネル ボックス(Channel Box)を使用して、SwivelBase の回転 Y (Rotate Y)を 45 に設定します。
SwivelBase を回転すると、階層内のリレーションシップに基づいてメカニカル アームが回転します。
- SwivelBase の回転 Y (Rotate Y)の値を 0 にリセットします。
最終的には、アームが完全にまっすぐになるまで伸びないように、ArmControl がモデルのベースから離れられる範囲を制限する必要があります。
移動範囲設定を指定するには、チャネル ボックス(Channel Box)に移動値を表示しながら、メカニカル アームを動かして検証する必要があります。
ArmControl の移動範囲を指定するには
- アウトライナ(Outliner)で ArmControl を選択します。
- チャネル ボックス(Channel Box)が開いたら、ArmControl の移動チャネルが表示されていることを確認します。
- ビューで、パネル > 正投影 > side(Panels > Orthographic > side)を選択します。
- [4]を押して、ワイヤフレーム モードに戻ります。
- メカニカル アームの全体が表示されるように側面ビューをドリーします。
- 移動ツール(Move Tool)を選択します。
- 側面ビューで、中マウス ボタンをクリックしながら、下の図のようにメカニカル アームが完全に伸びるまで斜めにドラッグします。
- チャンネル ボックス(Channel Box)で、移動 Y(Translate Y)チャンネルと移動 Z(Translate Z)チャンネルに表示されている数字を確認します。
アームの連接部が斜めに伸びてカーゴ ボックスの上方に来ると、ほぼ完全に伸びた状態になります。このときの移動値はおおよそ以下のようになります。
- 移動 Y (Translate Y): 6.5
- 移動 Z (Translate Z): 3
- 側面ビューで、中マウス ボタンを押しながら、下の図のようにメカニカル アームがほぼ完全に縮むまで斜めにドラッグします。
- チャネル ボックス(Channel Box)で、移動 Y (Translate Y) チャネルと移動 Z (Translate Z)チャネルに表示されている数字を確認します。
アームの連接部が縮んだポーズになったときの移動値は、以下のようになります。
- 移動 Y (Translate Y): -15
- 移動 Z (Translate Z): -8.5
この最小値と最大値は、ArmControl の最小移動範囲と最大移動範囲として以下の手順の中で使用されます。
ArmControl の移動範囲を設定するには
- アウトライナ(Outliner)で、ArmControl ノードを選択します。
- アトリビュート エディタを開きます(ウィンドウ > アトリビュート エディタ(Window > Attribute Editor)を選択するか、または、ステータス ライン(Status Line)上でアトリビュート エディタの表示/非表示(Show/Hide Attribute Editor)アイコンをクリックします)。
アトリビュート エディタ(Attribute Editor)に ArmControl に関連付けられたノードが表示されます。
- アトリビュート エディタ(Attribute Editor)で、ArmControl タブをクリックします。
ArmControl タブが見えない場合は、左右のスクロール矢印を使ってビューを横にスクロールしてタブを見えるようにします。
- アトリビュート エディタ(Attribute Editor)で、制限情報(Limit Information)アトリビュートを展開してから、移動(Translate)アトリビュートを展開します。
-
移動(Translate)アトリビュートで、移動制限 Y (Trans Limit Y)と移動制限 Z (Trans Limit Z)の最小(Min)と最大(Max)の両方のチェック ボックスをオンにして、次の値を設定します:
- 移動制限 Y (最小)(Trans Limit Y (Min)): -15
- 移動制限 Y (最大)(Trans Limit Y (Max)) : 6.5
- 移動制限 Z (最小)(Trans Limit Z (Min)): -8.5
- 移動制限 Z (最大)(Trans Limit Z (Max)): 3
- アトリビュート エディタ(Attribute Editor)を非表示にします。
- ArmControl を選択します。
- 側面ビューで、ArmControl を移動して IK システムの移動範囲をテストします。
メカニカル アームがモーションの制限範囲内で移動します。