On this page |
|
KineFXスケルトンの紹介 ¶
KineFXでは、すべてが SOPポイント です。 ポイントのワールドトランスフォームは、 ポジション + 3×3変換行列(移動, 回転, スケール) で定義されます。
ポイントにtransform
アトリビュートとname
アトリビュートが含まれていれば、そのポイントは ジョイント になります。
KineFXの階層または スケルトン は、 ポリゴンライン で繋がったポイントで表現されます。 階層内のジョイントの親子関係は、 頂点順 で決定されます。 そのため、階層を走査する際に ポイント順が考慮されるわけではありません 。
ゼロからスケルトンを作成してオブジェクトレベルからそのスケルトンを取り込んだり、または、他のDCCパッケージからスケルトンをインポートすることができます。
KineFXのスケルトン vs. オブジェクトレベルのスケルトン ¶
KineFXは、 ボーンベース のオブジェクトレベルのリギングツールとは違って、 ジョイントベース のシステムなのでHoudiniの群衆と同様です。
オブジェクトレベルで見られるボーンとジオメトリレベルのSOPスケルトンのポイントとの主な違いをいくつか以下に挙げます:
-
ボーンは長さを持ちます。 それに対して、ジョイントは親からのオフセットができるように ローカル空間 の変換だけを考慮します。
-
ボーンの向きは固定されています。 つまり、ボーンの子は、親の長さで指定された距離だけ常に-Z方向にオフセットされます。
-
ボーンはスケール補正に対応していません。 これが原因で、Squash-and-Stretch(潰しと伸ばし)アニメーションパイプラインが非常に扱いにくくなり、パフォーマンスに影響します。
-
キャプチャ(スキン)の変形はボーン自体によって駆動されません。 代わりにそのような変形はボーンオブジェクト内のCapture Region SOPで駆動されます。 この Capture Region SOP のキャプチャポーズとオブジェクトレベルのスキンの変形を駆動させる現行ポーズとで違いがあります。
-
オブジェクトレベルのキャプチャポーズはスキンに付着します。 つまり、スケルトンのパーツを削除した途端にスキンが壊れてしまいます。その一方でSOPスケルトンの場合、キャプチャポーズはJoint Deform SOPの2番目の入力で定義します。つまり、ジオメトリの再キャプチャ(再スキン)する必要なくSOPキャプチャポーズを 変更 することができます。 例えば、スケルトンのジョイントの向きに変更を加えたり、キャラクタのピボットを調整することができるものの、それによってスキンに影響が及ぶことはありません。
スケルトンの作成 ¶
スケルトン操作の基本とホットキー ¶
スケルトン操作状態でジョイントを描画する時は、以下の情報を覚えてください。
ホットキー または 操作 |
アクション |
---|---|
F |
Create モードと Modify モードを切り替えます。 |
Createモードの状態で何もない空間をクリック |
新しいジョイントが作成されます。 |
Createモードの状態で何もない空間を⇧ Shiftクリック |
親子化されていない浮いたジョイントが作成されます。 |
Modifyモードの状態でジョイントをクリックまたはクリック |
ジョイントが選択されます。 |
Createモードの状態でジョイントをクリックまたはクリック |
クリックしたジョイントを親にして新しいジョイントを作成します。 |
ジョイントをダブルクリック |
クリックしたジョイントとそのジョイントチェーン内のジョイントすべてが選択されます。 |
Sを押しながらドラッグ |
ジョイントを矩形選択します。 |
ジョイントを⇧ Shiftクリック |
そのジョイントが選択グループに追加されます。 |
ジョイントを⌃ Ctrlクリック |
そのジョイントが選択グループから削除されます。 |
ジョイントのリンクまたはポリライン(ジオメトリ)を⇧ Shift + ⌃ Ctrlクリック |
既存のジョイント間に新しいジョイントが追加されます。実質的には、そのポリラインを半分に分割します。 |
Delete |
選択したジョイントが削除され、その子ジョイントはそのジョイントの元の親ジョイントの子になります。 |
⇧ Shift + Delete |
選択したジョイントが削除されますが、その子ジョイントはそのジョイントの元の親ジョイントの子に なりません 。 |
Tweakモードの状態でジョイントをドラッグ |
ジョイントとその子ジョイントを移動させます。 |
Tweakモードの状態でジョイントを⇧ Shiftドラッグ |
ジョイントを移動させますが、その子ジョイントは移動させません。 |
Tweakモードの状態で Child Compensate を有効にしてジョイントをドラッグ |
ジョイントを移動させますが、その子ジョイントは移動させません。 |
Tweakモードの状態で Child Compensate を有効にしてジョイントを⇧ Shiftドラッグ |
ジョイントとその子ジョイントを移動させます。 |
Tweakモードの状態でポリラインを⇧ Shiftドラッグ |
ポリラインとその親/子のジョイントペアが捻じれたり、回転します。 |
Tweakモードの状態でポリラインを⌃ Ctrlドラッグ |
親ジョイントをピボットとして使用してそのポリラインが回転します。これを別名 トラックボール 回転と呼びます。 |
Tweakモードの状態でポリラインを⌃ Ctrl + ⇧ Shiftドラッグ |
既存のカーブを軸にポリラインが回転します。 |
⎋ Esc |
スケルトン状態から抜けます。 |
スケルトンの描画 ¶
-
ネットワークエディタ 内に Skeleton SOPノードを配置します。
-
キャラクタのジオメトリノードのテンプレートフラグを有効にして、 Skeleton SOP を選択してから、その Skeleton SOP のディスプレイフラグを有効にします。
これでスケルトンを描画中にキャラクタのジオメトリを表示できるようになります。
Tip
テンプレートフラグを有効にしたキャラクタジオメトリのビューポート内での表示方法は、 Display Options ウィンドウを開いて(Dを押します)、 Set display options for > Display Template Model Geometry を選択してから Draw モードを設定することで変更可能です。 Smooth Shaded または Smooth Wire Shaded のどれかのモードを推奨します。
-
その新しく追加した Skeleton SOP を選択して、マウスカーソルをビューポート内に移動させてからEnterを押します。
これでスケルトン操作 状態 になります。
この状態になると、Skeltonツールバー、メニュー、ホットキーにアクセスすることができます。
-
Skeletonツールバーでは、以下のどれかの操作を行ないます:
-
Joint Placement > Freehand を選択します。
-
Joint Placement > View Based を選択します。
推奨
この View Based ジョイント配置モードで作業する時は、キャラクタを中央で分ける正投影ビュー(例えば、Rightビュー)に切り替えると良いでしょう。
-
Joint Placement > Surface を選択します。
-
-
必要に応じて他のツールバーオプションを設定します。
-
ジョイントの描画を始める準備ができたら、 Mode ドロップダウンリストから Create を選択、または、Enterを押します。
Tip
Enterは、 Mode の Modify と Create を切り替えます。
これでビューポート内でジョイントチェーンを描画できるようになりました。
Construction Plane上でのスケルトンの描画 ¶
-
ネットワークエディタ 内に Skeleton SOPノードを配置します。
-
キャラクタのジオメトリノードのテンプレートフラグを有効にして、 Skeleton SOP を選択してから、その Skeleton SOP のディスプレイフラグを有効にします。
これでスケルトンを描画中にキャラクタのジオメトリを表示できるようになります。
Tip
テンプレートフラグを有効にしたキャラクタジオメトリのビューポート内での表示方法は、 Display Options ウィンドウを開いて(Dを押します)、 Set display options for > Display Template Model Geometry を選択してから Draw モードを設定することで変更可能です。 Smooth Shaded または Smooth Wire Shaded のどれかのモードを推奨します。
-
マウスカーソルをビューポート内に移動させてからEnterを押します。
これでスケルトン操作 状態 になります。
この状態になると、Skeltonツールバー、メニュー、ホットキーにアクセスすることができます。
-
ビューポート内にConstruction Planeを表示します。
-
Construction Planeハンドル上でクリックして、あなたが設定したい方法でConstruction Planeの向きを決めます。
例えば、 Align normal with world X axis オプションを選択します。
Construction Planeの向きがX軸に垂直になります。
-
Skeletonツールバーで、 Joint Placement > Freehand を選択します。
-
必要に応じて他のツールバーオプションを設定します。
-
ジョイントを描画します。
描画するジョイントチェーンはConstruction Planeに自動的にスナップします。
ジョイントの向きの変更 ¶
階層内のジョイントの向きを変更したい理由が色々考えられます。 例えば、ジョイントの回転がおかしいモーションキャプチャスケルトンを扱った場合、ゼロからスケルトンを構築した時に腕が良い角度で曲がるようにしたい場合、スケルトンに何かを追加したり削除した時にジョイントの角度がズレてしまった場合です。
どのような理由であれ、KineFXにはジョイントの向きを扱うためのツールやメソッドがいくつか用意されています。以下のセクションでは3つの例だけを挙げています。
ジョイントの向きの自動変更 ¶
単純なジョイントチェーンだと、 Orient Joints SOPノードを使用することで、それらのジョイントの向きを自動的に変更することができます。
-
Orient Joints SOP ノードを配置します。
-
スケルトンの出力を Orient Joints SOP の入力に接続します。
-
パラメータエディタ で、向きを決める Reference Vector を指定します。
これは、ジョイントのどの軸の向きを変更するのか決めます。 例えば、ジョイントチェーン内のジョイントのX軸が子ジョイントの方向を向くようにしたいのであれば、 Reference Vector に (1,0,0) を指定します。
ジョイントチェーン内のジョイントの指定した Reference Vector の向きが自動的に変更されます。
Orientation Pickingを使ったジョイントの向きの変更 ¶
HoudiniにはOrientation Pickingという便利な小さなモードがあって、主軸と副軸をジョイントに簡単に割り当てることができます。
スケルトンを作成、または、ジョイントを追加する時は Skeleton SOPノードのOrientation Pickingモードを、リターゲットをクリーンアップする時は Rig Pose SOPノードのOrientation Pickingモードを使用します。
-
ネットワークエディタ で、 Skeleton SOP ノードまたは Rig Pose SOP ノードを選択します。
-
マウスカーソルをビューポート内に移動させてからEnterを押すと、その Skeleton SOP または Rig Pose SOPのノードの操作 状態 に切り替わります。
-
向きを変更したいジョイントをズームインします。
-
向きを変更したいジョイントを選択して;を押すと、Orientation Pickingモードになります。
マニピュレータハンドルがOrientation Pickerハンドルに変わります。
-
以下の操作をします:
-
主軸 にしたい軸を⌃ Ctrlクリックします。これがジョイントの回転 基準 となるメインの軸です。例えば、X軸です。
軸ハンドル先端がボックス形状からピラミッド形状に変わります。
-
(オプション) 副軸 にしたい軸をクリックします。例えば、Y軸です。
-
現在向きを調整しているジョイントから上流にあるエッジまたはポリラインをクリックします。
これで、あなたが定義した新しい主軸と副軸を使ってジョイントの向きが変更されたはずです。
このテクニックによって、肘と膝のジョイントが非常に良い向きに変更されます。
-
-
;を押してOrientation Pickingモードから抜けます。
Tip
Skeleton SOP , Rig Doctor SOP , Rig Pose SOP のノード外でスケルトンを表示させたいのであれば、 Visualize Rig SOPノードを使用すると良いでしょう。
Construction Planeを使用したジョイントの向きの変更 ¶
Construction Planeを使用してジョイントチェーンのジョイント回転軸を調整することができます。
このサンプルでは、二足歩行の腕の肘の軸の向きを変更します。
-
ネットワークエディタ で、 Skeleton SOP ノードを選択します。
-
マウスカーソルをビューポート内に移動させてからEnterを押すと、その Skeleton SOP ノードの操作 状態 に切り替わります。
-
向きを変更したいジョイントをズームインします。例えば、肘のジョイントを変更します。
-
Construction Planeを表示します。
-
向きを変更したいジョイントが存在するジョイントチェーン内のすべてのメインジョイントを選択します。 例えば、向きを変更したいジョイントが肘だった場合は、肩、肘、手のジョイントを選択します。
-
Construction Planeをクリックして表示されるポップアップメニューから Orient Construction Plane to Selection を選択します。
Construction Plane自体が、選択したジョイントの方向を向きます。
-
ジョイントチェーンの中で、向きを変更したいジョイントを選択します。この例では、肘ジョイントを選択します。
-
Construction Planeをクリックして表示されるポップアップメニューから Snap Selection to Construction Plane を選択します。
これでジョイントチェーン内のジョイントの向きが良くなったはずです。
このテクニックによって、肘と膝のジョイントが非常に良い向きに変更されます。
スケルトンのミラー化 ¶
-
片側だけスケルトンを描画します。
スケルトンの描画方法の手順に関しては、スケルトンの描画またはConstruction Plane上でのスケルトンの描画を参照してください。
別の方法として、ミラー化したいスケルトンが既にある場合、 維持したくない 片側のスケルトンのジョイントを削除します。
-
ビューポート内にConstruction Planeを表示します。
-
Construction Planeをクリックして表示されるポップアップメニューから Align normal with world X axis を選択します。
Construction Planeの向きがX軸に対して垂直になります。
-
スケルトンからミラーの中心軸となるジョイント(二足歩行や四足歩行の場合だと、背骨ジョイントがこれに該当します)を選択します。
-
スケルトンをクリックして表示されるポップアップメニューから Snap Selection to Construction Plane を選択します。
-
Skeleton Mirror SOPノードを作成します。
-
Skeleton SOP の出力を Skeleton Mirror SOP の入力に接続します。
-
キャラクタのジオメトリノードのテンプレートフラグを有効にして、 Skeleton Mirror SOP を選択してから、その Skeleton Mirror SOP のディスプレイフラグを有効にしてください。
これでスケルトンをミラー化しつつキャラクタのジオメトリを表示させることができます。
Tip
テンプレートフラグを有効にしたキャラクタジオメトリのビューポート内での表示方法は、 Display Options ウィンドウを開いて(Dを押します)、 Set display options for > Display Template Model Geometry を選択してから Draw モードを設定することで変更可能です。 Smooth Shaded または Smooth Wire Shaded のどれかのモードを推奨します。
-
パラメータエディタ で Group パラメータの矢印選択アイコンをクリックし、ビューポート内でミラー化したいジョイントを⇧ Shiftクリックですべて選択(例えば、すべての手足のジョイント)してからEnterを押します。
選択したジョイントが Group フィールドに追加されます。これらのジョイントをこれからミラー化します。
-
Mirroring Style を選択します。
このパラメータは、選択したジョイントのトランスフォームを新しくミラー化されるジョイントに転写する方法を決めます。
-
入力のトランスフォームを回転させてジョイントをミラー化したい場合は By Rotation を選択します。 このモードはアニメーションの移動を反転させるので、下流のポージングはFK回転だけしか実行できないようになります。 FK回転のみを使ってスケルトンのポージングをして、マイナスのジョイントスケールが不要である場合には、このモードが役に立ちます。
-
入力のトランスフォームをマイナスでスケールさせることでジョイントをミラー化したい場合は By Scale を選択します。 下流のポージングは回転と移動の両方でミラー化することができるようになります。 ただし、すべてのトランスフォームがマイナスでスケールされます。 そのため、この方法だと、スケルトンをゲームエンジンや他のDCCにエクスポートする際に問題が起こり得ます。
-
-
必要に応じて Skeleton Mirror SOP の他のパラメータを調整します。
スケルトンのブレンド ¶
Skeleton Blend SOPノードを使用することで、2つのアニメーションスケルトン間で(全体的または部分的に)トランスフォームをブレンドすることができます。 これは、疎らな階層を密な階層にブレンド、または、密な階層を疎らな階層にブレンドする必要がある時に役立ちます。
以下の例では、アニメーションする二足歩行の上半身をアニメーションする二足歩行の全身にブレンドし、そのキャラクタのスケルトン変形を維持して、さらにブレンド量を増減させていきます。
How-to ¶
-
KineFxインポート系ノードを使用して、アニメーションスケルトンを取り込みます。
異なるデータタイプをSOPsに取り込む方法の手順に関しては、アニメーションとキャラクタデータをKineFXに取り込む方法を参照してください。
この例では、1体のFBXキャラクタを取り込んでから、 Delete Joints SOPを使ってその階層から一部の階層を取り出します。
-
Skeleton Blend SOP ノードと Joint Deform SOPノードを配置します。
-
以下の操作を行ないます:
-
1つ目 のKineFXインポート系ノードのアニメーションポーズ出力(3番目の出力)を Skeleton Blend SOP の1番目の入力に接続します。
-
2つ目 のKineFXインポート系ノードのアニメーションポーズ出力(3番目の出力)を Skeleton Blend SOP の2番目の入力に接続します。
-
Skeleton Blend SOP の出力を Joint Deform SOP ノードの入力に接続します。
この例では、 FBX Character Import SOPノードのアニメーションポーズ出力(3番目の出力)を Skeleton Blend SOP の1番目の入力に接続してから、 Delete Joints SOP の出力を Skeleton Blend SOP の2番目の入力に接続します。さらに2個のRig Pose SOPノードをネットワークに追加して、それら2つの異なる入力をアニメーションさせます。
-
-
Skeleton Blend SOP を選択してから、 パラメータエディタ でパラメータ設定を調整します。
Skeleton Blend SOP の Group パラメータでは、ブレンドさせるジョイントを選択することができます。
Bias Mode パラメータでは、 Bias パラメータをブレンドでどのように活用するのかを選択することができます。 3つのモードから選択することができます:
-
Manual モードは、通常の方法で入力1の上に入力2をブレンドし、 Bias パラメータは出力トランスフォームに対するブレンドの影響力を調整します。例えば、 Bias が0.5なら、出力トランスフォームは入力2のスケルトンアニメーションの50%を使用することを意味します。
-
Set From Attribute モードは、上流ノードからアトリビュートを探して Bias パラメータを オーバーライド してから、出力トランスフォームに対するブレンドの影響力を設定します。このアトリビュートは Bias Attribute パラメータで指定することができます。このモードはポイント単位でのブレンドにも対応しています。
-
Scale From Attribute モードは、上流ノードからアトリビュートを探して Bias パラメータに対する 乗数 値を用意します。このアトリビュートは Bias Attribute パラメータで指定することができます。 Bias パラメータとこのアトリビュートによるスケールバイアス値を使用することで、出力トランスフォームに対するブレンドの影響力を調整することができます。このモードはポイント単位でのブレンドにも対応しています。
他にも、ローカル空間( World Space をオフ)またはワールド空間( World Space をオフ)のどちらでブレンドするのか選択することができます。
Note
アニメーションスケルトンをワールド空間でブレンドする場合、ブレンドオペレーションを使用する前にそれらのスケルトンが同じワールド空間にある必要があります。
-
ポリゴンラインをジョイントチェーンに変換 ¶
Skeleton SOPまたは Rig Doctor SOPを使用すれば、独自にスケルトンジョイントを描画できるだけでなく、SOPポリゴンラインを ジョイントチェーン に変換することもできます。
How-to ¶
-
ネットワークエディタ でポリゴンラインを生成するSOPノードを配置します。
例えば、 Line SOPノードを配置します。
-
配置したばかりの新しいジオメトリSOPノードを選択してから、マウスカーソルをビューポート内に移動させてからEnterを押します。
これでビューポート内でジオメトリオブジェクトを表示できるようになりました。
例えば、ジオメトリとしてポリゴンラインセグメントやカーブが表示されます。
-
パラメータエディタ で、ジオメトリのプロパティを調整します。例えば、ポイント数や線の長さ。
ジオメトリ内の各ポイントは、スケルトンの ジョイント になります。
-
ネットワークエディタ で Skeleton SOP または Rig Doctor SOP を配置します。
-
ジオメトリの出力を Skeleton SOP または Rig Doctor SOP の入力に接続します。
これらのノードは、ジオメトリのポイントに対してトランスフォームを初期化し、有効な名前を付けます。 KineFXで有効な階層には、有効なポイント名が必須です。
これで、ビューポート内に新しいKineFXスケルトンを表示することができました。
Tip
Skeleton SOP , Rig Doctor SOP のノード外でジョイントチェーンを表示させたいのであれば、 Visualize Rig SOPノードを使用すると良いでしょう。
取り込んだスキンキャラクタに新しいジョイントを追加する ¶
以下のノードを使用すれば、KineFXに 取り込まれた キャラクタのスケルトンに新しいジョイントを追加したり、キャラクタの 既存の キャプチャ(スキン)にそれらの新しいジョイントを追加したり、新しいジョイントに新しいキャプチャウェイトをペイントすることができます:
-
Skeleton SOPは、アニメーションスケルトンに新しいジョイントを追加することができます。
-
Joint Capture Proximity SOPは、既存のキャプチャに新しいジョイントを追加することができます。
-
Capture Layer Paint SOPは、新しいジョイントに新しいキャプチャウェイトをペイントすることができます。
How-to ¶
-
Skeleton SOP ノードを作成します。
-
KineFXインポート系ノードのアニメーションスケルトン出力(3番目の出力)を Skeleton SOP ノードの入力に接続します。
-
Skeleton SOP ノードを選択して、マウスカーソルをビューポート内に移動させてからEnterを押します。
これでスケルトン操作状態になります。
このノードは、キャラクタに新しいジョイントを追加して、それらのジョイントをキャプチャの一部にすることができます。
しかし、これらのジョイントはキャプチャ ウェイト を持たない限りキャプチャを駆動させることはできません。 Capture Layer Paint SOP を使用してキャプチャウェイトを追加することになります。
-
Joint Capture Proximity SOP を配置します。
このノードは、 Skeleton SOP で作成された新しいジョイントをキャラクタのキャプチャに追加します。
-
以下の操作を行ないます:
-
KineFXインポート系ノードのRestジオメトリ出力(1番目の出力)を Joint Capture Proximity SOP ノードのキャプチャするジオメトリ入力(1番目の入力)に接続します。
-
Skeleton SOP ノードの出力を Joint Capture Proximity SOP ノードの追加キャプチャ領域入力(2番目の入力)に接続します。
-
-
Capture Layer Paint SOP を配置します。
このノードは、キャプチャウェイトを新しいジョイントに割り当てることができます。
-
以下の操作を行ないます:
-
Joint Capture Proximity SOP ノードの出力を Capture Layer Paint SOP のレイヤーペイントをキャプチャするジオメトリ入力(1番目の入力)に接続します。
-
Skeleton SOP ノード(ポージング用途なら Rig Pose SOP )の出力を Capture Layer Paint SOP の交差ジオメトリ入力(2番目の入力)に接続します。
-
Joint Capture Proximity SOP の出力を Joint Deform SOP の入力に接続します。
-
-
Joint Capture Proximity SOP のディスプレイフラグを有効にしてから、 Capture Layer Paint SOP を選択します。
-
ビューポート内で、新しいジョイントのキャプチャウェイトをペイントします。
これで新しいジョイントがキャラクタのキャプチャに影響を与えるようになったはずです。