您的位置:首页 > 产品设计 > UI/UE

UE4之材质参数的使用

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

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



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



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函数设置数值参数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: