UnrealEngine4でPython リターンズ その5

今週はテクスチャーをインポートしてみましょう。

早速プロクラムです。

import os.path
# テクスチャ関連のライブラリ設定
from unreal_engine.classes import TextureFactory
texture_factory = TextureFactory()

# パスとファイル名の設定(Mayaプロジェクトsourceimages)
car_assets_dir = os.path.join(os.path.expanduser('~/Desktop'), 'MercedesBenzSLSAMG_2019/sourceimages')


# テクスチャが上書きされることを保証
texture_factory.OverwriteYesOrNoToAllState = 2

# テクスチャファイル名の設定
interior_base_color_tga = os.path.join(car_assets_dir, 'interior_lod0.tga')
# 保存先のフォルダ指定(なければ作成〉
interior_base_color = texture_factory.factory_import_object(interior_base_color_tga, '/Game/BenzSLS_AMG/Textures')

tire_base_color_tga = os.path.join(car_assets_dir, 'tire(3).tga')
tire_base_color = texture_factory.factory_import_object(tire_base_color_tga, '/Game/BenzSLS_AMG/Textures')

1行目:OS周りの操作をするライブラリのインポート
3、4行目:テクスチャを操作するライブラリ設定
7行目:Mayaのsourceimageフォルダの指定
11行目:テクスチャが既にあった場合の上書き設定
14~19行目:テクスチャファイル指定してインポートし、コンテンツブラウザのTexturesフォルダを作成して作成する。


2階前の連載と同じデスクトップにあるMayaプロジェクトのテクスチャを読み込んでます。

スプリプト実行でTextureフォルダを作成します。

その中にテクスチャが自動で読み込まれています。
これを繰り返せば、大量のテクスチャを自動で更新可能です。

UnrealEngine4でPython リターンズ その4

今週はマテリアルの自動設定を行います。

前回FBXのインポートでマテリアルとテクスチャーを読み込まないPythonスクリプトを実行したところから再開です。

FBXに設定してあるマテリアルやテクスチャーを読み込めば済む話ですが、一度Mayaで設定する手間が発生します。またコンフィグレータなど追加カラーなどの場合は手動で作るのも手間です。

一回目の連載でもやっているのですが、今回は違う方法で行います。

実際にSLSは21エレメントのマテリアルがあるのですが、実験で3つだけ作ってみます。

from unreal_engine.classes import MaterialFactoryNew
material_factory = MaterialFactoryNew()
material_blades = material_factory.factory_create_new('/Game/BenzSLS_AMG/M_Tire')
material_body = material_factory.factory_create_new('/Game/BenzSLS_AMG/M_Body')
material_blades = material_factory.factory_create_new('/Game/BenzSLS_AMG/M_interior')

1、2行目:マテリアル設定のためのライブラリのインポートと設定
2~5行目:マテリアルの新規作成。BenzSLS_AMGがフォルダ名で、M_Bodyがマテリアル名です。簡単ですね。

実行するとマテリアルが作成されます。

次回はテクスチャーをインポートします。

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にします。
プロジェクトフォルダ名「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に変換すれば、これで何千というパーツを自動でインポートできます。
ぜひお試しください。