Animation Riggingでキャラがターゲットを見続け上半身も連動する挙動を実装する

キャラクターが対象を見続けて上半身も連動する処理、
昔はUnityがHead Look Controllerってアセット出してたけど現在は削除されてる

FinalIKアセットを使うか、自前で実装するか、アバターマスクでなんかやるかかなーと思ってたけど

現在はAnimation Riggingで実装するのが良さそう?
https://docs.unity3d.com/ja/Packages/com.unity.animation.rigging@1.2/manual/constraints/MultiAimConstraint.html

 

FinalIKは持ってるけど今回はコレつかって実装してみる

 

Package Managerでパッケージマネージャーから
Animation Riggingをインストール

Animatorを付けているモデルを選択

メニューからAnimationRigging>RigSetupを選択

 

対象モデルにRigBuilder、対象モデルの子にRig1というオブジェクトが追加される

Rig1オブジェクトの子供に空のゲームオブジェクトを追加しMulti-Aim Constraintコンポーネントを付ける
(オブジェクト名はaimHeadとした)

 

ConstrainedObjectに3Dモデルの頭部分を指定する

SourceObjectに見続ける対象(カメラとか)を指定する

 

首の向きがおかしい場合

AimAxisとUpAxisを正しく設定する

(これはゲーム開始前に設定する必要がある、実行中に変更しても反映されない)

SourceObjectsも実行中には切り替え不可なため、最初から対象を複数設定しておきweightを変更して切り替える

 

MaxLimitは60くらいに設定

ここまでで頭の動きはOK

 

 

上半身も連動して動くようにする

 

 

Multi-AimConstraintが付いているaimHeadを複製してConstrainedObjectに上半身を設定するだけ。

ただし上半身→頭の順番で設定しないとだめ、逆にするとおかしくなる。

 

頭→上半身の順番にするとこんな感じで目線が合わなくなる

 

 

 

これで上半身も一緒に動いてくれるようになった

 

終了!

 

 

 

 


以下はMulti-AimConstraintとMulti-RotationConstraintを使って上半身を動かそうとして失敗した時のやつ。

デモシーンとかドキュメント見るとMulti-RotationConstraintは指定したオブジェクトをターゲットとして連動して回転するらしいので、上半身用のモノだと勘違いしてた。

https://docs.unity3d.com/ja/Packages/com.unity.animation.rigging@1.2/manual/constraints/MultiRotationConstraint.html

Multi-RotationConstraint

Rig1オブジェクトにもう一つ子オブジェクトを作成してMulti-RotationConstraintコンポーネントを付ける

(mRotation1という名称にした)

ConstrainedObjectに上半身を設定(首は動き過ぎるので設定しない方が良い)

SourceObjectsに頭オブジェクトを設定

 

うごくはうごく

 

ただしMulti-RotationConstraintとMulti-AimConstraintの組み合わせの場合

見続ける対象をカメラにすると顔+上半身で回転が加算反映されてしまってカメラ目線にならない。

 

関連記事




コメントを残す

※コメントは承認後に表示されます。
 コメントを公開されたくない場合、名前の後に「:非公開」とつけてください。