無料UEコンテンツ紹介3「LE Extended Standard Library」

今回は Market Place で無料で手に入れることができる「LE Extended Standard Library」プラグイン(以下、LEプラグイン)について紹介します。

f:id:shuntaendo:20190904120014p:plain
LE Extended Standard Library:コードプラグイン - UE マーケットプレイス


LEプラグインを入れると標準機能を拡張したかなり多くの便利機能をBP上で使用することができます。
C++でしか使えなかった機能や複数機能を組み合わせてラップしたノードなどが追加され、かゆいところに手が届かなかった部分などが改善されます!

数は多いですが1つ1つ紹介していきたいと思います。

#IFDEF 分岐

C++ では「#if マクロ名」とすることで処理を分けられますが、BP ではそのような機能はありません。
LEライブラリでは C++ で分岐処理した関数を BP に公開してくれています。

ちなみに中身は全てこんな形でとても単純です。

f:id:shuntaendo:20191023115031p:plain:w300

・ビルド設定
この関数は標準で欲しい。。プロジェクト毎に用意している方も多いんではないでしょうか。

f:id:shuntaendo:20191023115039p:plain:w350

・プラットフォーム設定

f:id:shuntaendo:20191023115053p:plain:w450


モバイルデバイスの情報取得

バッテリー状態、バッテリー残量、バッテリー温度の取得
※ 現状 Android でのみ動作

f:id:shuntaendo:20191023115203p:plain:w400

音量、ヘッドホンの接続有無の取得
※ 現状 Android でのみ動作

f:id:shuntaendo:20191023115217p:plain:w350

Androidの機器情報取得(メーカー、バージョン、コア数、言語など)

f:id:shuntaendo:20191023115332p:plain:w400


オブジェクトの生成

f:id:shuntaendo:20191023115336p:plain:w300


チームIDの取得/設定

チームIDは AI を作成する際に使用します。

f:id:shuntaendo:20191023115345p:plain:w400


サウンドクラスの音量、ピッチ操作

f:id:shuntaendo:20191023115356p:plain:w400


Latent Action

BP で他の処理よりも遅らせるには Delayノードのような Latentノードを使う方法があります。
(ノードの右上に時計マークが書いてあるノードです)

f:id:shuntaendo:20191023115405p:plain:w200

LEプラグインでは上記の方法に加えて、Latent Action というノードが提供されています。

f:id:shuntaendo:20191023115416p:plain:w500

CreateLatentActionノードで Latent Action Object を生成し、任意のタイミングでアクションを完了(Done)させられます。
下の例ではノードの実行順では WaitTillDone ノードが Done ノードよりも先に実行されますが、PrintString ノードが実行されるのは1秒後です。
このように処理のタイミングをズラすことができます。(扱いには注意)

f:id:shuntaendo:20191023115615p:plain:w500


Base64 変換

Base64 とは64進数を用いて、マルチバイト文字やバイナリファイルを扱うためのエンコード方式です。
LEプラグインでは Base64 から Byte, Base64URL へのエンコード、デコードが可能です。

f:id:shuntaendo:20191024113002p:plain:w400


Bit, Byte 操作

f:id:shuntaendo:20190904123138p:plain:w600

Bit, Byte 操作はプログラマー以外はほぼ触らない機能だと思うので BP にもあまり公開されていない部分ではありますが、LEプラグインではBP上で多くの機能が使えます。

int, float, long, double, string, 16進数 などからの変換ができ、読み込み用、書き込み用のクラスが用意されています。

f:id:shuntaendo:20190904132110p:plain:w240

特にテクスチャからの変換、テクスチャへの変換機能が便利で読み込んだ画像の生データをノード1つでテクスチャに変換できます。
テクスチャからの変換は UTexture2D や USceneCapture2D など複数のクラス専用のノードが用意されています。

f:id:shuntaendo:20190904134428p:plain:w400


ピクセル変換

ピクセルの配列をグレースケール化、テクスチャ化することができます。

f:id:shuntaendo:20191024113814p:plain:w600

グレースケール化には下の計算式が採用されているようです。

f:id:shuntaendo:20191024113940p:plain


動画メディアの読み込み

UE4 に用意されている MediaSoundComponent と LEプラグインで提供されている LoadVideo ノードを使うことで動画メディアの読み込み、再生が可能です。

使用方法はこちらにスクショでまとめられています。
https://public.lowentry.com/#files/LowEntryUE4/ue4/images/tutorials/load_video/

f:id:shuntaendo:20191030174401p:plain

LoadVideo ノードの URL には HTTP/HTTPS もしくは「file://」で始まる動画ファイルへの絶対パス/相対パスを指定する必要があります。
また、テスト用の動画が以下に公開されています。
http://public.lowentry.com/files/test_data/TestVideoMp4.mp4


テクスチャ更新処理

C++でしか呼び出すことができなかった UpdateResource() を BP から呼び出すことができます。
任意のタイミングでテクスチャを更新できます。

f:id:shuntaendo:20191030175518p:plain:w200


SceneCapture2D の FOV 操作

ASceneCapture2D と USceneCaptureComponent2D に対して FOV の操作ができます。

f:id:shuntaendo:20191030175841p:plain:w400


ハッシュ関数操作

ハッシュ関数の生成、ハッシュキャッシュができます。
以下の種類のハッシュ関数に対応しています。SHA-1 が代表的で Git の各コミットの識別にも使用されています。

Pearson, MD5, SHA-1, SHA-256, SHA-512, bcrypt, HMAC


文字列操作の拡張

特殊文字
文章中の改行やタブに使われる「\n」や「\t」といった特殊文字を取得できます。

f:id:shuntaendo:20191030182100p:plain:w400


・文字列の比較

f:id:shuntaendo:20191030182323p:plain:w300


・任意の文字を残したまま削除と置換

f:id:shuntaendo:20191031121243p:plain:w400

Keep Lowercase AZ : 小文字のアルファベットを残す
Keep Uppercase AZ : 大文字のアルファベットを残す
Keep Numbers : 数字を残す
Other Characters to Keep : 任意の文字を残す(1文字ずつ判定されます)


別型同士の比較

Int と Float など型が違うもの同士を比較できます。

f:id:shuntaendo:20191030183617p:plain:w600


任意の小数点で四捨五入、切り上げ、切り捨て

標準の関数でも四捨五入等は可能ですが、LEプラグインで提供されている関数では小数点を指定して四捨五入等が可能です。

f:id:shuntaendo:20191030184049p:plain:w600


配列内の最大最小値取得

String, DateTime, Timespan 型の配列の最大値、最小値の取得ができます。
Int や Float は標準の関数で取得できます。

f:id:shuntaendo:20191030184651p:plain:w600


DateTime 変換

UE4標準の FDateTime を、
「ISO-8601, String, Unix, ローカル時刻」への変換、もしくは
Unix, ローカル時刻」からの変換ができます。(DateTime は UTC

f:id:shuntaendo:20191030185636p:plain:w400


配列のソート

様々な型の配列のソートができます。また、配列のパラメータが参照型の関数も用意されていて便利です。

f:id:shuntaendo:20191030190048p:plain:w600


Frame 指定の Delay

標準の関数では秒指定のみですが、フレーム指定で処理を遅らせられます。

f:id:shuntaendo:20191030190518p:plain:w400


正規表現

正規表現を使って一致した回数を取得したり、一致した文字列を置換したりできます。

f:id:shuntaendo:20191031121343p:plain:w400


クラッシュ

任意のタイミングでエディタをクラッシュさせます。(Assert)

f:id:shuntaendo:20191031121440p:plain


任意の回数分実行できるノード

LEプラグインで提供されている Tick ノードを実行すると Ticks 分 Completed が実行されます。
また、Interval を指定すると指定した分間隔を空けて Completed が実行されます。(Frame or 秒指定)

f:id:shuntaendo:20191031143637p:plain:w400


マウス位置操作

マウス位置の取得、設定、ビューポート上にロックすることができます。

f:id:shuntaendo:20191031143700p:plain:w500


モニターの解像度取得

モニター全体、作業エリア(タスクバーなど除いた範囲)の解像度を取得できます。

f:id:shuntaendo:20191031143709p:plain:w400


ウィンドウ情報の取得

実行中のウィンドウの位置やサイズなどを取得、設定できます。

f:id:shuntaendo:20191031143717p:plain:w500


スプリットスクリーンの操作

ローカル上でプレイヤー数を増やすと画面が分割してスプリットスクリーンになりますが、LEプラグインでは分割方法や分割の有無などを操作できます。

f:id:shuntaendo:20191031143726p:plain:w400


ワールドレンダリングの操作

ワールドレンダリングの有無の取得、設定ができます。4.22時点では標準機能で同様の関数があります。

f:id:shuntaendo:20191031143734p:plain:w400

また、ワールドレンダリングについては過去の記事でも触れています。
shuntaendo.hatenablog.com



クラスの検索

以下のような「/Game」で始まり「_C」で終わるパスを指定するとクラスを取得できます。
/Game/Blueprints/PlayerController.PlayerController_C

f:id:shuntaendo:20191031145745p:plain:w300



思ったより長くなりましたが以上になります!
機能はかなり多く把握するのが大変ですが、とても汎用性が高く便利なプラグインなので活用していきましょう~!