UE4之材质参数的使用

来源:互联网 发布:防盗网络应用 编辑:程序博客网 时间:2024/05/01 13:51

在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函数设置数值参数

原创粉丝点击