64 lines
2.2 KiB
Python
64 lines
2.2 KiB
Python
import unreal
|
|
|
|
|
|
MATERIAL_FOLDER = "/Game/Agrarian/Characters/Materials"
|
|
CHARACTER_PROXY_MATERIALS = {
|
|
"M_AGR_CharacterProxy_Workwear_Male": {
|
|
"color": unreal.LinearColor(0.23, 0.20, 0.15, 1.0),
|
|
"roughness": 0.88,
|
|
},
|
|
"M_AGR_CharacterProxy_Workwear_Female": {
|
|
"color": unreal.LinearColor(0.20, 0.24, 0.18, 1.0),
|
|
"roughness": 0.88,
|
|
},
|
|
}
|
|
|
|
|
|
def ensure_character_proxy_materials():
|
|
unreal.EditorAssetLibrary.make_directory(MATERIAL_FOLDER)
|
|
asset_tools = unreal.AssetToolsHelpers.get_asset_tools()
|
|
created = []
|
|
|
|
for asset_name, spec in CHARACTER_PROXY_MATERIALS.items():
|
|
asset_path = f"{MATERIAL_FOLDER}/{asset_name}"
|
|
material = unreal.EditorAssetLibrary.load_asset(asset_path)
|
|
if not material:
|
|
material = asset_tools.create_asset(asset_name, MATERIAL_FOLDER, unreal.Material, unreal.MaterialFactoryNew())
|
|
if not material:
|
|
raise RuntimeError(f"Could not create character proxy material: {asset_path}")
|
|
|
|
base_color = unreal.MaterialEditingLibrary.create_material_expression(
|
|
material, unreal.MaterialExpressionConstant3Vector, -420, -120
|
|
)
|
|
base_color.set_editor_property("constant", spec["color"])
|
|
unreal.MaterialEditingLibrary.connect_material_property(
|
|
base_color, "", unreal.MaterialProperty.MP_BASE_COLOR
|
|
)
|
|
|
|
roughness = unreal.MaterialEditingLibrary.create_material_expression(
|
|
material, unreal.MaterialExpressionConstant, -420, 80
|
|
)
|
|
roughness.set_editor_property("r", spec["roughness"])
|
|
unreal.MaterialEditingLibrary.connect_material_property(
|
|
roughness, "", unreal.MaterialProperty.MP_ROUGHNESS
|
|
)
|
|
|
|
unreal.MaterialEditingLibrary.recompile_material(material)
|
|
created.append(asset_path)
|
|
|
|
unreal.EditorAssetLibrary.save_loaded_asset(material)
|
|
|
|
return created
|
|
|
|
|
|
def main():
|
|
created = ensure_character_proxy_materials()
|
|
if created:
|
|
for asset_path in created:
|
|
unreal.log(f"Created MVP character proxy material: {asset_path}")
|
|
else:
|
|
unreal.log("MVP character proxy materials already exist.")
|
|
|
|
|
|
main()
|