BLOGブログ

2014.10.30UE4UE/ Blueprint

[UE4] CSVデータを扱う方法 CurveTable編

改訂バージョン: Unreal Engine 4.19

今回はCSVデータをCurveTableで扱う方法をご紹介いたします。

CSVデータはExcelで編集も出来るため、Excelでデータを作成してこの方法でインポートすることも可能です。

 

CurveTableはfloat型の値のみしか使うことができませんが、DataTableのように構造体の定義の必要が無く、

データの足りない部分を数種類の方法で自動的に補間してくれる非常に便利な機能です。

 

データ用意

使用するためにはDataTabeとは少し違った形式のCSVデータを用意します。

今回はこのようなデータを用意しました。

hp Parameter.csv

行にはHPや攻撃力などの項目名を入れます。

列の項目には増加していくfloat型の数字を入れます、今回の例ではキャラクタのレベルとして使用します。

記入されていないレベルのHPはUE4が自動的に補間してくれるのでいくつか重要な部分のデータを作成するだけでOKです。

なお、インポートする際に列の数字によって自動で昇順にソートされますので、

CSVデータは列の数字が小さい方から順に作成するように注意してください。

 

 インポート

このファイルを前回記事と同様にContentBrowser上にドラッグ&ドロップでインポートします。

Excel等でCSVデータを開いたままこの動作を行うとインポートに失敗してしまうので注意してください。

今回はImport Asのセレクトボックスの中からCurveTableを選択します。

Choose Curve Interpolation TypeにはConstant, Linear, Cubicの3種類が出てきます。

imp

これはデータの補間方法を選択するセレクトボックスになるのですが、

それぞれでかなり違った値が出てくるので、使用用途に適した選択をする必要があります。

何れかを選んでOKを押すとContentBrowser上にCSVのCurveTableが追加されます。

 

 Constant補間

Constantは一定や定数という意味の通り、間を定数で補間します。

y             cons UE4画面

40以上60未満が一定、60以上80未満が一定、といったように次のデータまで同じ数で補間されていきます。

最大の数を超えるとその先は全て最大の時の値が使われます。

 

Linear補間

いわゆる線形補間というもので、間を直線で補間します。

linear                                  lin UE4画面

 

区間ごとに一定の上昇量で補間するため値はこのような折れ線グラフになります。

最大数以降は一定の値になります。

 

Cubic補間

三次補間です。

cubic                        cub UE4画面

間を曲線で滑らかに補間してくれます。

こちらも最大数以降は一定の値になります。

 

補間の中身を詳しく知りたい方はEngineのコードのInterpCurve.h内のEval関数をご確認ください。

Engineコードの見方についてはこちらをご覧ください。

 

Blueprint操作

取得したデータをグラフで表示してみようと思います。

データを取り扱いたいBlueprintを開いてください、今回LevelBlueprintで解説します。

まず、EvaluateCurveTableRowノードを配置します。

CurveTableの一覧の中に先ほどインポートしたデータがあるので選択します。

RowNameはHPが選択されていると思うのでそのままにします。

これでInXYにCSVデータの列に記入していたレベルの値を入れることで、そのレベルの時のHPをOutXYとして取得することができます。

グラフ表示には以下のような処理を行いました。

blueprintcurvetableline

 

150回ループさせてループのインデックスとインデックス+1をした値でCurveTableからHPの値を取得します。

これらをMakeVectorノードでベクトルに変換し、大きくしすぎたZ成分をVector*Vectorでスケールダウンさせてから

DrawDebugLineノードのLineStartとLineEndにつなぎます。

DrawDebugLineノードはこの2座標間に線を引いてくれるノードです。

LineColorで色の変更、Duretionで表示時間の設定、Thicknessで線の太さを変えることができます。

実行結果はこちら↓

constant_end Constant補間                    linear_end Linear補間                    cubic_end Cubic補間

 

CurveTableの基本的な使い方は以上になります。