UnrealEngine4でPython リターンズ その6

今週はテクスチャーをインポートの2回目です。
前回はカラーテクスチャーでしたが、ノーマルマップやラフネス、メタリックなどのテクスチャーの場合です。

いつもの車は使ってないので、UE4マーケットプレイスでおなじみ『Infiltrator』の建物のテクスチャを使います。


Mayaシーンだとこんな感じです。

テクスチャーはこの2枚です。左がORMテクスチャーで右がノーマルマップです。
ORM とは複数のチャンネルを単一のテクスチャーにまとめたもので例えば赤チャンネルはオクルージョン、緑チャンネルはラフネス、青チャンネルはメタリック、アルファに透明度など当てはめます。
これによりテクスチャーの枚数を減らして処理速度をアップできます。
Substanceツール類なら簡単にできます。

さてスクリプトです。

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

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


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

# ノーマルマップ ファイル名の設定
Building_Alpha_n_tga = os.path.join(car_assets_dir, 'Infil1_Building_Alpha_LOD_N.TGA')
# 保存先のフォルダ指定(なければ作成〉
Building_Alpha_n = texture_factory.factory_import_object(Building_Alpha_n_tga, '/Game/Building_Alpha')

# ORMテクスチャ ファイル名の設定
Building_Alpha_orm_tga = os.path.join(car_assets_dir, 'Infil1_Building_Alpha_LOD_M.TGA')
Building_Alpha_orm = texture_factory.factory_import_object(Building_Alpha_orm_tga, '/Game/Building_Alpha')

# SRGBをOff
Building_Alpha_n.SRGB = False
Building_Alpha_orm.SRGB = False

実は最後の2行だけが新命令で、ノーマルやラフネスをSRGBをオフにする命令です。

実行すると、読み込まれた後にSRGBをオフにします。

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がマテリアル名です。簡単ですね。

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

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