テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

【Unity】Timelineのアニメーションに微調整を加える(Generic編)

DCCからアニメーションをUnityに持ってきてから、Timeline上のアニメーションを微調整したいといったケースがあります。例えばドラゴンが噛み付く位置が少しズレているだとか、棍棒を叩きつける位置が微妙に違う等。特にオブジェクトの配置をゲーム上で行っている場合、DCCツールとUnityエディターを行き来するのは少し面倒そうです。

ということでTimeline上で微調整してみます。なお、今回はGeneric用のアプローチについてで、Humanoid用は次回です。

1. Timeline上でアニメーションを再生する

まず最初にGenericなモデルをタイムライン上でアニメーションしている状態です。普通にアイドルモーションしています。

この状態はボーンの位置がTimelineのAnimationClipで決められているので、首を動かしたり少しズラしたりすることは出来ません。

f:id:tsubaki_t1:20190508223205g:plain
ドラゴンのアイドルモーション

2. モーションを編集しやすくする

ボーン構造を少しズラします。ただAnimationClipを編集するのは正直行いたくないので、FKベースでアニメーションの動きを少しオーバーライドします。
この最初の手順は、リグを視覚的に見やすくします。

Aniamtion RiggingBone Rendererコンポーネントを使用して、ボーン構造をSceneView上に表示します。

メッシュのボーン構造(動かすとモデルが変形する、OptimizedGameObjectで非表示になるGameObject)をBoneRendererのTransformsにドラッグ&ドロップすれば、ボーン構造が視覚的に確認出来るようになります。また、ボーン構造それ自体を選択しやすくなり、編集しやすくなります。

f:id:tsubaki_t1:20190508223918j:plain

f:id:tsubaki_t1:20190508224040g:plain

3. アニメーションをオーバーライドする

Timeline上のアニメーションをオーバーライドします。

  1. AnimationTrackを右クリックしてAdd Override Trackを選択
  2. レコードボタンを押してレコード開始
  3. 動かしたいタイミングでキーフレームを登録

f:id:tsubaki_t1:20190508224552g:plain

これでTimeline上でアニメーションを少し編集出来ますが、少し問題があります。

4. オーバーライドしたアニメーションの範囲を限定する

上の手順でアニメーションを編集した場合、編集した内容が最初から最後まで反映されっぱなしになります。特定の瞬間だけ上書きしたいので、これは望ましくありません。

なのでアニメーションの範囲を限定し、ついでにオーバーライドするアニメーションが既存のアニメーションに自然につながるようにします。

  1. AnimationTrackでConvert to clip trackを選択
  2. 変換したAnimationClipを選択
  3. Ease in durationEase out durationに0以外を設定

f:id:tsubaki_t1:20190508225315g:plain

これでGenericなキャラクターの動きを微調整出来ます。

感想

実際には完全オーバーライドよりお「+N°回す」的な方が多いかもしれません。そういったものはLateUpdateで補正するなり、色々と。

なおこのアプローチの本質は「Genericモーションを作って上書き」なので、Humanoidの場合は別のアプローチが必要になります。それは次回。

関連

今回使用したモデル

assetstore.unity.com