本記事は下記のサイトを参考に作成しています。
https://www.sidefx.com/ja/tutorials/game-tools-skinning-converter/
ツールを使用するにはHoudini Game Dev Toolsのインストールが必要です。
Game Dev Toolsのインストールに関しては下記をご参照ください。
https://support.borndigital.co.jp/hc/ja/articles/115001527973
Game Dev Toolsが最新になっていない場合は、Game Development ToolsetシェルフのUpdate Toolsetボタンを押して最新版(2017年12月6日時点では1.6)にしてください。
Skinning Converterはトポロジ変更のないでフォームメッシュシーケンスをボーンベースアニメーションにコンバートするHoudini Digital Asset(HDA)です。ユーザは、ユーザが必要なの結果を得ることを可能にする2つのパラメータを制御することが可能です。
Direct Conversion
デフォームするメッシュシーケンスがあり、それをボーンベースアニメーションに変換する場合は、単にツールの最初の入力に接続するだけです。 インターフェイスは、希望結果を得るために微調整用の2つのパラメータを提供します。
グローバルセッティング
Convert to Bonesボタンは入力メッシュシーケンスを変換します。
ユーザーは、ベイクするフレーム範囲を変更することができます。デフォルトはフレーム範囲の開始終了に設定されています。
キャプチャ方法は、Biharmonic Capturing(バイハーモニックキャプチャ)またはProximity Capture.(近接キャプチャ)を使用するように構成できます。高品質なキャプチャのためには、Proximity CaptureよりもBiharmonic Capturingを使用することをお勧めします。ただし、Proximity Captureを使用すると、キャプチャ処理の速度を向上させることができます。
キャプチャフレームは、キャプチャポーズを決定するためにどのフレームが使用されるかを決定します。 最初のフレームを使用することをお勧めします。
Max Bone Influencesは影響を受ける可能性のあるボーンの数をコントロールしますす。 値が大きいほど結果は滑らかになりますが、エンジンのオーバーヘッドも増加します。
ボーン位置の制御
Bone Placement Controlタブでは、骨の配置を生成する2つの方法から選択できます。 UniformとAdaptiveがあります。Uniformは骨をメッシュ上に均一に分配するだけです。 これは、迅速な結果が必要な場合に便利です。 詳細を保存したい特定の領域を持たないシーケンスを扱う場合、これが最善の方法です。
Adaptiveはメッシュシーケンスのモーションを分析し、与えられたルールセットに基づいて最も重要と思われる領域に骨密度を集中させます。 (Area Deformation、Curvature、Velocity)。ユーザは、「Primary」ボーンスライダを使用して、フォーカスエリア内の骨の数を制御することができます。
入力ボーン
このツールでは、2番目の入力からカスタムの骨位置を入力することもできます。 これにより、骨の配置場所を決定するためのカスタムメソッドを構築することができます。 ツールは指定されたキャプチャフレームでトランスフォームをロックします
ボーンの描画
このツールはまた、メッシュ上にペイントしたボーンを渡すことで非常に正確な配置を得ることができる、本当に便利な機能を備えています。ネットワーク内のツールを選択し、Enterキーを押してペインティングモードにします。 ツールは下部にストロークを表示します。ストロークは削除することもできます。 このモードを終了するには、Escキーを押すだけです。
エラーの視覚化
[Error Visualisation]タブでは、入力メッシュシーケンスと一致しないトランスフォーム結果の領域をすばやくデバッグできます。 緑色は同一、黄色はほぼ同じ、赤色はオフを意味します。
Converted Outputフィールドは変換された出力メッシュを参照し、2つの方法のいずれかを使用してソースと比較されます。Maximum Error( 最大誤差)およびAccumulated Error(累積誤差)。Maximumは、任意の時点におけるすべてのフレームの最大誤差を表示します。 カラーリングは、指定した誤差許容値に基づいて行われます。これにより、変換の正確さを設定することができ、ツールはどのくらい近いのかを表示します。このツールは、メッシュにカラーリングするだけでなく、これらの値を格納するアトリビュートも返します。 つまり、改善プロセスを自動化できます。
Accumulated error(累積誤差)は、指定された許容誤差に基づいて、ソースと結果の間のすべてのポイントの差を累積します。 再度ワールドユニットです。
実践
HoudiniでClothシミュレーションを適用します。
Skin ConverterはSOPのHDAです。
ClothシミュレーションのDOPではなく、それをジオメトリに適用したGeoノード内に適用します。
Skin ConverterとするとGameDev Skinning Converterを作成することができます。
Clothシミュレーションの結果をSkin Converterに接続すると、少し計算が行われ下記のようにボーンが配置されます。
最初の入力には変形しているメッシュ、2つ目の入力にはカスタムボーン位置、3つ目はベースアニメーションに重ねて合成するための別のアニメーションを入力することができます。
デフォルトはUniform Placementになっているので、メッシュ状に均一に骨が配置されています。
Adaptive Placementに変更します。均一に配置されるのではなく、メッシュの動きを計算しより多く動く部分に骨が多く配置されます。
Influence Radiusを小さくすると、計算ポイントの影響範囲も小さくなります。影響がない部分が黒くなっています。
Adaptive解析方法は3つ用意されています。
Area Deformation Basedは領域変形の大きさ
Curvature Basedは曲率の変化の大きさ
Velocity Basedは速度の変化の大きさ
を元にヒートマップを作成しています。
Primary Boneが配置されていない場所があったとして
Secondary Bones Scalarを追加するとその場所にセカンダリボーンをいれることができます。
またはボーンのない部分をクリックすることでボーンをペイントで追加することができます。
下記の紫色のボーンがペイントで追加したボーンになります。
Direct ConversionのConvert to Bonesボタンをクリックすると骨アニメーションへの変換が始まります。
コンバートが終了するとSkininncConversion~といったサブネットワークが作成されます。
中を確認するとボーンとジオメトリ
さらに上記にあるgeo1ノード内に入ると、ウェイト計算が行われていることがわかります。
タイムスライダをスクラブするとジョイントアニメーションが行われていることがわかります。