Skeleton Editor を使用して、インバース キネマティックスを使用した場合にスケルトンの動きに影響を与えるリミット、レスト ポジション、剛性などのジョイント情報を設定する手順を学習します。
Skeleton Editor を使用して、ジョイント DAG ノードとスケルトン階層を作成および変更し、ジョイント リミット、その他の IK チェーン プロパティに合わせてカスタマイズします。
Skeleton Editor には 2 つのセクションがあります。その左側には DAG ノードの名前を含むリスタ、右側には各ジョイントのプロパティを列挙したスプレッドシートがあります。
リスタの内容は、List Mode での選択によって異なります。リストのそれぞれのエレメントは、最高 4 つのアイコンに加えて DAG ノードアイコンおよび DAG ノード名を持っています。
このアイコンを使用して、既存の DAG ノードを Joint ノードに変更したり、既存の Joint ノードを DAG ノードに変更したりできます。オンになっている場合、アイコンには暗いグレー地に白いボーン ジョイントが表示されます。これはこの DAG ノードが Joint ノードであることを表しています。このとき、SBD ウィンドウの DAG ノードには、SBD ボックスにジョイント アイコンが表示されています。オフのときは、暗いグレーが明るいグレーに変わり、ボーンは白く表示されません。これは DAG ノードが Joint ノードではないことを意味しています。
Joint DAG ノードを使って、特定のジョイント プロパティを IK ハンドルで使えるようにカスタマイズすることができます。このようなプロパティは Skeleton Editor の右側、スプレッドシートの部分にリスト表示されます。
このアイコンをクリックすると、ジョイントが展開されて使用されているジョイントコンポーネントとそのリミットが表示されます。展開状態は保存されますので、次にジョイントをリスト表示すると、自動的にこのジョイントが展開されます。ジョイントを折り畳むには、このアイコンをもう一度クリックします。
このアイコンをクリックすると、選択されているいないにかかわらず、項目がリストに表示されたままになります。アイコンは黒いピンに変わります。
DAG ノード名を変更するには、DAG ノード名エリアをダブルクリックします。
IK ハンドルのコントロール タイプを示すために、IK ハンドル名の左に以下のアイコンが表示されます。
共有ジョイントアイコンは、このジョイントがシングルチェーンとマルチチェーンの両方によって共有されていることを表します。
Skeleton Editor の右側には、各 Joint ノードコンポーネントの値を編集するためのスプレッドシートがあります。編集できるのはジョイントの値だけです。このウィンドウに表示される他のオブジェクトを編集する前に、これらのオブジェクトをジョイントに変更する必要があります。
スプレッドシートにこれらのジョイントの値を表示するには、Joint ノードの 1 つを選択して、ジョイント展開アイコンを選択します。スプレッドシートにある各ジョイントの値は、シングルチェーン IK ハンドル、またはマルチチェーン IK ハンドルで使用されます。
右の画面には Show D.O.F. メニューが All に設定されている Skeleton Editor が表示されています。
スプレッドシートの Use Joint 列と Use Limits 列のエントリを選択して、オン(チェックマークで示されます)またはオフ(ダッシュで示されます)に設定します。
オフに設定すると、変換実行中にパラメータが変更されません。これはジョイントの動きを制限するときに便利です。たとえば、脚のスケルトン階層で、ひざのジョイントがX軸に沿ってのみ曲がるように設定する場合、Y rotate と Z rotate に対応する Use Joint はオフにします。
オンに設定すると、変換実行中にジョイントに 2 つの列、Minimum と Maximum で定義されたリミットが使用されます。これは指定した範囲内でジョイント コンポーネントを動かす場合に便利です。たとえば、ひじの Joint ノード用の推奨範囲が 0 度から 170 度である場合、Use Limits をオンにして、さらに MinimumとMaximum で範囲を設定すると、変換実行中にひじのジョイントにこの範囲外にある値が使用されることはありません。
オフに設定すると、このジョイントに設定されているジョイント リミットはすべて無視されます。この場合、Minimum セルと Maximum セルがグレーに変わり、編集できなくなります。
リミットの定義については、「Set メニュー」セクションの Set ボタンの説明を参照してください。
最初に描画されたボーンの方向を基準に 0 度の位置が決められます。ボーンを斜めに描画した場合、前の例で示した最小および最大レンジは次のようになります。
この 2 つの列には任意の値を入力できます。入力された値はジョイント パラメータの最大値と最小値を表します。回転パラメータでは、値は度単位で表された角度になります。移動パラメータでは、値はセンチメートルで表されます。変更するジョイントの行が含まれる列をクリックし、最大ジョイント値、または最小ジョイント値を設定します。
Minimum および Maximum Set メニューを使用して、ジョイントの最小値と最大値を設定することもできます。
最小値は最大値よりも小さくなければなりません。また、レスト ポジションは最小値と最大値の間になければなりません。最小値が最大値より大きい場合、あるいは最大値の値を最小値よりも小さく入力した場合は、最大値と最小値の値が入れ換わります。Use Limit がオンの場合、最小値と最大値によって、ジョイント パラメータ値の範囲が制限されます。
この列には 0~100 の値が入ります。この値は各ジョイント パラメータの剛性をパーセンテージで表したものです。マルチチェーン ハンドルをもつチェーンをドラッグする場合、通常は、チェーンがそのゴールに到達するためのソリューションにはさまざまなものが考えられます。剛性をジョイントに適用すると、コントロールがはるかに優れたものになります。
たとえば、あるオブジェクトに手を伸ばそうとしている腕のアニメーションで、肩のジョイントを硬くすると、腕は、ひじのところで曲がってオブジェクトに手を伸ばします。しかし、ひじのジョイントを非常に硬くすると、腕はまっすぐに伸びたままになり、腕全体が硬直した状態でオブジェクトに向かって伸びることになります。
値 0% は、そのジョイントにまったく硬さがないことを意味します。この場合、チェーンのエフェクタが目的とする動作を達成できるように、ジョイントはできるだけ速く移動します。硬さが 100% の場合、ジョイントは完全にコンストレインされ、ジョイントをまったく使用しない、つまり Use Joint がオフになっている場合と同じエフェクトを出すことができます。
List Mode メニューでは、Skeleton Editor のリスタに、どの DAG ノードを表示するかを制御します。
Joint ノードであるかどうかにかかわらず、リスタには選択された DAG ノードだけが表示されます。
リスタには現在選択された Joint ノード、およびこのノードの上位にある Joint ノードから最初の Joint ノードまでがすべて表示されます。選択された DAG ノードが Joint ノードではない場合、何も表示されません。
リスタには、選択された Joint ノードが属するスケルトンに含まれるすべての Joint ノードが表示されます。Hierarchy と異なり、Skeleton では Joint ノードだけがリストに表示されます。
ジョイント DAG ノードが選択されていない場合、何も表示されません。同じスケルトンに属する 2 つのジョイント DAG ノードが選択されている場合、スケルトンは 1 度だけリストに表示されます。
ジョイント DAG ノードであるかどうかには関係なく、リスタには選択された DAG ノードと、これより上位(above)にある DAG ノードがすべて表示されます。
ジョイント DAG ノードであるかどうかには関係なく、リスタには選択された DAG ノードと、これより下位(below)にある DAG ノードがすべて表示されます。
リスタには、選択された DAG ノードが含まれる階層にあるすべての DAG ノードが表示されます。
リスタには、選択されているかどうかには関係なく、既存のスケルトンすべてのルートが表示されます。
リスタには、選択されているかどうかには関係なく、既存のスケルトンがすべて表示されます。
これらのモードでは、リスタにあるジョイント ボタンをクリックすれば、リスタに表示されているどのような DAG ノードでも結果を確認しながらジョイントに切り替えることができます。どの DAG ノードをリスタに表示するか決めるために、自動的に選択された DAG ノードのルート DAG ノードが検索され、そのルート DAG ノードの下位にある DAG ノードがすべてリストアップされます。
インバース キネマティックスを使用して、すでに作成されていている階層モデルを移動したり、アニメーション化する場合は、Hierarchy、Below、Above モードが便利です。これらのモードでは、リスタにあるジョイントボタンをクリックすれば、リスタに表示されているどのような DAG ノードでも結果を確認しながらジョイントに切り替えることができます。
また、上記の各モードを使用して、階層リストの情報を、作業中のスケルトンの部分に限定することができます。
次の例は電気スタンドとそのスケルトン階層を表しています。
ジョイントが階層的に一覧表示されます。
ジョイントが IK ハンドル別に一覧表示されます。
Show D.O.F. ポップアップ メニューでは、ある Joint ノードのジョイント展開ボタンをクリックしたときに表示される回転パラメータや移動パラメータを制御します。D.O.F. は、IK コントロールの視点からの、degrees of freedom(自由度)の略です。
これは既定のモードです。Skeleton Editor のリスタで、Joint ノードのジョイント展開アイコンをクリックすると、この Joint ノード、つまり X、Y、Z の回転と移動に対する自由度が表示されます。
Joint ノードでジョイント展開ボタンをクリックすると、Use Joint 列にチェックマークが付いてオンになっている自由度だけがリスタに表示されます。
Set メニューを使用して、現在選択されている行の Minimum 列と Maximum 列を、対応するジョイント パラメータの現在値に設定できます。
Skeleton Editor リスタでジョイントを選択し、Set メニューから以下の設定のどれかを選択します。
選択されているすべての行に対して設定されている Minimum パラメータ値が、このジョイントにある対応するパラメータの現在値として設定されます。
選択されているすべての行に対して、設定されている Maximum パラメータ値が、このジョイントにある対応するパラメータの現在値として設定されます。
たとえば、ジョイントの Y Rotation 値が60 度に設定されているとします。
このような Set 機能の 1 つを実行した結果、Minimum の値が Maximum の値よりも大きくなってしまった場合、ジョイント リミットの範囲を有効にするために、Minimum と Maximum の値が入れ替えられます。
Skeleton Editor で選択した DAG ノードは、モデリング ウィンドウで自動的に選択されます。この操作の後では、Skeleton Editor リスタでの項目の選択状態と、モデリング ウィンドウにある DAG ノードの選択状態はまったく同じになります。
この操作は List Mode が Skeleton または Hierarchy である場合に最も効果的です。これは Skeleton Editor にあるリストの内容は Model Pick > Selected 操作後は更新されないからです。
しかし、Skeleton Editor で選択されている DAG ノードの一部が、モデリング ウィンドウで選択されないことがあります。これは、Skeleton Editor は DAG ノードの階層を表示するように設計されているからです。これらの階層は Skeleton Editor リスタ ウィンドウで選択できます。しかし、互いに上位、下位の関係にある DAG ノードをモデリング ウィンドウで同時に選択することはできません。これは選択の衝突と呼ばれます。
この選択の衝突を解決するために、DAG ノードの上位ノードと下位ノードが Skeleton Editor リスタで選択されている場合、選択された DAG ノードのうち、最も下位にあるノードがモデリング ウィンドウで選択されます。モデリング ウィンドウで選択できなかった DAG ノードは、Skeleton Editor リスタで選択が解除されます。
ここで、わかりやすくするために、例を挙げて説明します。2 本脚のモデルを作成したとします。
リスタで左膝は選択されていないので、モデリング ウィンドウも選択されていません。右足のジョイントで選択の衝突が起きていますので、選択されているジョイントのうち最も下位にある right_ankle が選択され、モデリング ウィンドウでも選択されます。この結果、右脚のその他のジョイントは、モデリング ウィンドウの中で選択が解除されましたので、リスタの中でも選択は解除されています。
Skeleton Editor は、列から複数の要素を選択して一度に編集できるスプレッドシートです。Skeleton Editor のリスタを使用して、リストから 1 つ以上の要素を選択することができます。最初の要素をクリックして、選択する最後の要素までカーソルをドラッグします。選択した項目が白色表示されます。
キーを押したまま選択すると、選択されたリストにある要素を連続的に追加、または削除できます。たとえば、リストから 2 番目、3 番目、7 番目、8 番目、9 番目の要素を選ぶ場合、まず、2 番目の要素をクリックして、3 番目の要素までドラッグします。次に、
キーを押しながら、7 番目の要素をクリックし、9 番目の要素までドラッグします。これで 5 つの要素が選択されます。
リストから複数の項目を選び、すべてをまとめて編集することができます。グローバル編集は、リスタとスプレッドシートの両方で行うことができます。たとえば、5 つの要素を Joint ノードにする場合、この 5 要素を選択し、そのいずれかのジョイントアイコンをクリックします。これで 5 つの要素がすべてジョイントになります。別の例として、ジョイント展開ボタンをクリックしてあるジョイント DAG ノードのジョイントをリストし、ジョイント プロパティをすべて選択します。選択した行のどれかの Use Limits 列の下をクリックすると、すべてのジョイントの Use Limits 値(オンまたはオフ)が同じになります。
注意 選択された複数の要素をクリックして、ジョイントアイコンをオンに切り替えると、ジョイントリミット、ジョイントの硬さなどのジョイント情報や、すべてのジョイントコンストレイン、ジョイントにアタッチされたIKハンドルも削除されます。