Raspberlyのブログ

Raspberlyのブログ

Unityネタをメインとした技術系ブログです。にゃんこ大戦争や日常なども。そろそろブログタイトル決めたい

【アセット紹介】Realistic Eye Movements でキャラクターの目を自然に動かす【Unity】

今回はアセットの紹介をしていきます。
紹介するのはRealistic Eye Movements
キャラクターの眼球やまぶたを自然に動かすアセットです。

f:id:Raspberly:20211023173608p:plain

f:id:Raspberly:20211023175625p:plain

 

 

お得なセール情報

現在アセットストアでは、ツール系アセットのメガバンドルセールを開催中!
時間も労力も節約できるツールアセットの中でも特に人気のアセットがお得に入手できちゃいます!
詳しくは↓のバナーからどうぞ

f:id:Raspberly:20211023172621p:plain

今回紹介する「Realistic Eye Movements」も対象アセットです。

 

どんなアセット?

キャラクターの目を自然にアニメーションさせるアセットです。
現実の人間のように、眼球の細かい運動や瞬きを簡単に実装できます。
VRにも対応済み。

この使いやすいコンポーネントは、目、頭、まぶたをアニメーション化することで、キャラクターをよりリアルにします。公開された学術研究からの人間の動きのデータを使用して、説得力のある目のアニメーションを作成します。

 

待機状態とかにぴったり!

f:id:Raspberly:20211023171046g:plain

 

 

開発環境

Unity 2020.3.14f1
Realistic Eye Movements ver2.1.3

 

 

インポートの確認

アセットインポート完了時はこんな感じです。

f:id:Raspberly:20211023140711p:plain

デモシーンの確認

RealisticEyeMovementsDemoシーンがデモシーンになっています。
周りを見渡す挙動、カメラを見つめる挙動、ボールを見つめる挙動の3種類が確認できます。

f:id:Raspberly:20211023151533g:plain

 

※Built-in以外のプロジェクトではマテリアルかシェーダーを差し替えないと正常に表示されません

 

 

 

実際に試してみる

実際にキャラクターモデルに適用して、目やまぶたをアニメーションさせてみます。

f:id:Raspberly:20211023171046g:plain

 

 

このアセットはモデルのまぶたの仕組みでセットアップ方法が違います

厳密には以下の3種類です。

・AdobeFuse(Mixamo)、MakeHuman、Autodesk Character Generator、DAZ Studio、ReallusionのCharacter Creator 3、UMAで生成されたキャラクター

・まぶたがボーンによって動くキャラクター

・まぶたがBlendshapeで動くキャラクター

 

 

今回はBlendsharpを使っているモデルで試してみます
使うモデルはUnityChan SSUです。

raspberly.hateblo.jp

 

他の形式のキャラクターモデルを使っている場合はこちらをどうぞ

youtu.be

 

 

コンポーネントのアタッチ

Animatorがアタッチされているオブジェクトコンポーネントを2つアタッチします。LookTargetControllerEyeAndHeadAnimatorの2つをアタッチ。

f:id:Raspberly:20211023163201p:plain

 

EyeAndHeadAnimatorの設定

Setupを開き、EyecontrolをMecanimEyeBonesに、EyelidcontrolをBlendshapesに設定。

f:id:Raspberly:20211023161302p:plain

 

目を開いている状態を保存

引き続きEyeAndHeadAnimatorを設定していきます。
次は目を開いて正面を見ている状態目を閉じている状態目を上に向けている状態目を下に向けている状態の4つを保存します。

 

最初に正面を見ている状態から保存します。
ユニティちゃんの場合最初から正面を見ているので、何もせずインスペクターのSaveボタンを押します。

f:id:Raspberly:20211023161902p:plain

f:id:Raspberly:20211023162105p:plain

 

目を閉じている状態を保存

次に目を閉じている状態を保存します。
Blendshapeの値を変えて目を閉じている状態を作り、EyeAndHeadAnimatorのSaveボタンを押します。

 

ユニティちゃんの場合、UnityChanSSU_DynCol/MeshRoot/Head_DefからBlendshapeにアクセスできます。

f:id:Raspberly:20211023162951p:plain

Head_EyeCloseのスライダーを動かし目を閉じさせます。

f:id:Raspberly:20211023163435p:plain

f:id:Raspberly:20211023163539p:plain

この状態で、EyeAndHeadAnimatorのSaveボタンを押します。

f:id:Raspberly:20211023163608p:plain

これで保存されました。

 

 

目が上を向いている状態を保存

次は目が上を向いている状態を保存します。
目が開いている必要があるので、最初に保存した状態をロードするといいでしょう。

f:id:Raspberly:20211023163834p:plain

f:id:Raspberly:20211023163934p:plain

 

目が上を向いている状態を作るには眼球の角度を変える必要があります。
眼球はEyeAndHeadAnimatorのEyesボタンを押すと、自動的に選択してくれます

f:id:Raspberly:20211023164026p:plain

f:id:Raspberly:20211023164042p:plain

この2つのオブジェクトの角度を調整して上を向いているようにしたら、

f:id:Raspberly:20211023165722g:plain

これまでと同じようにSaveボタンを押します。

f:id:Raspberly:20211023165015p:plain

 

※眼球の向きを変える時、rotationをglobalにしておくといいかも

f:id:Raspberly:20211023165654p:plain

 

目が上を向いている状態を保存

最後に下を向いている状態を保存します。
上を向いている時と同じ要領で眼球の角度を変えて、

f:id:Raspberly:20211023170340g:plain

Saveボタンを押します。

f:id:Raspberly:20211023170008p:plain

 

これで完了です。
最後は正面を向いた状態ロードしておきましょう。(間違って上書きしないよう注意)

f:id:Raspberly:20211023170436p:plain

 

 

シーンを再生してみるとユニティちゃんがまわりをキョロキョロしているのが確認できます。

f:id:Raspberly:20211023171046g:plain

目の動く頻度、スピード、最大角度などはインスペクターから調整できます。

f:id:Raspberly:20211023170646p:plain

 

 

 

特定のオブジェクトを見つめるようにする

次はキャラクターの顔を特定にオブジェクトに向かせます。
これはインスペクターだけではできないので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コンポーネントを紐づけます

f:id:Raspberly:20211025000604p:plain

 

これで完成。
ターゲットとして設定したSphereを常に見つめるようになりました。

f:id:Raspberly:20211025003108g:plain

 

 

目の可動域などはEyeAnd HeadAnimatorから調整できます。

f:id:Raspberly:20211025001331p:plain

 

 

 

まとめ

・Realistic Eye Movementsを使うと、目やまぶたの動きを自然にアニメーションさせることができる

 

 

以上です。

 

 

 

 

 

他のアセットの紹介記事はこちら↓

raspberly.hateblo.jp

 

 

 

※本記事にはAssetStoreアフィリエイトリンクが含まれています。

他、間違っている箇所、わかりにくい所がありましたらコメントにお願いします。