Animation Riggingを使って、座る高さや足の位置を調節してみました。
椅子を用意
椅子のモデルを用意しました。
キャラクターに座らせてみると、椅子とおしりの間に隙間ができます。
キャラクターの高さを調節すると足が埋まります。
Rigとコンストレイントを設定
Animation Riggingを使って、足が埋まらないようにしてみます。まずキャラクターのルートの子として空のゲームオブジェクトを作り、「Rig」コンポーネントを追加します。
Animatorコンポーネントが付いている、キャラクターのルートに「Rig Builder」コンポーネントを付け、「Rig Layers」にRigを追加します。
Rigの子に空のゲームオブジェクトを作り、「Two Bone IK Constraint」コンポーネントを付けます。これで右足を調節します。
Two Bone IK Constraintの「Tip」に右足のボーンをアタッチします。
コンポーネントの右上のコンテキストメニューで「Auto Setup from Tip Transform」をクリックします。
これで、残りのボーンがアタッチされ、ターゲットとヒントのゲームオブジェクトも自動で設定されます。
足の位置を調節
プレイモードでキャラクターを椅子に座らせてみます。右足のターゲットがCubeのエフェクターで可視化されています。
これを動かすと足の位置が調節され、それに応じて太ももまでのボーンも動きます。
ヒントのゲームオブジェクトはSphereで表示されています。左右に動かすと膝が開いたり閉じたりします。
同じコンストレイントを左足にも設定します。
座高のコンストレイント
Rigの下に座高を調節するための新しい空のゲームオブジェクトを作り、「Multi-Position Constraint」コンポーネントを付けます。
Multi-Position Constraintの「Constrained Object」にルートのボーンをアタッチしました。さらに子として空のゲームオブジェクトを作り、「Source Objects」に追加しています。
エフェクターを設定
シーンビューで座高のターゲットを選択し、右下の「AR」をクリックします。
プラスボタンをクリックすると、ターゲットにエフェクターが付きます。
オーバーレイの「Shape」でエフェクターの形状を選択できます。
座る位置を動かす
座高のターゲットを上下に動かすと座る高さを変更できます。
前後にも動かせます。
アニメーションを調節
プレイモードでキャラクターを座らせて、シーンビューなどを見ながら、ターゲットやヒントを動かしてアニメーションを調節します。
ターゲットやヒントの位置をコピーして、プレイモードを終了した後にペーストします。
アニメーションでウェイトを設定
Rigコンポーネントの「Weight」を0にするとコンストレイントがすべて無効になります。各コンストレイントごとにウェイトを設定することもできます。
ウェイトを座るアニメーションで変更して、座るアニメーションの途中からウェイトを0から1まで徐々に増加させます。
FBXファイルに含まれているアニメーションは「Read-Only」なので編集できません。
なので、Projectウィンドウでこれを複製します。複製したアニメーションをキャラクターのアニメーターコントローラーのステートにアタッチします。
これでアニメーションにキーフレームを追加できます。
Rigコンポーネントのウェイトだけを変えると途中で足が少し埋まりました。
座高のコンストレイントのウェイトも個別にアニメーションさせました。