在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->SetTextureParameterValu