今回はTimelineで表情を変更する場合の注意についてです。
Timelineでキャラクターの動き等を変更していると「表情」も変更したくなります。例えばちょっとした会話シーンで表情を変更するのは、よくある事です。
Unityでキャラクターの表情を変更するアイディアは3つあります。
- Textureを差し替える
- BlendShapeを使う
- Boneでなんとかする
今回はBlendShapeを使用するケースを想定していますが、Boneで使用した場合も少し関わりがあるかもしれません。
下のように予期しない不思議な表情になる場合は、多分この問題です。
またそれ以外でも少し自分が引っかかった問題について紹介します。
Case 1.表情のキーがセットされない
TimelineでAnimationClipをAnimationTrackに登録しても登録されない…という場合です。
これは正確にはAnimationClipが登録されているが、登録されているように見えないという問題で、キーがAnimationClipの0フレーム目にしか打たれていない場合に発生します。
端的に言えば表情は変化しないのでAnimationClip0フレーム目にしか要らないので、データ節約のためにこのような形を取ることがあります。
解決法は2つで、1つ目が配置後に頑張って引っ張る、2つ目がAnimationClipに少し眺めのキーを打っておくというものです。
どちらでも良いですが、個人的にはキーを2番目の方が良い気がします。*1
Case 2. 表情が変化しない
さて表情のAnimationClipをセットした所ですが、次は「表情が変化しない」という現象が起こるかもしれません。
これはTimelineのAnimation実行順が問題となります。
どうもAnimationTrackは上から順に実行するらしく、上のAnimationClipの動作は下のAnimationClipの動作で上書きされるみたいです。
このため最終的な表情は一番下のOverrideに設定しないと無効化されます。
Case 3. 表情がおかしな感じになる
最後に表情がおかしな感じになる場合です。
例えば表情が一切変化しなる場合や、歯茎をむき出しにするような異常な表情になる場合はこれが当てはまります。
これはTimelineにはWrite Defaultsの機能が無い事が原因です。
WriteDefaultsがあればTimeline起動時の設定を初期設定としてキーを打ってないアニメーションを保管してくれるのですが、Timelineではソレが無い為、キーがなければ値を加算してしまいます。
解決法は単純で、変化しないキーも含めてキーフレームを全て設定しておく事です。特定の表情のキーフレームを明確に設定しておくことで、変な表情になることを回避出来ます。
ただ同時にキーを打ったプロパティは他のAnimationClipから変更できなくなるので、複数の設定を持つ場合は注意が必要です。
*1:特にUnity2017ではコレをマイナス方向に引っ張るとエディターが落ちるというバグが起こっていました。Unity 2018では今の所再現していません