Skell_VR  
                (Skell VR)
               
                 
                 
              
                  
                    August 2, 2020,  7:18pm
                   
                   
              1 
               
             
            
              How to change material instance parameter by Python? 
I want to when I excecute Python,my material instance parameter can auto change
 This is my python code but it’s not work 
import unreal
@unreal.uclass () 
class GetMaterialInstanceConstant(unreal.MaterialInstanceConstant): 
pass 
@unreal.uclass () 
class GetEditorProperty(unreal.MaterialInstanceConstant): 
pass 
@unreal.uclass () 
class GetParameterInfo(unreal.MaterialInterface): 
pass
MaterialParameterInfo=GetParameterInfo 
print(MaterialParameterInfo)
Diffuse_Main_Map_Brightness=True
def get_scalar_parameter_value(Diffuse_Main_Map_Brightness): 
return float(2.0)
 
             
            
               
               
              1 Like 
            
            
           
          
            
            
              import unreal
editor_util = unreal.EditorUtilityLibrary()
material_util = unreal.MaterialEditingLibrary()
selected_assets = editor_util.get_selected_assets()
# if len(selected_assets) == 1:
    # selected_assets[0] ...
for asset in selected_assets:
    if asset.get_class().get_name() == "MaterialInstanceConstant":
        material_util.set_material_instance_scalar_parameter_value(asset, "Diffuse Main Map Brightness", 42) 
             
            
               
               
               
            
            
           
          
            
            
              Is there a way to change a 2dtexture parameter?  EG:
editor_util = unreal.EditorUtilityLibrary()
material_util = unreal.MaterialEditingLibrary()
selected_assets = editor_util.get_selected_assets()
# Texture 
flipbookTexture = "/Game/Content/Flipbook/14x11"
for asset in selected_assets:
    if asset.get_class().get_name() == "MaterialInstanceConstant":
        material_util.set_material_instance_texture_parameter_value(asset, "FlipBookSprite", flipbookTexture)
 
Which gives this error:
Traceback (most recent call last):
  File "c:\Users\DirkTeucher\OneDrive - GDS Group\Desktop\Python Unreal Engine\Change Parameter.py:38", line 38, in <module>
TypeError: MaterialEditingLibrary: Failed to convert parameter 'value' when calling function 'MaterialEditingLibrary.SetMaterialInstanceTextureParameterValue' on 'Default__MaterialEditingLibrary'
  TypeError: NativizeProperty: Cannot nativize 'str' as 'Value' (ObjectProperty)
    TypeError: NativizeObject: Cannot nativize 'str' as 'Object' (allowed Class type: 'Texture')
>>>
 
             
            
               
               
               
            
            
           
          
            
            
              right now flipbookTexture is the path, not the asset itself.  That’s why it’s saying it can’t convert a str
you need to change it to this:
flipbookTexture = editor_util.load_asset("/Game/Content/Flipbook/14x11")
 
your code helped me solve my issue, hopefully this helps you!
             
            
               
               
              1 Like 
            
            
           
          
            
              
                jiaqiXQQ  
                (jiaqiXQQ)
               
              
                  
                    November 19, 2024,  6:30am
                   
                   
              6 
               
             
            
              it supposes to be unreal.load_asset(“path to tex”), editor_util.load_asset seems to report error