Houdini18.5のモーションリターゲティングを適用しようとした場合、読み込んだアニメーションが正しくターゲットキャラクタに適用されない場合があります。
アニメーションデータにRest Transformが設定されていないことが原因の場合があります。
下記はMIXAMOから取得したアニメーションですが、AttributeをみるとまだRest Transformがありません。
FBX Animation Importの設定を見ると、Outputという部分があり、ここでAnimationとRest Poseを指定することができます。
AnimationはそのFBXに含まれているアニメーションデータですが、Rest Poseはデフォルトのポーズをアニメーションなしで出力します。
このRest Poseのデフォルトのポーズって何だろうと思いましたが、Mayaでいう優先回転角の状態でした。
試しにMIXAMOで出力したアニメーションデータをMayaに読み込み、Prefered Angleを変更して出力、それをHoudiniのFBX Animation Importにロードし、Rest Poseにすると、表示されたポーズはMayaで変更して設定したPrefered Angleでした。
Rest Poseを持っていて、これがそのままRest Transformに設定されるわけではないようです。そこで、このRest PoseをRest Transformに登録します。
アニメーションデータおよびReset Poseのデータを外部データであるFBXと切断されてもいいようにキャッシュします。
アニメーションデータのキャッシュにはstashノードを使用することができます。
Stashはコマンド実行時にノード内の入力モーションをキャッシュ化してから、それをノードの出力として使用します。
ただ、Fbx Animation ImportをStashに接続しても、ビューポートには何も表示されません。
StashノードのStash Inputをクリックするとビューポートにスケルトンが表示されます。
しかし、これは1フレーム分のみでアニメーション全体が保持されません。
そこで、FBX Animation ImportをMotion Clipに接続し、その後、Stashに接続します。
再度、Stash ImputをクリックするとMotion Clipで保存したすべてのフレームデータがキャッシュされます。
キャッシュされたら、Motion Clipとの接続を削除してもキャッシュからデータが生成されます。
これをアニメーションデータとして使用します。
PDGなどで処理を反復して行う場合、Stashをかませる必要はありません。あくまでFBXとのリンクがきれてもデータが保持できるようにしたい場合に使います。
次に2つ目のStashを作成します。
FBX Animation ImportのOutputはRest Poseに設定し、2つ目のStashに接続します。
Stash Inputをクリックしてキャッシュしたら、FBX Animation Importとの接続はきって構いません。
これでアニメーションデータとRest Poseをわけることができました。
Stashを使わない場合、FBX Animation Importを2つ作成し、OutputをAnimationとRest Poseにしておくといいでしょう。
では、この2つを使って、Restore Transformを設定します。Rest TransformはRig Stash Poseから設定することができます。
Stash Animationは、Motion Clip状態なのでアニメーションに戻す必要があります。
Motion Clip Evaluateを接続しアニメーションに戻します。
下記のようにMotion Clip EvaluateとStash Rest Poseを接続します。
左がRig(スケルトン)で右がPose Sourceとなります。
この時にAttributeを確認すると接続したポーズがrest transformとして保存されます。
Rest Transformアトリビュートを持たせることができたら、リターゲットの手順であるRig Match Pose、Map point、Full body IKを接続します。
今度はアニメーションが壊れずターゲットにわたったことがわかります。
そのままBone Deformに結果を渡します。
ちゃんとターゲットにアニメーションがわたりました。
Ericにもしっかりアニメーションリターゲットできました。