Houdini18.5 Kine FX


SideFX社より、日本時間10月16日(金)に「Houdini 18.5 Launch」が公開されました。

また、10月6日(火) には、SideFX社 Luiz Kruel 氏によるKineFXについて講演が開催されました。本記事は、こちらの講演で紹介された内容を基に新機能「KineFX」についてご紹介しています。

Houdini18.5の新機能と改善については、こちらの記事をご確認ください。


Kine FXとは

KineFXは、リギングとアニメーションのフレームワークおよびツールセットであり、ジオメトリレベルですべてのキャラクターを作成して編集することができます。

特別なKine FX SOPと常備のHoudini SOPを一緒に使用して、インポートしたキャラクターやアニメーションを編集したり、ゼロから独自のKineFXキャラクターを作成することができます。


プロシージャルリギングとは

KineFXフレームワークは、プロシージャルリギングの原理に基づいて構築されています。
プロシージャルリギングは、静的なグラフシステムのように何かを壊してしまう心配なく、素早くリグを反復処理し、非破壊的に実験し、セットアップを探求することができます。

例えば、KineFXを使用すると、アニメーション中にリグを再設定したり、アニメーション階層の全部分を削除したり、キャプチャ(スキン)やアニメーションを失わないようにしたり、または、すべてのポイントをペアレント化解除して、その位置を保持したり(ワールド空間のトランスフォーム)することができます。

KineFXを使用すれば、ジョイントデータはよりシンプルになり、そのトランスフォームモデルもよりシンプルになって、入力ストリームが常にそこにあり、オリジナルのデータを失うことはありません。デフォルトではすべてがワールド空間に存在し(ただし、ワールドとローカルの切り替えは簡単です)、フレームワークは性質上アトリビュートで動きます。


アニメーションのリターゲティングとは

リターゲティングとは、あるキャラクターのアニメーションを別のキャラクターに転送するプロセスのことです。

KineFXは堅牢で柔軟性の高いシステムであるため、元のキャラクターとターゲットキャラクターの間で考えられる形態や階層構造の多くの違いに対応することができます。

従来のHoudiniのアニメーション機能は、各スケルトンやジョイントがObjectレベルで展開されるため、プロシージャルではないという問題点がありました。

そのため、SideFX社では、2年程前からプロシージャルなアニメーションの開発を進め、今回リリースされたHoudini18.5では、Geometryレベルでアニメーション作業をプロシージャルに行えるツールセット「KineFX」が追加されました。


KineFXの特徴

Geometryレベルのアニメーション作業
従来のObjectレベルでのアニメーション作業をGeometryレベルで作業をすることができます。


Denseデータの処理の効率化
毎フレームごとのアニメーションデータを効率的に処理することが可能です。


ステートマシンの考え方に基づいたアニメーションの処理方法
ゲームエンジンなどで使用されている、ステートマシンの概念に基づいてアニメーションを処理する方法がDCCツールに実装されました。

KineFX ツールセットについて

ここからは、Kine FXの使用例として、「スケルトンの操作や作成」「ウェイトの調整」や「VOPを使用したコンストレイントの調整」「リターゲティングワークフロー」や「モーションキャプチャーデバイスを使用したHoudiniとUnreal Engineとの連携」や「新たに追加されたMotionClipノード」についてご紹介します。

■KineFX ツールセットを使用してポイントをスケルトンとして操作

スケルトン情報を含んだFBXデータに対して、KineFX ツールセットのRig Pose SOPを適用することで、各ポイントをスケルトンとして扱うことが出来ます。これは、各ポイントを繋いだ集合に対して、Rig Pose SOPを介してビューポート上ではスケルトンを表示することが可能です。

Geometryレベルで操作しているため、例えば、Grid / Mountain SOPを使用して地面を作成して配置することができます。

基本的なデータの流れは、ポイントを基にしていますが、多くのパラメータに対してキーフレームを追加したり、必要に応じてデータをベイク処理することができます。


■スケルトン情報を持つキャラクターをFBXデータで出力

Kine FX ツールセットとして、新たに追加されたFBX Character Import SOPは、アニメーション付きのFBXファイルからスキン化されたキャラクターをインポートすることができます。

このSOPには、3つの出力があり、1番目はスキン情報付きのジオメトリデータとして、Bone Deform SOPを使用して変形できるboneCaptureアトリビュートを持つポリゴンを出力します。2番目は、スケルトンとレストポーズのデータ、3番目はアニメーションを付けたスケルトンデータを出力します。

FBX Character Import SOPの第3出力に、Rig Pose SOPを接続することでアニメーションが付いたスケルトンデータにポーズを適用することができます。

そして、FBX Character Import SOPの第1、2出力とRig Pose SOPの出力に、Bone Deform SOPを接続することで、boneCaptureアトリビュートを使用して、下画像のようにジオメトリを変形させることができます。

また、作成したデータに対して、Kine FXツールセットのROP FBX Character Output SOPを適用することで、スケルトンを持つキャラクターをFBXファイルにエクスポートすることができます。

このようにFBXデータをHoudiniに読み込み、KineFX ツールセットでポーズを付けたり編集を加えた後、HoudiniからFBXデータとして出力するということができます。


■スケルトンとキャラクターを個別に操作

スケルトンが付いたスキンキャラクターに対して、Poly Reduce SOPを適用してポリゴンのリダクション(削除)を破綻なく実行できます。
これは、Houdiniの特徴である、非破壊的な編集によってアニメーションが適用されたジオメトリのポリゴンを削除できます。また、リダクション(削除)の量が多い場合、ポリゴンが破綻する場合があり、ビューポートで結果を確認しながらリダクションの量を調整することも可能です。

下画像では、LOD1~3に対してPoly Reduce SOPを適用してポリゴンリダクションを行い、LOD4ではボクセルを用いてリダクションを実行しています。


■スキニング、スケルトンの作成

KineFX ツールセットのSkeleton SOPを使用することで、ジオメトリベースのスケルトンをインタラクティブに作成、編集することができます。また、このSOPは、ジョイントの位置をジオメトリの中心に配置するように編集したり、ジョイントの親子関係を適切に設定することが可能です。

Skeleton SOPでは、その他にもパラメータの値を0にリセットしたり、ジョイントを選択して向きをリセットすることもできます。

片側にジョイントを配置して、もう片方にジョイントを反転したい場合は、KineFX ツールセットのSkeleton Mirror SOPを使用します。

スキニングを行う場合は、Bone Capture Lines SOPを使用してラインジオメトリを作成します。次に、Tet Embed SOPで四面体のメッシュを作成し、更にBone Capture Biharmonic SOPでキャプチャウェイトを作成します。

そして、Rig Pose SOPとBone Deform SOPを接続することで、スケルトンにポーズを割り当て、ジオメトリを変形させることができます。


■ウェイトの調整とジョイントの追加

ウェイトの調整を行う場合、Capture Layer Paint SOPを使用して、アニメーションに対してウェイトをペイントすることができます。ペイントするジオメトリを選択し、マウス中ボタンでボーンをクリックして、キャプチャ範囲を指定します。ブラシを表面上にドラッグすることでウェイトをペイントすることが可能です。

また、[Visualize Mode]パラメータでは、ウェイトを色にマッピングする方法を切り替えることができます。

また、ジョイントが足りない場合ウェイト調整中にジョイントをジオメトリに追加することも可能です。スケルトンの作成に使用したSkeleton SOPを選択して、ジョイントを追加し再編集します。

追加したジョイントに対してもスキンウェイトを適用することはできます。また、Skeleton SOPを追加して、先ほど追加したジョイントのピボットの位置を破綻せずに回転させることができます。このように、ウェイト調整を行った後に、ジョイントを追加した場合でも問題なく非破壊編集を行うことができます。


■VOPを使用したコンストレイントの調整

コンストレイント調整を行う、Kine FX ツールセットの「Two Bone IK VOP」、「Look At(Kine FX)VOP」、「Parent Constraint VOP」がHoudini18.5で追加されました。

こちらでは、既にスキニングされたジオメトリに対して、Two Bone IK VOPを使用してIKを調整する流れをご紹介します。

下画像の左側(スキニングされたジオメトリ)に対して、Add SOPでジオメトリを削除しポイントのみを編集できるように保持します。そして、ポイントを基にKine FXツールセットを使用してIKの再編集を行います。

最初に、Geometryネットワーク上にRig Attribute VOP SOPというKineFX VOPノードにアクセスできるノードを作成し、SOPの内部にTwo Bone IK VOPを作成します。VOPネットワークに、Two Bone IK VOPを作成することでIKを編集することができます。
Geometryネットワークへ移動し、Rig Pose SOPを作成することで、IKハンドルの各ポイントの位置を調整することができます。

このようにスキニングされたジオメトリに対して、IKハンドルを追加および編集することでアニメーションの一部を上書きすることができます。


■リターゲティングワークフローについて

Houdini18.5のKine FX リターゲティングのワークフローは主要な機能となります。
リターゲティングを行う際に必要になるノードは、基本的にはKine FXツールセットの「Rig Match SOP」、「Map Point SOP」、「Full Body IK SOP」です。
これらのノードを使用することで、様々な形状に対してリターゲティングを適用しフルボディ化することができます。

下画像では、右側のフルボディのキャラクターを左側のスケルトンデータを基に操作しています。Houdiniの特徴として、下画像のようなノードネットワークを一度構築することで、例えば、他のキャラクターや他のデータに対してリターゲティングを行う場合、入力を切り替えるだけでリターゲティングを適用することができます。


■PDGを使用したリターゲティング

また、リターゲティングを実行するにあたって、PDG(Procedural Dependency Graph)を使用することも可能です。
下画像では、特定のパターンに一致するファイルを基にワークアイテムを作成するFile Pattern TOPと、ネットワークをクックするワークアイテムを作成するROP Fetch TOPを使用して、ディレクトリにある全てのアニメーショファイルに対して、リターゲティングの実行しています。

ROP Fetch TOPを設定することで、ディスク上のアニメーションファイルに対して自動的にリターゲティングを行い、短時間で結果を得ることができます。また、レンダーファームにジョブを投入して自動的に計算するということも可能です。
下画像は、それぞれのキャラクターに対して、同一のアニメーションデータを適用した結果です。リターゲティングは、人体以外にも様々な形状のクリーチャーに適用することができます。

また、下画像のような歩行アニメーションを基に2つのジオメトリに対して、それぞれにアニメーションをリターゲティングすることも可能です。

例えば、下画像のような2つのジオメトリ(上:人型、下:クリーチャー)に対して、歩行アニメーションの下半身の動きをクリーチャーに適用し、上半身の動きを人型に適用します。

下画像は、2つのジオメトリに対して、歩行アニメーションを適用した結果です。
一番左は基となる歩行アニメーション、二番目はスケルトンを調整した結果、三番目は人型とクリーチャーのスケルトン、四番目は実際のスキンキャラクターです。


■モーションキャプチャーデバイスを使用したHoudiniとUnreal Engineの連携

モーションキャプチャーデバイスとPERCEPTION NEURONソフトウェアを使用して、動きをHoudiniに反映させたり、HoudiniからUnreal Engineにデータを反映させることができます。

下画像は、最初に赤枠内でモーションキャプチャデバイスを装着して動きを付けると、右上のPERCEPTION NEURONソフトウェアに動作が反映されます。
更に、デバイスを通じて、人の動きがPERCEPTION NEURONソフトウェアから右下のHoudini上のスキンジオメトリとスケルトンに動きが反映されます。また、Houdiniでは手振りや足の動きを調整し、調整したデータをUnreal Engineにライブで配信をしています。

また、先ほどと同様に下画像では、モーションキャプチャデバイスを通じて人の動きがPERCEPTION NEURONソフトウェアからHoudiniに反映されていますが、Houdiniでは、上半身に、Kine FX ツールセットのFK Transfer SOPを適用し、下半身にはFull Body IK SOPを使用してデータを処理しています。これにより、重心の移動や腕の交差などの処理を行うことができます。


■MotionClipの追加

新たなコンセプトとして、MotionClipが追加されました。これは、全てのフレームをまとめて扱うことができます。MotionClipを使用することで、現在のフレームとその周囲のフレームを併せて処理することが可能です。例えば、従来のCHOPを使用してアニメーション等を処理していた場合、新たに追加されたMotionClipを使用して操作をすることもできます。

下画像では、Kine FX ツールセットのFBX Animation Import SOPでFBXファイルからジオメトリベースのスケルトンとして、アニメーションをインポートして、Extract Locomotion SOPでロコモーションデータ(平行移動と方向のデータ)を取得します。このSOPにより、相対的なデータを抽出することができます。

また、ノードに表示される緑色の時計アイコンは、データが時間に依存していることを表します。これにより、時間(フレーム)を動かした場合ノードが再計算されます。
下流に接続されているMotionClip Cycle SOPでは、アニメーションにループ処理を適用し、MotionClip Evaluate SOPでは、単一のフレームを評価し、MotionClipを再生させることができます。

MotionClipノードを使用することで、アニメーションシーケンスをまとめて編集し処理することができます。


■MotionClipを使用して2つのアニメーションデータをブレンド

例えば、2つのアニメーションデータをFBX Animation Import SOPを使用してGeometryネットワークに読み込み、それに対してKine FX ツールセットのSkeleton Blend SOPを使用して、キャラクターの上半身のみにアニメーションをブレンドすることができます。

時間情報を基にアニメーションデータをブレンドした結果をMotionClip Evaluate SOPで確認すると、片側の腕のアニメーションが適切に反映されず、動きが崩れ修正が必要な場合があります。

このような場合は、FBX Animation Import SOPの下にTime Shift SOPを接続して、アニメーションの一部をオフセットすることができます。これにより、アニメーションが修正され、正常に両手が上方向にあがるアニメーションを作成することができます。

Kine FXについては以上です。

Kine FXを使用することで、従来のObjectレベルでのアニメーション作業をGeometryレベルで作業をすることができ、毎フレームごとのアニメーションデータを効率的に処理することができます。さらに、ゲームエンジンなどで使用されている、ステートマシンの考え方に基づいたアニメーションを処理する方法が提供されました。
Kine FXは、Houdini18.5からリリースされましたが、今後もアップデートを重ね機能改良を行う予定です。