今回はPythonを使ってマテリアルの中身を自動構築してみました!
割とテクスチャパラメーター作って、繋ぐ動作ってよくやりますよね。
テクスチャパラメーター作って、ベースカラーつないで・・・
テクスチャパラメーター作って、 メタリックつないで・・・
テクスチャパラメーター作って、 ラフネスつないで・・・
これ、面倒くさくないですか?
Pythonならすぐ自動化できます!自動化しちゃいましょう!
※ UE4.26を利用しています。UE4においてPythonは実験的機能です。自己責任でご利用ください。
管理人がYouTubeで解説!
今回作ったサンプルコード
# coding: utf-8
import unreal
# コンテントブラウザーから選択したアセットを取得する
editor_util = unreal.GlobalEditorUtilityBase.get_default_object()
assets = editor_util.get_selected_assets()
# 選択アセットの中からマテリアルのみ取得する
materials = unreal.EditorFilterLibrary.by_class(assets, unreal.Material)
for material in materials:
""" ---------------------------------------------------------------------
Base Color
---------------------------------------------------------------------"""
# TextureSampleParameter2Dノードを作る
texturesample = unreal.MaterialEditingLibrary.create_material_expression(
material,
unreal.MaterialExpressionTextureSampleParameter2D,
-200.0,
0.0
)
# パラメーターの名前を変更する
texturesample.set_editor_property("parameter_name", "Base Color Texture")
# TextureSampleParameter2Dをベースカラーに繋ぐ
unreal.MaterialEditingLibrary.connect_material_property(texturesample, "rgb", unreal.MaterialProperty.MP_BASE_COLOR)
""" ---------------------------------------------------------------------
Specular
---------------------------------------------------------------------"""
scalarparam = unreal.MaterialEditingLibrary.create_material_expression(
material,
unreal.MaterialExpressionScalarParameter,
-200.0,
200.0
)
unreal.MaterialEditingLibrary.connect_material_property(scalarparam, "", unreal.MaterialProperty.MP_SPECULAR)
scalarparam.set_editor_property("parameter_name", "Specular Level")
""" ---------------------------------------------------------------------
Occlusion Roughness Metallic (Substance Painterから出力されたRGBマスク想定)
---------------------------------------------------------------------"""
texturesample = unreal.MaterialEditingLibrary.create_material_expression(
material,
unreal.MaterialExpressionTextureSampleParameter2D,
-200.0,
400.0
)
texturesample.set_editor_property("parameter_name", "AO Rough Mtl Textures")
texturesample.sampler_type = unreal.MaterialSamplerType.SAMPLERTYPE_LINEAR_COLOR
unreal.MaterialEditingLibrary.connect_material_property(texturesample, "r", unreal.MaterialProperty.MP_AMBIENT_OCCLUSION)
unreal.MaterialEditingLibrary.connect_material_property(texturesample, "g", unreal.MaterialProperty.MP_ROUGHNESS)
unreal.MaterialEditingLibrary.connect_material_property(texturesample, "b", unreal.MaterialProperty.MP_METALLIC)
""" ---------------------------------------------------------------------
Normal
---------------------------------------------------------------------"""
texturesample = unreal.MaterialEditingLibrary.create_material_expression(
material,
unreal.MaterialExpressionTextureSampleParameter2D,
-200.0,
600.0
)
texturesample.sampler_type = unreal.MaterialSamplerType.SAMPLERTYPE_NORMAL
texturesample.set_editor_property("parameter_name", "Normal Texture")
unreal.MaterialEditingLibrary.connect_material_property(texturesample, "rgb", unreal.MaterialProperty.MP_NORMAL)
コメント