Primary Axis
子ジョイントの方へ向ける軸。
On this page |
KineFXでは、すべてがSOPポイントです。
ポイントのワールドトランスフォームは、 ポジション + 3×3変換行列(移動, 回転, スケール) で定義されています。
ポイントにtransform
アトリビュートとname
アトリビュートが含まれていれば、そのポイントは ジョイント になります。
KineFXの階層または スケルトン は、 ポリゴンライン で繋がったポイントで表現されます。 階層内のジョイントの親子関係は、 頂点順 で決定されます。 そのため、階層を走査する際に ポイント順が考慮されるわけではありません 。
ゼロからスケルトンを作成してオブジェクトレベルからそのスケルトンを取り込んだり、または、他のDCCパッケージからスケルトンをインポートすることができます。
KineFXは、ボーンベースのオブジェクトレベルのリギングツールとは違って、ジョイントベースのシステムです。 オブジェクトレベルのボーンとジオメトリレベルのジョイントの主な違い:
ボーンは長さを持ちます。 それに対して、ジョイントは親からのオフセットができるようにローカル空間の移動だけを考慮します。
ボーンの向きは固定されています。 つまり、ボーンの子は、親の長さで指定された距離だけ常に-Z方向にオフセットされます。
ボーンはスケール補正に対応していません。 これが原因で、Squash-and-Stretch(潰しと伸ばし)アニメーションパイプラインが非常に扱いにくくなり、パフォーマンスに影響します。
キャプチャ(スキン)の変形はボーン自体によって駆動されません。 代わりにそのような変形はボーンオブジェクト内のCapture Region SOPで駆動されます。この Capture Region SOP のキャプチャポーズと現行ポーズとの差分がオブジェクトレベルのスキンの変形を駆動させます。
オブジェクトレベルのキャプチャポーズはスキンに付着します。 つまり、スケルトンのパーツを削除した途端にスキンが壊れてしまいます。その一方でSOPスケルトンの場合、キャプチャポーズはJoint Deform SOPの2番目の入力で定義します。つまり、ジオメトリの再キャプチャ(再スキン)する必要なくSOPキャプチャポーズを変更することができます。例えば、スケルトンのジョイントの向きに変更を加えたり、キャラクタのピボットを調整することができるものの、それによってスキンに影響が及ぶことはありません。
Skeleton SOPを使ってジョイントを描画することで、ゼロからスケルトンを作成することができます:
ネットワークエディタでジオメトリ(SOP)レベルに入って、Skeleton SOPを配置し、それを選択して、そのディスプレイフラグを有効にします。
キャラクタのジオメトリノードを配置して、そのテンプレートフラグを有効にします。これによって、スケルトンを描画する時にビューポート内にキャラクタのジオメトリを表示させることができます:
Tip
ビューポート内でのテンプレートジオメトリの表示方法は変更することができます。 Display Options ウィンドウを開いて(マウスカーソルをビューポート内に移動させてからDを押します)、 Set display options for を Template Model Geometry に設定し、 Draw ドロップダウンメニューからどれかのオプションを選択します。 Smooth Shaded または Smooth Wire Shaded のどれかを使用することを推奨します。
そのSkeleton SOPを選択します。
ビューポートの左側にあるツールバーのをクリックするか、または、マウスカーソルをビューポート内に移動させてEnterを押します。
これでSkeletonビューアステートに入ります。この状態になると、ビューポート上部にあるSkeltonツールバー、
メニューオプション、Skeletonステート用ホットキーにアクセスすることができます。
Skeletonツールバーで、 Mode を Create に設定します。
Tip
Fトグルは、 Mode の Create と Modify を切り替えます。 キーボードショットカットの詳細は、Skeletonホットキーを参照してください。
Joint Placement ドロップダウンメニューから View Based モードを選択します。このモードでは、ジョイントはジオメトリの中点に配置されます。オプションの詳細は、ジョイントの配置を参照してください。
スケルトンを描画します:
スケルトンを修正するには、Skeletonツールバーの Tweak Mode をオンにします。 Child Compensate がオフの場合、ジョイントをドラッグすると、そのジョイントとその子ジョイントも移動します。 Child Compensate がオンの場合、ジョイントをドラッグするとそのジョイントのみが移動し、その子ジョイントは移動しません:
スケルトン内のジョイントを整列させます:
ビューポートの右側にあるツールバーのをクリックして、ビューポート内にコンストラクション平面を表示します。
を
クリックして、 Construction Plane Handle をオンにします。
コンストラクション平面ハンドルをクリックして、 Align normal with world X axis を選択します。
これは、コンストラクション平面の法線がX軸を向くように変更します:
スケルトン内のジョイントを選択します。
ビューポート内でクリックして、 Snap Selection to Construction Plane を選択します。
ジョイントの名前を変更します:
Skeletonビューポートステートで、ポイントを選択します。
Skeletonツールバーの Name フィールドで、そのポイントの名前を変更します。
ビューポート内にジョイント名を表示させるには:
テンプレートジオメトリをゴーストに設定します:
ビューポート上にマウスカーソルを置いてDを押して、Display Optionsウィンドウを出します。
Markers タブで、 Set display options for を Template Model Geometry に設定します。
Ghosted をオンにします。
ジョイント名の表示を有効にします:
ビューポートの右側にあるツールバーの Visualizationアイコンをクリックして、ビジュアライザを有効にします。
Visualizationアイコンを
クリックして、
Scene の
をクリックして、
Markerを選択します。
表示されるEdit Visualizerウィンドウで、 Attribute フィールドをname
に設定します。
Geometry SpreadsheetやRig Treeビューでは、スケルトンジョイントの情報を確認することができます:
Geometry Spreadsheet
ペインの上部にある New Tabアイコンをクリックして、 New Pane Tab Type ▸ Inspectors ▸ Geometry Spreadsheet を選択します。
上部のツールバーの Pointsをクリックします。すると、各ジョイントには、
name
アトリビュートとtransform
アトリビュートがあることが確認できます:
他のPointアトリビュートを表示するには、 View を選択して、表示したいアトリビュートをオンにします。
Rig Treeビュー
ペインの上部にある New Tabアイコンをクリックして、 New Pane Tab Type ▸ Animation ▸ Rig Tree を選択します。
Type を Joints に設定します。すると、Rig Treeビューには、ジョイントとその階層関係が表示されます。この例では、tailジョイントがルートジョイントになっています:
スケルトンを描画する時、ジョイントをジオメトリ上にどのように配置したいのか選択することができます。 Skeletonビューポートステートで、 Joint Placement ドロップダウンメニューからジョイントの配置方法を選択することができます。
ジオメトリの中点にジョイントを配置します。 現行ビューからジオメトリを通過する直線を考えてみてください。 その直線とジオメトリとの交点の中で一番近い交点と一番遠い交点の中点にジョイントが配置されます。
推奨
View Basedモードで作業する時は、キャラクタを中央で分ける正投影ビュー(例えばRightビュー)に切り替えると良いでしょう。
サーフェスの法線を使用してジオメトリの中点にジョイントを配置します。 ジオメトリサーフェスと直交してジオメトリを通過する直線を考えてみてください。 その直線とジオメトリとの交点の中で一番近い交点と一番遠い交点の中点にジョイントが配置されます。
白い円は、ジョイントが配置されるジオメトリ内部の位置を示しています:
コンストラクション平面が表示されていれば、ジョイントはそのコンストラクション平面にスナップします。
ビューポートの右側のツールバーのをクリックすることでコンストラクション平面が表示されます。
コンストラクション平面ハンドルが非表示であれば、を
クリックして、 Construction Plane Handle をオンにします。
Skeletonビューアステートでは、コンストラクション平面ハンドルをクリックして Align normal with world [X|Y|Z] axis を選択することで、コンストラクション平面の向きを設定することができます。
例えば、 Align normal with world Y axis オプションを選択すると、コンストラクション平面の法線はY軸に向きます。
コンストラクション平面が非表示であれば、ジョイントは画角と直交する平面上に配置されます:
ジオメトリサーフェス上にジョイントを配置します:
自身でスケルトンジョイントを描画する方法だけでなく、Rig Doctor SOPやSkeleton SOPを使用して何かしらのSOPポリゴンラインをジョイントチェーンに変換することもできます:
ネットワークエディタ内で、例えばLine SOPなどのラインを生成するSOPノードを配置します。
パラメータエディタで、そのラインのプロパティを調整します。例えば、 Length パラメータや Points パラメータを上げます。そのラインのポイントを表示するには、ビューポートの右側にあるツールバーの Display Pointsをオンにします:
そのラインジオメトリをRig Doctor SOPまたはSkeleton SOPに接続します:
デフォルトでは、Skeleton SOPは、ジオメトリのポイントトランスフォームを初期化し、有効なポイント名を付けます(KineFX階層では、ジョイントにname
アトリビュートとtransform
アトリビュートがあることが必須になっています)。
しかし、Rig Doctor SOPは、デフォルトではポイントに名前を付けるだけで、ポイントトランスフォームを初期化しません。
ポイントトランスフォームを初期化するために、 Initialize Transforms パラメータをオンにしてください。
Geometry Spreadsheetで、これらのポイントの名前とトランスフォームを確認することができます:
ビューポート内にKineFXスケルトンを表示します。つまり、Rig Doctor SOPまたはSkeleton SOPを選択して、ビューポート上にマウスカーソルを置いてEnterを押します。ライン上の各ポイントがスケルトンのジョイントになっています:
ジョイント軸を表示するには、ビューポート内でクリックして、 Display Joint Axes をオンにします。
Tip
Rig Doctor SOPやSkeleton SOP以外の場所でジョイントチェーンを表示させたいのであれば、Visualize Rig SOPを使用すると良いでしょう:
Visualize Rig SOPにディスプレイフラグを設定します。 必要に応じて、 Joint Scale を上げて、ジョイント軸を見やすくします:
いくつかの理由で、階層内のジョイントの向きを変更したい場合があります:
モーションキャプチャスケルトンのジョイント回転がおかしい場合。
ゼロからスケルトンを構築した時に腕が良い角度で曲がるようにしたい場合。
スケルトンに何かを追加したり削除した時にジョイントの角度がズレてしまった場合。
このセクションにはジョイントの向きを扱うためのツールやメソッドがいくつか用意されています。
単純なジョイントチェーンだと、Orient Joints SOPを使用することで、それらのジョイントの向きを自動的に変更することができます。
ここでは、色々な向きのジョイントで構成されたジョイントチェーンから始めます:
スケルトンが格納されているSkeleton SOPの出力をOrient Joints SOPの入力に接続します。
Orient Joints SOPの Reference Vector には、子ジョイントの方に向かわせるジョイント軸の方向を設定します。例えば、ジョイントのX軸が子ジョイントの方を向くようにしたいのであれば、 Reference Vector を(1, 0, 0)
に設定します:
Orientation Pickingは、ジョイントを親ジョイントまたは子ジョイントの方に向くように変更することができます。
スケルトンを作成/修正する時はSkeleton SOPのOrientation Pickingモードを、リターゲットをクリーンアップする時はRig Pose SOPのOrientation Pickingモードを使用します:
ネットワークエディタ内で、Skeleton SOPまたはRig Pose SOPを選択します。
マウスカーソルをビューポート内に移動させてからEnterを押して、そのSOPのビューアステートに入ります。
Skeleton SOPを使用している場合、Skeletonツールバーの Child Compensate パラメータを有効にします。 Rig Pose SOPを使用している場合、 World Space パラメータを有効にします。
ビューポート内でクリックして、 Display Joint Axes と Show Handle を有効にします。
向きを変更したいジョイントを選択します:
;を押してOrientation Pickingモードにします。ハンドルがOrientation Picking用ハンドルに変わります:
ジョイントの回転基準となるメインの軸(主軸)を設定します。 この例では、(Z軸は肘から手首に向かった腕の方を向いているので)Z軸をそのままにし、他の軸はそのZ軸を基準に回転させたいです。 Z軸ハンドルの端にある青いボックス形状を⌃ Ctrlクリックします。すると、そのボックス形状がピラミッド形状に変わります。これでZ軸が主軸として設定されました:
副軸を設定します。これは、特定のリンク(ジョイント間のライン)に整列させたい軸を指定します。ジョイントの向きは、副軸が選択したリンクに整列するように主軸基準で回転します。
この例では、X軸を肩から肘までのリンクに整列させたいです:
X軸ハンドルの端にある赤いボックス形状をクリックします。すると、そのボックスが黄色に変わります。これは選択されていることを意味します。
肩から肘までのリンクをクリックします。肩から肘までのリンクと肘から手首までのリンクを含んだ平面を想像してください。X軸はZ軸(主軸)を基準に回転し、この平面と整列します:
このテクニックによって、肘と膝のジョイントが良い向きに変更されます:
;を押してOrientation Pickingモードから抜けます。
ビューポートステートのパラメータから主軸と副軸を指定することで、ジョイントの向きを変更することができます:
ネットワークエディタ内で、Skeleton SOPを選択します。
マウスカーソルをビューポート内に移動させてからEnterを押して、Skeletonビューアステートに入ります。
ビューポート内をクリックして、 Display Joint Axes を有効にします。
Sを押しながらドラッグして、向きを変更したいジョイントを矩形選択します。
マウスカーソルをビューポート内に移動させてからPを押してParametersウィンドウを開きます。
Viewer State Dialog タブで、 Primary Axis と Secondary Axis を設定します:
Primary Axis
子ジョイントの方へ向ける軸。
Secondary Axis
Up方向へ向ける軸。
ビューポート内でクリックして、 Orient Selected Joints を選択します。ジョイントチェーン内の軸が更新されます。
コンストラクション平面を使用してジョイントチェーンのジョイント回転軸を調整することができます。 この例では、二足歩行の腕の肘の軸の向きを変更します:
ネットワークエディタ内で、Skeleton SOPを選択します。
マウスカーソルをビューポート内に移動させてからEnterを押して、Skeletonビューアステートに入ります。
向きを変更したいジョイントが存在するジョイントチェーン内のすべてのメインジョイントを選択します。例えば、向きを変更したいジョイントが肘だった場合は、肩、肘、手のジョイントを選択します:
ビューポートの右側にあるツールバーのをクリックして、ビューポート内にコンストラクション平面を表示します。
ビューポート内をクリックして、 Orient Construction Plane to Selection を選択します。選択したジョイントの方へコンストラクション平面が向くようになります:
向きを変更したいジョイント(s)を選択します。この例では、肘ジョイントを選択します:
ビューポート内をクリックして、 Snap Selection to Construction Plane を選択して、ジョイントの向きを更新します。このテクニックによって、肘と膝のジョイントが良い向きに変更されます:
片側だけスケルトンを描画してSkeleton Mirror SOPを使用すれば、もう片側のスケルトンのジョイントを簡単に生成することができます:
上記の例を参考に、片側だけスケルトンを描画します:
Skeleton SOPをSkeleton Mirror SOPに接続します。
キャラクタのジオメトリノードのテンプレートフラグをオンにします。
Skeleton Mirror SOPを選択して、そのディスプレイフラグをオンにします。これでスケルトンをミラー化しつつキャラクタのジオメトリを表示させることができます:
ミラー化したいジョイントを選択します:
Skeleton Mirror SOPで、 Group パラメータのアイコンをクリックします。
ビューポート内で、⇧ Shiftを押したまま矩形ドラッグして、ミラー化したいジョイント(例えば、すべての手足のジョイント)を選択して、Enterを押します。すると、それらのジョイントが Group パラメータに追加されます。
ミラー化したジョイントの名前を変更します。Skeleton Mirror SOPの Token Position を Start 、 Find Tokens をL_
、 Replace Tokens をR_
に設定します。
これは、ミラー化したジョイントに対してL_
で始まるジョイント名を検索し、そのジョイント名をR_
で置換します。例えば、L_arm
という名前のジョイントがあれば、そのミラー化されたジョイントの名前はR_arm
になります。
Note
Skeleton Mirror SOPの Mirroring Style パラメータは、選択したジョイントのトランスフォームを新しくミラー化されるジョイントに転写する方法を決めます:
入力のトランスフォームを回転させてジョイントをミラー化したい場合は By Rotation を選択します。 このモードを使用すると、アニメーションの移動を反転させるので、下流のポージングはFK回転だけしか実行できないようになります。FK回転のみを使ってスケルトンのポージングをして、マイナスのジョイントスケールが不要である場合には、このモードが役に立ちます。
入力のトランスフォームをマイナスでスケールさせることでジョイントをミラー化したい場合は By Scale を選択します。 このモードを使用すると、下流のポージングは回転と移動の両方でミラー化することができるようになります。ただし、すべてのトランスフォームがマイナスでスケールされます。そのため、この方法だと、スケルトンをゲームエンジンや他のDCCにエクスポートする際に問題が起こり得ます。
Skeleton Blend SOPを使用することで、2つのアニメーションスケルトン間で(全体的または部分的に)トランスフォームをブレンドすることができます。
これは、疎らな階層を密な階層にブレンド、または、密な階層を疎らな階層にブレンドする必要がある時に役立ちます。
以下の例では、 Electraテストジオメトリの腕のアニメーションと足のアニメーションをブレンドします:
スケルトンのブレンドを行なうネットワークをセットアップします:
2個のRig Pose SOPを追加して、それら2つの異なる動きをアニメーションさせます。
片方のアニメーションスケルトンをSkeleton Blend SOPの1番目の入力に雪像し、もう片方のアニメーションスケルトンをSkeleton Blend SOPのマルチ入力に接続します。
このSkeleton Blend SOPの出力は、他のスケルトン(s)からの影響が適用された1番目の入力スケルトンです。
Joint Deform SOPによって、その変形ジオメトリを表示することができます。
Skeleton Blend SOPの weight スライダを調整することで、異なる入力スケルトンが1番目のスケルトンに与える影響力を制御することができます。
例えば、2番目のスケルトンのスライダを0.5
に設定すると、出力されるスケルトンは、その2番目のスケルトンのアニメーションの50%を使用します。
Blend Masking パラメータでは、 weight スライダの使い方を選択することができます。3つのモードから選択することができます:
No Masking
weight スライダを使用して、入力スケルトンが1番目のスケルトンに与える影響力を制御します。
Set From Attribute
上流ノードのアトリビュート値で weight スライダ値を上書きします。 このアトリビュートは Mask Attribute で指定することができます。 このモードは、ポイント単位のブレンドに対応しています。
Scale From Attribute
上流ノードのアトリビュート値を weight スライダ値の乗数として使用します。 このアトリビュートは Mask Attribute で指定することができます。 このモードは、ポイント単位のブレンドに対応しています。
Note
アニメーションスケルトンをワールド空間でブレンドする場合( World Space がオンになっている場合)、ブレンドオペレーションを使用する前にそれらのスケルトンが同じワールド空間にある必要があります。
To... | Do this |
---|---|
ジョイントとその子ジョイントを移動させる |
Skeletonツールバーの Tweak Mode をオン、 Child Compensate をオフにします。 |
子ジョイントを移動させずにジョイントを移動させる |
Skeletonツールバーの Tweak Mode と Child Compensate の両方をオンにします。 |
ジョイントを矩形選択する |
Skeletonビューポートステートで、Sを押したまま矩形ドラッグしてジョイントを選択します。 |
ビューポート内にジョイント名を表示する |
|
Rig Treeビュー内でサブツリーを全展開する |
⇧ Shiftを押したままジョイントをクリックします。 |
APEXノードは、APEXグラフの機能を構築するためのオペレーションを備えており、KienFXで使用することで、キャラクタリグを作成したり、他のジオメトリ操作を実行することができます。
Animateステートのコントロール、選択、選択セットのツリービュー。コントロールの選択と可視性を管理することができます。