Unity2018.1.5f1
Windows10
□
今回はユニティちゃんアセットに付属している表情のアニメーションを使ってみました。
■まずアセットのサンプルを見てみる
FaceUpdateを見てみる
ユニティちゃんアセットには以下の3つのSceneがあります。
・ActionCheck
・ARPoseTest
・Locomotion
それらで表情を替えるのは全て「FaceUpdate」スクリプトが使われています。
Project > UnityChan > Scripts > FaceUpdate
その中を見て気になるのはこちらの関数です。
public void SetLayerWeight(int layerIndex, float weight);
どうもlayerIndexがAnimatorControllerのレイヤーの数で、weightがレイヤーに寄せる比重の数値のようです。
FaceUpdateではマウス左クリックを押している時は表情は替わり、話すとweightが1から0に向かっていくようになっています。
そしてこのようにInspectorから配列に表情のアニメーションを登録しています。
AnimatorControllerを見る
次に付属のAnimatorControllerを見るのですが、3つともFaceレイヤーがあり、その中に乱雑にStateが置かれています。
Faceレイヤーの歯車マークをクリックするとこのような画面が出ます。
Maskの「face only mask」はアニメーションを顔だけに出すものです。
BlendingのOverrideはアニメーションを上書きします。
Syncにチェックを入れるとBase Layerと同期し、同じStateで別のアニメーションを入れられます。
ユニティちゃんの表情の種類
Project > UnityChan > FaceAnimation
こちらに12種類あります。
■疑問を確かめる
Q.なぜFaceUpdateのInspectorとAnimatorControllerの両方に表情のアニメーションを入れているの?
スクリプトのInspectorにアニメーションを登録しておけばAnimatorControllerにはいらないのではないかと思いました。
でも試してみると表情は替わりません。
スクリプトで指示するためにスクリプトに設置し、AnimatorControllerでアニメーションを実行するということでしょうか。
Q.Maskにface only mask入れないとどうなるの?
試してみたら入れなくても表情出ました。
もっと色んなアニメーションやレイヤーと併用すると大事になるのかもしれません。
あるいは入れておかないとより下のレイヤーのアニメーションが表に出るということでしょうか。
Q.SetLayerWeight(int layerIndex, float weight)のweightを減らすとどうなるの?
weightの値によって表情の変わり具合が変わります。
weight = 1f
weight = 0.7f
weight = 0.5f
weight = 0.3f
そしてweight = 0fだといつものユニティちゃんの表情になります。
スポンサーリンク
■ユニティちゃんに表情とポーズをつける
スクリプトを書く
さて今度は試しに表情とポーズを同時に替えてみます。
まずユニティちゃんを出してください。
Project > UnityChan > Models > unitychan
次にスクリプトを書きます。
Project > Create > C# Script
次は表情とポーズを同時に出すスクリプトを書きます。
名前は「FaceAndBody」です。
AnimatorControllerを設定する
Project > Create > Animator Controller
次はAnimatorControlleに表情とポーズのアニメーションをセットします。
名前は「FBAnime」です。
まずはLayersをクリックし、目のマークの下にある+マークをクリックします。
そして「Face」と入力してクリックでFaceレイヤーができます。
そして使いたい表情を適当にドラッグ&ドロップしましょう。
Project > UnityChan > FaceAnimation
次はポーズをセットします。
Project > UnityChan > Animations
そこのunitychan_ARpose1とunitychan_ARpose2の三角マークをクリックすると開いてPoseアニメーションが出てきます。
それを適当に5つ選んで今度はBase Layerに放り込みましょう。
Inspectorを設定する
FaceAndBodyとFBAnimeをそれぞれユニティちゃんにセットします。
次にFaceAnimeとBodyAnimeのSizeを5にしてクリック。
出てきた欄に表情とポーズのアニメーションをそれぞれセットします。
AnimatorControlleにセットしたのと同じものでないと機能しません。
さてこれで無事動いたでしょうか?
WASDZキーで操作します。
□
今回はこれで終わりです。
お疲れさまでした。
この作品はユニティちゃんライセンス条項の元に提供されています
■関連記事
【UnityC#講座】ユニティちゃんでもっとAnimator Controllerを上手く使いたい
【UnityC#講座】3D人型モデルを三人称視点で動かす【ユニティちゃん】
【UnityC#講座】AnimatorControllerを使いまわす【AnimatorOverrideController】
【UnityC#講座】AnimatorControllerの使い方
【UnityC#講座】ユニティちゃんたちをドラクエっぽく一列に移動や順番変更させる【List、for文、NavMeshAgent】
スポンサーリンク