スタジオブロス TECH BLOG

スタジオブロススタッフからの最新ツール情報やチュートリアル・TIPSなどを紹介します

UnrealEngine4でPython リターンズ その3

あけましておめでとうございます。引き続きPythonによるUE4を自動化する解説をしていこうと思います。

今回はFBXの自動インポートをPythonです。年も変わったので最初から説明していきましょう。 (インストールなどはこの連載の初回を参考に)

まず、ウインドウ→デベロッパーツール→PythonConsoleを出します。 右クリックで「ClearLog」で綺麗にします。

一番下の「Enter Pyhton Command」に以下のコマンド入れてみます。 一行ごとにEnterしていきます。

import sys
print(sys.version)

まず、Pythonが正しく動作しているか?バージョンは何かを確認できます。 このUE4-pythonはVer2と3どちらも使えます。Python2.Xはサポートが来年2020年までです。

次に、ウインドウ→PythonEditorから以下のソースを入力します。

import unreal_engine as ue
print('Hello UE4 python やってみよう')

「Execute」で実行します。

PythonConsoleにメッセージが表示されます。「import unreal_engine」でUE4のライブラリインポートし「print」で表示します。ちゃんと2バイト文字もOKです。

では、PyhonでFBXを自動読み込みしてみましょう。

フリー素材「MercedesBenzSLSAMG」をMayaでマテリアルとジョイント設定したシーンをFBXにします。

free3d.com

プロジェクトフォルダ名「MercedesBenzSLSAMG_2019」でWindows10のデスクトップに置いてます。ファイル名は「sls_amg2.fbx」です。

FBXは「scenes」、テクスチャーは「sourceimages」に入ってます。

では、Pythonスクリプトです。

import os.path
from unreal_engine.classes import PyFbxFactory

# FBXファクトリーの設定
fbx_factory = PyFbxFactory()

# パスとファイル名の設定
car_assets_dir = os.path.join(os.path.expanduser('~/Desktop'), 'MercedesBenzSLSAMG_2019/scenes')
car_fbx = os.path.join(car_assets_dir, 'sls_amg2.fbx')

# インポートする、しないのフラグ。全部オフ
fbx_factory.ImportUI.bCreatePhysicsAsset = False
fbx_factory.ImportUI.bImportMaterials = False
fbx_factory.ImportUI.bImportTextures = False
fbx_factory.ImportUI.bImportAnimations = False

# メッシュのスケールを10倍
fbx_factory.ImportUI.SkeletalMeshImportData.ImportUniformScale = 10;

# アセット名とコンテンツブラウザ内のフォルダ自動設定
car_Mesh = fbx_factory.factory_import_object(car_fbx, '/Game/BenzSLS_AMG')

1行目:WindowsなどOSのパスを使えるようにします。

2、5行目:FBXを読み込めるライブラリをインポートします。

8、9行目:FBXがあるディレクトリとファイル名を指定します。

12~15行名:インポートのオプションでPhysicsAsset、マテリアル、テクスチャー、アニメーションのフラグです。今回はまず全部Falseにしてます。

18行目:スケールを10倍にしています。

21行目:保存するフォルダ名を決めます。/Game/というのはコンテンツブラウザのことでその後に書いた文字でフォルダ作成します。

実行すると以下のようにいつものFBXインポートのバーが出ます。

コンソールで経過が判ります。

正しく読み込まれました。フォルダも自動生成します。

マテリアルは設定ありませんが、ちゃんとエレメントは変換されています。

スケルタルメッシュもOKです。

12~15行名をTureにして、全部読み込みにすると・・・

PhysicsAsset、マテリアル、テクスチャー、アニメーションがすべてインポートされます。

以上です。パーツリストからPythonに変換すれば、これで何千というパーツを自動でインポートできます。

ぜひお試しください。