改訂バージョン: Unreal Engine 4.19 |
UE4でカーブを扱うにはMatineeやTimelineを使う方法がありますが、Matineeはレベルに依存し、
Timelineは作成したBlueprintに依存します。
今回は、どこからでも参照できるデータとして扱うことのできるCurveアセットについてご紹介していきます。
1.Curveアセットの作成
Content Browserを右クリックして「Miscellaneous/Curve」を選択します。

すると以下の3種のCurveが出てくるので目的に沿ったものをクリックすることで作成完了です。

2.Curveアセットの種類
・Curve Float

Floatの値ひとつのみを編集することができます。横が時間軸、縦が値になっています。
・Curve Vector

X・Y・Zの3つの値を同時に編集することができるCurveアセットです。
Xは赤、Yは緑、Zは青で表示されます。
・Curve Linear Color

LinarColorを編集できるCurveアセットです。Red/Green/Blue/Alphaの4値を編集することができます。
色は下のバーでプレビューすることができます。
3.Curveの編集

・キーの追加
グラフ上で右クリックをし、Add keyを選択することで新たなキーを追加することができます。
・既存キーの編集
すでに配置してあるキーをドラッグ&ドロップすることで位置を変えることができます。
この際、③のSnappingを選択しておくとTime SnapやValue Snapを単位として編集することができます。
上記⑤の数値を編集することでも編集が可能です。
・指定の成分のみ編集
④の鍵のマークをクリックすることで、その成分を固定することができます。
編集したい値のみ鍵を外しておくといいでしょう。
・表示/非表示切り替え
④の目のマークをクリックすることで線分の表示非常時の切り替えができます。
・補間方法の切り替え
②の設定により補間方法を切り替えることができます。
この補間方法は、設定したキーから次のキーまでの補間方法を決定します。設定したキーが最後のキーであった場合は、どの値を入れても変更されません。
Auto/User/Breakを選ぶと接線の向き(tangent)を指定することができます。
Autoは自動計算でそれらしい補間がなされますが、値の変化量が大きいと局所的に異常な値が出ることがあるので、その場合はUserやBreakを使います。
UserとBreakはtangentを自分で設定できます。
Linearは線形の補間が行われます。
Constantは、次のキーになるまで値が常に変更されなくなります。
なお、Add Keyでキーを置いたときはデフォルトでLinearがつかわれます。
・一括編集
「Ctrl+クリック」で複数選択ができ、「Ctrl+Alt+ドラッグ」で範囲選択することができます。
これらで選択したきーはまとめて補間方法を変えることができます。
4.Blueprintで使う方法
Curveを使用したいブループリントを開きます。
次に変数を追加します。ここでValue Typeとして「CurveFloat/CurveLinearColor/CurveVector」の中から使用したいものを選びます。
変数を用意したら一度Compileボタンをクリックしてコンパイルします。
すると、CurveのDefault Valueを設定できるようになるので、そこに使いたいCurveを設定します。
次に、用意した変数を、Blueprint上にGetで配置します。ピンを伸ばすことでCurveにかかわる関数を呼び出すことができます。
・Get ( Float / Linear Color / Vector ) Value

In Time時点での値を取得します。
・Get Time Range

Min Time : データの中で最も左にあったキーのTimeを返す
Max Time : データの中で最も右にあったキーのTimeを返す
・Get Value Range

Min Value : データの中で最も下にあったキーのValueを返す
Max Value : データの中で最も上にあったキーのValueを返す
Blueprintでの使用例はこんな感じです。

初めから終端まで時間経過に沿ってデータをゲットし自身のLocationを変更する。終端まで読むと以降は終端の値のまま。

こちらは終端までこちらは終端まで読むとまた頭からループして読まれるBlueprint。
使い方やデータ次第でいろいろなことができるアセットなので、皆さんも使ってみてはいかがでしょうか。