Houdini18.5を使用してロードしたアニメーションをサイクル可能なアニメーションに変更します。
まず、Transformで位置を修正します。これは行わなくてもよい操作です。
ただ、Rig attrib VOPやwrangle(更新されたローカルトランスフォームを自動的に計算します)の外で、ジョイント(Pまたはtransformアトリビュート)のワールドトランスフォームに対する操作を行う場合は、一致するローカルトランスフォームを取得するために、computetransformノードを使用してローカルトランスフォームを計算しなければならないことに注意してください。
ということで、Compute Transformを追加します。
ModeをCompute Local from Worldに変更します。
このユーティリティノードは、ローカル変換からのポイントのワールドスペース変換を更新するか、現在のワールドスペース変換からのポイントのローカル変換を再計算します。階層内のポイントまたはポイントのセットで localtransform アトリビュートを直接変更する場合、このノードを使用してジオメトリ上のワールド空間トランスフォームを更新することができます。
そして、次にMotion Clipノードを追加します。
このノードは、スケルトンアニメーション(例:FbxAnimImportから)を入力として受け取り、与えられたフレーム範囲とサンプルレートを使用して、入力アニメーションの各フレームを評価して保存します。
出力は、パックプリミティブのリストで構成されます。最初のプリミティブには、与えられたレストフレームで評価されたスケルトントポロジーが含まれています。残りのプリミティブはそれぞれキャッシュされたフレームを表し、各ジョイントの位置を表すポイントのリストを含みます。
次にMotion Clip Cycleを接続します。
Cycle Afterを5に設定し5回アニメーションに繰り返します。
Blend Start to Endを有効にします。サイクルの最後と最初のブレンドが可能になり、クリップをシームレスにループさせることができます。
このままだと同じ場所でアニメーションを繰り返すだけなので、Locomotionタブでサイクル設定を変更することができます。
Locomotionタブをクリックし、LocomotionをCompute Locomotionに設定します。
これは、MotionClipのロコモーション(移動能力)を決定し、それを循環させるために使用されるメソッドです。Compute Locomotionに設定すると、Locomotion Jointで指定したジョイントによりMotionClipのロコモーションは計算されます。
ここではPelvisを設定したので、腰を元に計算が行われます。
次にサイクルのつなぎ目をどのように位置、回転であわせるのか設定します。
ここでは、PelvisをXとZで合わせました。
次にBlendです。
Blendタブでブレンド方法を設定します。ここではOverlapを選択したので、各サイクルを前のサイクルとオーバーラップさせます。Blend shapeでブレンド関数の形状をEase Inにしました。Blend Framesはブレンディングが適用されるフレームの数です。
これで5サイクル分のシームレスなアニメーションが生成されました。
最後にMotion Clip Evaluateを接続します。
これを接続することでフレームが割り当てられ、再生が可能になります。
これを再度Bone DeformのDeform Point Transformに接続することで
スキニングデータのアニメーションを更新することができます。