Pythonでマテリアル構築を自動化してみよう!

今回は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)

関連記事

  1. LUTを使ったトゥーンシェーダーを作ってみよう

    2021-01-21

  2. Maya Python API 2.0 入門編『最近接頂点の取得』

    2021-05-06

  3. UE4の検索を使いこなそう!

    2021-02-25

  4. 再帰関数を使って末端ジョイントを取得しよう!

    2021-01-08

コメント

ABOUT

テクニカルアーティストの為のまとめサイトです。

本サイトでは、『YouTube ✕ Blog』を中心に
情報発信をしていきます。

また、テクニカルアーティストとしての様々な
ライフハック記事も投稿予定です。

限定情報会員

PATREONでは、限定情報やサンプルファイルの配布も行っています。登録頂けると更新頑張れます。支援の方よろしくお願いします。


免責事項

本ウェブサイト内で公開している全ての情報の有用性や安全性については当方は一切の保証を与えるものではありません。
利用したことによって引き起こる直接および間接的な損害に対して当方は一切責任を負うものではありません。
全て自己責任でご使用ください。

3DCGBOOK出版

BOOTHで技術書を販売利しております。







スポンサー

ページ上部へ戻る