0
点赞
收藏
分享

微信扫一扫

【UE4】创建材质机器实例

那小那小 2022-03-11 阅读 80
CCFpython

【UE4】创建材质机器实例

import unreal

mat_folder='/Game/Materials'


def createMat():
    mat_name="Master_Material"
    texture_name="/Game/Textures/Dog"
    asset_tools = unreal.AssetToolsHelpers.get_asset_tools()
    if not unreal.EditorAssetLibrary.does_directory_exist(mat_folder):
        unreal.EditorAssetLibrary.make_directory(mat_folder)

    master_mat = asset_tools.create_asset( mat_name, mat_folder, unreal.Material,unreal.MaterialFactoryNew())

# Temporary textures
    temp_base = unreal.EditorAssetLibrary.find_asset_data(texture_name).get_asset()

# Base Color
    b_color_node = unreal.MaterialEditingLibrary.create_material_expression(master_mat,
                                                                            unreal.MaterialExpressionTextureSampleParameter2D,
                                                                            -384, 200)
    b_color_node.texture = temp_base

# Connect new parameter nodes to material property
    unreal.MaterialEditingLibrary.connect_material_property(b_color_node, "RGB",unreal.MaterialProperty.MP_BASE_COLOR)

# Save Master Material
    unreal.MaterialEditingLibrary.recompile_material(master_mat)
    unreal.EditorAssetLibrary.save_asset(mat_folder + mat_name, only_if_is_dirty=False)


# Create material instance
    mat_inst_name = "MI"
    mat_inst_path = mat_folder+mat_inst_name
    if not unreal.EditorAssetLibrary.does_directory_exist(mat_inst_path):
        unreal.EditorAssetLibrary.make_directory(mat_inst_path)
    mat_inst = asset_tools.create_asset(mat_inst_name, mat_inst_path, unreal.MaterialInstanceConstant,unreal.MaterialInstanceConstantFactoryNew())
    unreal.MaterialEditingLibrary.set_material_instance_parent(mat_inst, master_mat)
    unreal.EditorAssetLibrary.save_asset( mat_inst_path, only_if_is_dirty=False)

举报

相关推荐

0 条评论