関連ブログ
- [UE4][UE5]開発環境の容量を少しでも減らす 2024.08.14UE
- [UE5] PushModel型のReplicationを使い、ネットワーク最適化を図る 2024.05.29UE
- [UE5]マテリアルでメッシュをスケールする方法 2024.01.17UE
CATEGORY
2014.10.30UE4UE/ Blueprint
改訂バージョン: Unreal Engine 4.19 |
今回はCSVデータをCurveTableで扱う方法をご紹介いたします。
CSVデータはExcelで編集も出来るため、Excelでデータを作成してこの方法でインポートすることも可能です。
CurveTableはfloat型の値のみしか使うことができませんが、DataTableのように構造体の定義の必要が無く、
データの足りない部分を数種類の方法で自動的に補間してくれる非常に便利な機能です。
使用するためにはDataTabeとは少し違った形式のCSVデータを用意します。
今回はこのようなデータを用意しました。
行にはHPや攻撃力などの項目名を入れます。
列の項目には増加していくfloat型の数字を入れます、今回の例ではキャラクタのレベルとして使用します。
記入されていないレベルのHPはUE4が自動的に補間してくれるのでいくつか重要な部分のデータを作成するだけでOKです。
なお、インポートする際に列の数字によって自動で昇順にソートされますので、
CSVデータは列の数字が小さい方から順に作成するように注意してください。
このファイルを前回記事と同様にContentBrowser上にドラッグ&ドロップでインポートします。
Excel等でCSVデータを開いたままこの動作を行うとインポートに失敗してしまうので注意してください。
今回はImport Asのセレクトボックスの中からCurveTableを選択します。
Choose Curve Interpolation TypeにはConstant, Linear, Cubicの3種類が出てきます。
これはデータの補間方法を選択するセレクトボックスになるのですが、
それぞれでかなり違った値が出てくるので、使用用途に適した選択をする必要があります。
何れかを選んでOKを押すとContentBrowser上にCSVのCurveTableが追加されます。
Constantは一定や定数という意味の通り、間を定数で補間します。
40以上60未満が一定、60以上80未満が一定、といったように次のデータまで同じ数で補間されていきます。
最大の数を超えるとその先は全て最大の時の値が使われます。
いわゆる線形補間というもので、間を直線で補間します。
区間ごとに一定の上昇量で補間するため値はこのような折れ線グラフになります。
最大数以降は一定の値になります。
三次補間です。
間を曲線で滑らかに補間してくれます。
こちらも最大数以降は一定の値になります。
補間の中身を詳しく知りたい方はEngineのコードのInterpCurve.h内のEval関数をご確認ください。
Engineコードの見方についてはこちらをご覧ください。
取得したデータをグラフで表示してみようと思います。
データを取り扱いたいBlueprintを開いてください、今回LevelBlueprintで解説します。
まず、EvaluateCurveTableRowノードを配置します。
CurveTableの一覧の中に先ほどインポートしたデータがあるので選択します。
RowNameはHPが選択されていると思うのでそのままにします。
これでInXYにCSVデータの列に記入していたレベルの値を入れることで、そのレベルの時のHPをOutXYとして取得することができます。
グラフ表示には以下のような処理を行いました。
150回ループさせてループのインデックスとインデックス+1をした値でCurveTableからHPの値を取得します。
これらをMakeVectorノードでベクトルに変換し、大きくしすぎたZ成分をVector*Vectorでスケールダウンさせてから
DrawDebugLineノードのLineStartとLineEndにつなぎます。
DrawDebugLineノードはこの2座標間に線を引いてくれるノードです。
LineColorで色の変更、Duretionで表示時間の設定、Thicknessで線の太さを変えることができます。
実行結果はこちら↓
CurveTableの基本的な使い方は以上になります。