Version: 2021.3
言語: 日本語
ゲームオブジェクトのアニメーション化
カーブの編集

アニメーションカーブの使用

プロパティリスト

アニメーションクリップ では、アニメーション可能なプロパティならばすべて、アニメーションカーブ を利用することができます。すなわち、アニメーションクリップでそのプロパティの変化を時系列に制御できます。Animation ビュー (左側) のプロパティリストには、現在アニメーションしているプロパティが表示されます。Animation ビューを DopeSheet モードにすると、各プロパティのアニメーションの値が、単に直線の軌跡のように表示されます。しかし、Curves モードでは、プロパティの値の変化はグラフの線として表示されます。どちらのモードを使用しても、カーブは表示されます。DopeSheet モードでは、簡易化されたデータが表示され、キーフレームが発生したときにだけ表示されます。

Curves モードでは、アニメーションカーブ は色付きのカーブインジケーターとともに表示されます。それぞれの色は、現在プロパティリストで選択されているプロパティを表しています。アニメーションプロパティにカーブを追加する方法については、アニメーションビューの使用 のセクションを参照してください。

アニメーションカーブにカラーインジケーターが表示されています。この例では、緑色のインジケーターが、立方体が弾むアニメーションの、Y 座標のカーブに一致しています。
アニメーションカーブにカラーインジケーターが表示されています。この例では、緑色のインジケーターが、立方体が弾むアニメーションの、Y 座標のカーブに一致しています。

カーブ、キー、キーフレームを理解する

アニメーションカーブ には複数の キー があり、カーブが通過する制御ポイントです。これらのポイントは Curve エディター でカーブ上の小さなひし形で表示されます。1 つや複数の表示されたカーブに キー があるフレームを キーフレーム と呼んでいます。

あるプロパティで、現在プレビューしているフレームに キー がある場合、カーブのインジケーターにはひし形が表示されます。さらに、プロパティリストでも値の隣にひし形が表示されます。

現在プレビューしているフレームで Position.y プロパティに キー があります
現在プレビューしているフレームで Position.y プロパティに キー があります

Curve エディター は、選択されたプロパティのカーブのみ表示します。プロパティリストで複数のプロパティを選択した場合、カーブは一緒に重ねて表示されます。

プロパティを複数選択すると、それらのカーブは Curve エディターで一緒に重ねて表示されます。
プロパティを複数選択すると、それらのカーブは Curve エディターで一緒に重ねて表示されます。

キーフレームの追加と移動

キーフレームボタン をクリックすると、現在プレビューしているフレームに キーフレーム を追加することができます。

キーフレームボタン をクリックすると、現在プレビューしてるフレームに キーフレーム を加えることができます。これによって、現在選択しているカーブのすべてにキーフレームが加えられます。別の方法として、任意のフレームの 1 つのカーブにキーフレームを加えるには、新しく キーフレーム を加えたいカーブの加えたい場所をダブルクリックします。また、キーフレームライン を右クリックして、コンテキストメニューから Add Keyframe を選択して キーフレーム を追加することも可能です。配置した後は、マウスを使って キーフレーム をドラッグして動かすことができます。さらに、一度に複数の キーフレーム を選択してドラッグすることもできます。 キーフレーム を削除するには、選択して Delete を押すか、キーフレーム上で右クリックしてコンテキストメニューから Delete Keyframe を選択します。

アニメーション化できるプロパティ

Animation ビュー を使うと、ゲームオブジェクト の単なる位置、回転、スケールよりもはるかに多くをアニメーション化することができます。コンポーネントマテリアル のプロパティはすべて、アニメーションすることができます。それは独自に作成したスクリプトコンポーネントのパブリック変数さえも可能です。複雑なビジュアルエフェクトや挙動をもつアニメーションでさえ、関連するプロパティに アニメーションカーブ を加えるだけで作成できます。

次の種類のプロパティは、アニメーションシステムでサポートされています。

  • Float
  • カラー
  • Vector2
  • Vector3
  • Vector4
  • Quaternion
  • Boolean

配列はサポートされておらず、構造体や上記以外のオブジェクトも同様です。

Boolean プロパティは、0 の値は False と等しく、それ以外の値は True と等しくなります。

以下は、Animation ビュー を利用できる多くの例の一部です。

  • Light強度 をアニメーション化し、点滅、ちらつき、脈動などを発生させます。
  • ループ再生中の オーディオソースピッチ音量 をアニメーション化して、風の吹く音、エンジン音、水の流れる音を生き生きとさせる一方、サウンドアセットの容量を最小限に抑えます。
  • マテリアルテクスチャオフセット をアニメーション化し、ベルトコンベヤー、軌跡、流れる水、特殊効果などをシミュレーションします。
  • 複数の Ellipsoid Particle Emitter (楕円パーティクルエミッター) の Emit (放出) 状態、Velocity (速度) をアニメーション化して、壮大な花火や噴水を作成します。
  • ユーザー定義のスクリプトコンポーネントの変数をアニメーション化して、時間の経過とともに挙動に変化をもたせます。

アニメーションカーブ を用いてゲームロジックを制御する場合、Unity で アニメーションの再生とサンプリング 方法に注意する必要があります。

回転の補間方法の種類

Unity では回転は内部的に Quaternion (クォータ二オン) で表現されます。Quaternion は .x.y.z および .w の値で構成されています。一般的には、これらの使い方を熟知していないかぎり、手動で変更すべきではありません。その代わりに、回転はたいてい Euler Angles (オイラー角) で操作され、.x.y.z の値がそれぞれの 3 つの軸の周りの回転を表しています。

2 つの回転を補間する場合は、QuaternionEuler Angles の値のどちらかで実行することになります。 Animation ビュー を使用すると、Transform 回転をアニメーション化するときに使用する補間方法を選択することができます。ただし、回転は、どの補間方法を選択しているかにかかわらず、常に Euler Angles で表示されます。

Transform 回転には Euler Angles による補間、あるいは Quaternion による補間を使用できます
Transform 回転には Euler Angles による補間、あるいは Quaternion による補間を使用できます

クォータニオン (Quaternion) 補間

クォータニオン補間は、2 つの回転間の最短のパスに沿って、常に回転間に滑らかな変化を生成します。これにより、ジンバルロックなどの回転補間の乱れを回避することができます。しかしクォータニオン補間は 180 度以上の回転を表すことができません。なぜなら、常に最短のパスを探すという挙動があるためです。(球の表面で任意の 2 点を定めて想像してみてください。その間を結ぶ最短の線は決して球の半分より長くならないはずです) 。                 

クォータニオン補間を使用して180 度より大きい数字の回転値を設定すると、Animation ウィンドウで描かれたカーブは、やはり、180 度より大きい範囲を表しているように見えます。ただし、実際のオブジェクトの回転は最短のパスで行われています。 

クォータニオン補間を使用している場合に 2 つのキーを 270 度離して置くと、クォータニオン補間では逆回転の補間値である、90 度を使用します。マジェンタ色のカーブは、実際にAnimation ウィンドウに表示されるものです。実際のオブジェクトの補間は、この図では黄色の点線で表されています。ただし、実際にエディターでは表示されません。
クォータニオン補間を使用している場合に 2 つのキーを 270 度離して置くと、クォータニオン補間では逆回転の補間値である、90 度を使用します。マジェンタ色のカーブは、実際にAnimation ウィンドウに表示されるものです。実際のオブジェクトの補間は、この図では黄色の点線で表されています。ただし、実際にエディターでは表示されません。

クォータニオン補間を回転に使用する場合、x、y、z のいずれかのカーブのキーか接線を変更すると、他の 2 つのカーブの値も変化します。なぜなら、3 つのカーブはすべて、内部ではクォータニオンで扱われているからです。クォータニオン補間を使用するとき、キーは常にリンクされているため、x、y、z のいずれかのカーブのうち 1 つのカーブの特定のタイミングにキーを作成すると、残り 2 つのカーブにも、その同じタイミングにキーが作成されます。

オイラー角 (Euler Angles) 補間

オイラー角の補間は、たいていの人が作業時に使っています。オイラー角は任意の大きな回転を表すことができ、.x.y.z のカーブは互いに独立しています。オイラー角の補間では、複数軸で同時に回転するときに発生するジンバルロックなどの問題はありますが、一度に 1 つの軸で回転する単純な回転に対しては、直感的に作業できます。オイラー角補間を使用する場合、Unity は内部的に、クォータニオンでベイクします。これは、外部のプログラムから Unity にアニメーションをインポートするときに起こることと同様です。このカーブのベイクは、処理過程で余分なキーを追加する可能性があり、接線の種類が 定数 の場合、サブフレームのレベルでは正確でない場合があることに注意してください。

ゲームオブジェクトのアニメーション化
カーブの編集