UE4之材质参数的使用

在UE4中想要在代码中动态改变材质的某些参数,可通过创建动态材质实例来获取指定材质参数的材质,然后将该材质实例赋给模型,以改变贴图和粗糙度为例

1、在编辑器中新建材质,这里的材质为NewMaterial,创建在Content目录,加入需要修改的参数的材质节点

UE4之材质参数的使用_第1张图片

 

2、在材质节点上点击鼠标右键,选择菜单项“Convert to parameter”,将材质节点转为参数节点,并命名参数,如图

UE4之材质参数的使用_第2张图片

 

3、材质创建完成,可以在代码中加载该材质并创建实例

UMaterialInterface* GetDynamicMaterialByParam(UTexture* Texture,float Roughness)
{
	static UMaterialInterface* TemplateMaterial = LoadObject(nullptr, TEXT("/Game/NewMaterial"));//父材质
	if (TemplateMaterial == nullptr)
	{
		return nullptr;
	}
	UMaterialInstanceDynamic* MaterialInstance = UMaterialInstanceDynamic::Create(TemplateMaterial, nullptr);//创建动态材质实例
	if (MaterialInstance)
	{
		//设置材质参数
		MaterialInstance->SetTextureParameterValue(TEXT("TextureParam"), Texture);
		MaterialInstance->SetScalarParameterValue(TEXT("Roughness"), Roughness);
	}
	return MaterialInstance;
}

 

调用该函数每次都会创建一个新的实例,如果只想在原实例的基础上修改参数,则可以获取材质并转成UMaterialInstanceDynamic类,然后调用SetTextureParameterValue和SetScalarParameterValue函数,SetTextureParameterValue函数设置贴图参数,SetScalarParameterValue函数设置数值参数

你可能感兴趣的:(Unreal,Engine)