#はじめに
今回はUnrealEngine4のエディタ上でPythonのライブラリのプログラムを記述したいと思います。
プラグインでのライブラリだとnumpyやsckitlearnが入っていないので使える様にする手引きまで今回は扱います(具体的な用途についてはまだ勉強中です)
#環境
UnrealEngine4 4.25
*以下UE4と略します
Python 3.7.0
osはWindowsになります。
#プラグイン
UE4上で起動させ,「Scripting」から「Python Editor Script Plugin」を選択
#Hello World
「ウインドウ」から「アウトプットログ」を表示させておく。既存のunrealライブラリから呼び出します。その際に左下からPythonのコマンドを選択します。
以下のスクリプトを書きます
import unreal
unreal.log("Hello world")
#外部ライブラリのインストール
今回はnumpy,matplotlib,sckitlearnのインストールします。まずはディレクトリはEpic内でPythonにあるディレクトリを探します。今回のosはWindowsなのでコマンドプロンプトで
C:\Program Files\Epic Games\UE_4.26\Engine\Binaries\ThirdParty\Python3\Win64
を見つけて移動します(cd)
そして移動後以下の様にインストールします(pipからだとダメでした)
Python -m pip install numpy
Python -m pip install scikit-learn
Python -m pip install matplotlib
#スクリプト
実際に上記のライブラリを用いて,今回はKmeans法を試します。
人工データを生成し,クラスタを割り当てます。以下のファイルを作成
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
#正規乱数による生成
np.random.seed(0)
a=np.random.randn(40,2)
b=np.random.randn(40,2)+np.array([1,0])
c=np.random.randn(40,2)+np.array([1,1])
#すべてを結合しシャッフル
abc=np.r_[a,b,c]
np.random.shuffle(abc)
#学習
model= KMeans(n_clusters=3)
result=model.fit(abc)
marks=["x","+","*"]
#表示
for i in range(3):
p=[result.labels_[j]== i for j in range(len(result.labels_))]
plt.scatter(abc[p][:,0],abc[p][:,1],marker=marks[i])
plt.show()
#実行
ファイル作成後,UnrealEngineの「ファイル」から実行
以下の様に表示されたら成功
#最後に
Unreal内でのアセット管理などでPythonは有効活用出来るみたいなので,色々リサーチしたいと思います。