今回はアセットの紹介をしていきます。
紹介するのはRealistic Eye Movements。
キャラクターの眼球やまぶたを自然に動かすアセットです。
お得なセール情報
現在アセットストアでは、ツール系アセットのメガバンド
時間も労力も節約できるツールアセットの中でも特に人気のアセットがお得に入手できちゃいます!
詳しくは↓のバナーからどうぞ
今回紹介する「Realistic Eye Movements」も対象アセットです。
どんなアセット?
キャラクターの目を自然にアニメーションさせるアセットです。
現実の人間のように、眼球の細かい運動や瞬きを簡単に実装できます。
VRにも対応済み。
この使いやすいコンポーネントは、目、頭、まぶたをアニメーション化することで、キャラクターをよりリアルにします。公開された学術研究からの人間の動きのデータを使用して、説得力のある目のアニメーションを作成します。
待機状態とかにぴったり!
開発環境
Unity 2020.3.14f1
Realistic Eye Movements ver2.1.3
インポートの確認
アセットインポート完了時はこんな感じです。
デモシーンの確認
RealisticEyeMovementsDemoシーンがデモシーンになっています。
周りを見渡す挙動、カメラを見つめる挙動、ボールを見つめる挙動の3種類が確認できます。
※Built-in以外のプロジェクトではマテリアルかシェーダーを差し替えないと正常に表示されません
実際に試してみる
実際にキャラクターモデルに適用して、目やまぶたをアニメーションさせてみます。
このアセットはモデルのまぶたの仕組みでセットアップ方法が違います。
厳密には以下の3種類です。
・AdobeFuse(Mixamo)、MakeHuman、Autodesk Character Generator、DAZ Studio、ReallusionのCharacter Creator 3、UMAで生成されたキャラクター
・まぶたがボーンによって動くキャラクター
・まぶたがBlendshapeで動くキャラクター
今回はBlendsharpを使っているモデルで試してみます。
使うモデルはUnityChan SSUです。
他の形式のキャラクターモデルを使っている場合はこちらをどうぞ
コンポーネントのアタッチ
Animatorがアタッチされているオブジェクトにコンポーネントを2つアタッチします。LookTargetControllerとEyeAndHeadAnimatorの2つをアタッチ。
EyeAndHeadAnimatorの設定
Setupを開き、EyecontrolをMecanimEyeBonesに、EyelidcontrolをBlendshapesに設定。
目を開いている状態を保存
引き続きEyeAndHeadAnimatorを設定していきます。
次は目を開いて正面を見ている状態、目を閉じている状態、目を上に向けている状態、目を下に向けている状態の4つを保存します。
最初に正面を見ている状態から保存します。
ユニティちゃんの場合最初から正面を見ているので、何もせずインスペクターのSaveボタンを押します。
目を閉じている状態を保存
次に目を閉じている状態を保存します。
Blendshapeの値を変えて目を閉じている状態を作り、EyeAndHeadAnimatorのSaveボタンを押します。
ユニティちゃんの場合、UnityChanSSU_DynCol/MeshRoot/Head_DefからBlendshapeにアクセスできます。
Head_EyeCloseのスライダーを動かし目を閉じさせます。
この状態で、EyeAndHeadAnimatorのSaveボタンを押します。
これで保存されました。
目が上を向いている状態を保存
次は目が上を向いている状態を保存します。
目が開いている必要があるので、最初に保存した状態をロードするといいでしょう。
目が上を向いている状態を作るには眼球の角度を変える必要があります。
眼球はEyeAndHeadAnimatorのEyesボタンを押すと、自動的に選択してくれます。
この2つのオブジェクトの角度を調整して上を向いているようにしたら、
これまでと同じようにSaveボタンを押します。
※眼球の向きを変える時、rotationをglobalにしておくといいかも
目が上を向いている状態を保存
最後に下を向いている状態を保存します。
上を向いている時と同じ要領で眼球の角度を変えて、
Saveボタンを押します。
これで完了です。
最後は正面を向いた状態ロードしておきましょう。(間違って上書きしないよう注意)
シーンを再生してみるとユニティちゃんがまわりをキョロキョロしているのが確認できます。
目の動く頻度、スピード、最大角度などはインスペクターから調整できます。
特定のオブジェクトを見つめるようにする
次はキャラクターの顔を特定にオブジェクトに向かせます。
これはインスペクターだけではできないのでScriptから指定する必要があります。
以下のEyeLookat.csを作成し、
using UnityEngine; using RealisticEyeMovements; public class EyeLookat : MonoBehaviour { public GameObject m_Target; [SerializeField] LookTargetController m_LookTargetController; void Start () { m_LookTargetController.LookAtPoiDirectly(m_Target.transform); } }
EyeAndHeadAnimatorやLookTargetControllerと同じオブジェクトにアタッチし、
向かせたいオブジェクトとLockTargetControllerコンポーネントを紐づけます。
これで完成。
ターゲットとして設定したSphereを常に見つめるようになりました。
目の可動域などはEyeAnd HeadAnimatorから調整できます。
まとめ
・Realistic Eye Movementsを使うと、目やまぶたの動きを自然にアニメーションさせることができる
以上です。
他のアセットの紹介記事はこちら↓
※本記事にはAssetStoreアフィリエイトリンクが含まれています。
他、間違っている箇所、わかりにくい所がありましたらコメントにお願いします。