Hi, I would like to swap my current constant node to the material function node which is named"CommonAttribs_MF", in the every selected materialss’ material editors. And here’s the script but it doesn’t work.
How should I fix this script?
import unreal
def swap_constant_node_to_material_function():
# Get the selected materials from the Content Browser
selected_materials = unreal.EditorUtilityLibrary.get_selected_assets()
# Get the Editor Level Library
editor_level_lib = unreal.EditorLevelLibrary()
# Iterate over the selected materials
for material_asset in selected_materials:
if isinstance(material_asset, unreal.Material):
# Load the material
material = material_asset
# Open the material in the material editor
editor_level_lib.open_editor_for_asset(material)
# Get the material editor instance
material_editor_instance = unreal.MaterialEditingLibrary.get_singleton().get_editor_instance()
if material_editor_instance:
# Get all nodes in the material editor graph
graph_nodes = material_editor_instance.get_all_nodes()
# Iterate over the nodes and find the constant nodes
for node in graph_nodes:
if isinstance(node, unreal.MaterialExpressionConstant):
# Create a new Material Function node
material_function_node = material_editor_instance.create_new_node(unreal.MaterialExpressionFunction, node.pos_x, node.pos_y)
material_function_node.set_function_entry("CommonAttrib_MF")
# Disconnect the links from the constant node
material_editor_instance.disconnect_material_node_outputs(node)
# Connect the links to the Material Function node
material_editor_instance.connect_material_node_outputs(node, material_function_node)
# Remove the constant node from the graph
material_editor_instance.remove_node(node)
# Save the changes to the material asset
material_asset.save_package()
# Close the material editor
editor_level_lib.close_all_asset_editors()
# Print a message indicating the completion of the script
print("Constant node swapped with Material Function node in selected materials.")
# Call the function to execute the swapping
swap_constant_node_to_material_function()
My goal is to achieve this below so if you have alternate suggestion that will also be great help for me : Change multiple selected materialss’ emmisive color value at once which is connected to Multiply node’s Output. Multiply node’s A input is connected to Texture node’s RGB Output and B input is connected to constant node. Also, the texture node’s RGB Output is connected to the main material node’s Base Color Input as well.