未来を創る、テックコミュニティー

代表技術通信~Unityに舞い戻りでVR⑧

草場代表
2020/11/09

こんばんは。代表の草場です。

Unity LearnのIntroduction to 3D Animation Systemsの勉強です。Working with Assets です。

2.2 Editing Animation Clips

1.概要

アニメーションウィンドウでアニメーションクリップを自分で作成して編集します。

2.始める前に

3Dアニメーションシステム入門Unityプロジェクトをダウンロードしておきます。プロジェクトをダウンロードしたら、Unityエディタでプロジェクトを開き、プロジェクトウィンドウでAssets > 2.2 – Editing Animation Clips > Scenes と進み、StreetLampExample をダブルクリックして Scene を開きます。

3.アニメーションクリップのデータの振り返り

Animation Clipsに保存されているアニメーションデータは、バインディングと値の2つの部分で構成されています。このデータに関する重要な情報をおさらいします。
バインディングは、アニメーションの再生中にGameObjectやComponentのどのフィールドを変更するかを示します。
値は、任意のタイミングでフィールドを変更する必要があることを示しています。通常、これらの値は、時間の経過とともに変化するフロート(小数)で、曲線として表現されます。
アニメーションウィンドウには、アニメーションクリップに関連付けられたバインディングと値が表示されます。アニメーションウィンドウを使って、アニメーションクリップのバインディングと値の両方を編集することができます。

4.LightFlickerアニメーションクリップにバインディングを追加する

バインディングを使って、アニメーションクリップにさまざまな変更を加えることができます。LightFlickerアニメーションクリップのLightの色を変更するしてみます。LightFlickerアニメーションクリップに新しいバインディングを追加するには、以下の手順に従います。
1. トップメニューの「ウィンドウ」>「アニメーション」>「アニメーション」を選択し、アセットストアウィンドウの隣にドッキング。
2. ヒエラルキー(階層構造)で、StreetLamp GameObject を選択、アニメーションウィンドウにLightFlickerアニメーションクリップが表示されます。
3. アニメーションウィンドウで、プロパティの追加ボタンをクリックして、新しいバインディングを追加。これで選択範囲がポップアップ表示され、 展開できる折り畳み式の範囲が表示されます。GameObject上には、各コンポーネントごとにひとつの畳み込みがあります。その下には、子のGameObjectごとのfoldoutがあります。
4. Spot Light の子 GameObject フォールドアウトを展開し、次に Light フォールドアウトを展開します。これにより、アニメーションクリップへのバインディングとして追加できる Light コンポーネントのプロパティが表示されます。

5. Color プロパティの右側にある Add (+) ボタンを選択して、バインディングとして追加。子 GameObject の各フォールドアウトの中には、アタッチされたコンポーネントごとのフォールドアウトがあります。子 GameObject のフォールドアウトには Is Active プロパティがありますが、これはルート GameObject には無く、ルートの GameObject を無効にしないようにするためのものです。

5.アニメーションカーブの値を編集する

バインディングを追加すると、アニメーションカーブに 2 つのキーフレームが追加されます。アニメーションクリップの最初と最後の 1 つです。前のステップでライトに色を追加したとき、4つのアニメーションカーブが追加され、それぞれにバインディングが追加されました。アニメーションカーブとバインディングは、R、G、B、Aチャンネルにそれぞれ1つずつあります。

ドープシートモードでは、アニメーションクリップのすべてのカーブのキーフレームが表示されます。
曲線モード(カーブモード)では、各バインディングのアニメーション曲線が表示されます。ただし、 新しく作成されたアニメーションカーブはすべて 1 の値を持っているので、 一本の線にしか見えません。
新しいバインディングのキーフレームはどちらも同じ値を持ちます。この値は、そのプロパティが現在シーンで持っている値に関係しています。
アニメーションカーブの値を手動で変更するには、以下の手順。
1. プレイヘッドの現在時刻のカーブの値を、そのバインディングの右側(バインディングを表すカーブを示す色の前)にあるカーブの値を見つけます。
2. この数字を希望の値に変更します。この数字を変更すると、現在のキーフレームの値が変わります。プレイヘッドの現在の時刻にキーフレームがない場合は、新しいキーフレームが作成され、その値が与えられます。

また、カーブモードでは、以下のいずれかの方法でアニメーションカーブ上で直接キーフレームの値を編集することができます。
キーフレームをクリックしてドラッグし、時間と値を変更、キーフレームを右クリックしてキー編集を選択。

6.新しいアニメーションカーブの値を編集する

アニメーションカーブの編集方法がわかったので、次はライトの色のために作成したアニメーションカーブに変更を加えてます。ここでは、変更のガイドラインをいくつか紹介されています。
4つのカラーアニメーションカーブをすべて編集する必要はありません。
少なくとも1つのカラーアニメーションカーブを編集する必要があります。
編集するアニメーションカーブには、少なくとも3つのキーフレームが必要です。
4つのカラーアニメーションカーブのうち、0:00と1:00にはキーフレームがあるはずです。
アニメーションクリップの他の部分(例えば持続時間など)を変更してはいけません。

7.キーフレームの設定を見直す

キーフレームの設定を見直します。これは、アニメーションウィンドウをカーブモードにした状態で行うのがベストです。アニメーションカーブの値は、前のキーフレームと次のキーフレームの間の補間です。この補間の正確な値は、キーフレームの接線を使って計算されます。各キーフレームには2つの接線があります。

インタンジェント(左側)
アウトタンジェント(右側)

例外は最初と最後のキーフレームです。ループ状のアニメーションを編集する目的で、最初と最後のキーフレームのインタンジェントとアウトタンジェントは互いに接続されています。接線は任意の角度で設定でき、ハンドルをドラッグして調整することができます。

キーフレームのプリセット設定
Unityには、アニメーションカーブを簡単に作成するためのプリセットがいくつかあります。プリセットオプションを見るには、編集したいキーフレームを右クリック、次のようなオプションが表示され、オンオフを切り替えることができます。

Clamped Auto: アニメーションカーブがキーフレームの値を超えず、スムーズに近づくことを意味します。
Auto: レガシーな設定で、Unity 3.xで作成されたアニメーションクリップを扱う場合を除き、代わりにClamped Autoを使用してください。
Free Smooth: 滑らかなカーブを得るための最良の方法です。
Flat: Free Smoothのバリエーションで、接線が正確に水平になります。
Broken:左右の接線が平行ではなく、独立した方向を指していることを意味します。
Free: 壊れた接線のための通常の選択である。
Linear:「ブロークン」のバリエーションで、アニメーションカーブがキーフレームに近づくにつれて、接線が直線になろうとすることを意味します。隣り合う接線が両方とも直線の場合、アニメーションカーブはキーフレーム間の直線になります。
Constant: ブロークンのバリエーションで、アニメーションカーブは次のキーフレームまで前のキーフレームと同じ値を持ち、その時点でそのキーフレームの値を取ります。
Weighted:他の設定に加えて適用することができます。これにより、接線の長さを調整できるようになり、アニメーションカーブをよりコントロールできるようになります。これは上級レベルの設定です。

デフォルトでは、新規に作成されたキーフレームのほとんどは、Clamped AutoまたはFree Smoothに設定されています。新規に作成されたキーフレームは、フラットなアニメーションカーブの場合は「自動クランプ」に、グラデーションの場合は「フリー・スムース」に設定されます。

8.レコードモードを使ったアニメーションの作成

より直感的にアニメーションを作成する方法として、記録モードを使用する方法があります。記録モードがオンになっていると、アニメーションされた GameObject の階層のどの部分に変更を加えても、プレイヘッドの現在の時刻にアニメーションウィンドウに記録されます。これにより、ある時点でいくつかの値を変更し、プレイヘッドを少し動かしてその値を変更することで、ストップモーションアニメーターのように作業することができます。これを繰り返すことで、完全なアニメーションを作成することができます。

9.複数のキーフレームを一度に操作する

キーフレームを編集する際に、複数のキーフレームを一度に移動する必要がある場合があります。これは、キーフレームに何をするかによって、さまざまな方法で行うことができます。キーフレームの選択は、ドープシートモードでも曲線モードでも同じですが、操作方法はモードごとに異なります。

ドープシートモード
ドープシートモードでは、縦軸は値の変化を表しません。選択ボックスをクリックしてドラッグすると、キーフレームが横軸に沿って時間的に移動します。
また、選択ボックスの両側にある青いバーをドラッグして、選択ボックスを水平方向に「拡大縮小」し、キーフレームを近づけたり遠ざけたりすることもできます。

ただし、このようにキーフレームを移動させると、選択後にキーフレームがどのように変化するかという問題が発生します。
キーフレームはそのままにしておくべきでしょうか、それとも選択したキーフレームの変化に合わせて移動するべきでしょうか?

リップル編集
変更に伴ってキーフレームが動くはずの場合、これはリップル編集です。これは、あなたが行った変更がリップル効果を持つためです。一時的にリップル編集を有効にするには、Rキーを押したままにします。長時間有効にするには、コンテクストメニューでリップルを選択します。

曲線モード
ドープシートモードでキーフレームを編集するためのこれらの高度な機能は、曲線モードでも利用できます。カーブモードでは、縦軸が値を表すため、上下移動やスケーリングにも対応しています(ドープシートモードとは異なります)。選択ボックスは両軸で操作できるので、選択したキーフレームを片軸だけで移動させるのは難しいかもしれません。これを簡単にするために、選択ボックスの上部と右側に操作バーがあり、片方の軸に沿ってドラッグできるようになっています。

10.跳ねるボールのアニメーションを編集する

ボールに別のバウンスを追加するします。
1. プロジェクトウィンドウで、2.2 – アニメーションクリップの編集 > シーンを開き、BallExample をダブルクリックしてシーンを開きます。
2. ヒエラルキー(階層構造)で、Ball GameObject を選択。
3. Animation ウィンドウで、Dopesheet または Curves モードを選択。
4. 選択したいキーフレームの上に選択ボックスをクリックしてドラッグ。

5. キーフレームを追加または削除したい場合は、Shiftキーを押しながら、追加または削除したいキーフレームをクリック。これにより、キーフレームが選択されるか、選択したキーフレームから削除されます。
6. Ctrl + C (Windows)を押して選択範囲をコピー。
7. プレイヘッドをキーフレームを移動させたい時間に移動。
8. Ctrl + V (Windows) を押して、新しい時間に貼り付けます。
望む結果を得るためには、コピー&ペーストするキーフレームを決める必要があります。

11.まとめ

アニメーションクリップスに新しいバインディングを追加しました。
アニメーションカーブの値を編集しました。
ドープシートと曲線モードの違いを探りました。
既存のアニメーションクリップの値を操作して、これらが結果のアニメーションにどのように影響するかを理解します。

 

この記事を書いた人
草場代表
エディター