UE4之材质参数的使用
2017-07-29 12:47
2943 查看
在UE4中想要在代码中动态改变材质的某些参数,可通过创建动态材质实例来获取指定材质参数的材质,然后将该材质实例赋给模型,以改变贴图和粗糙度为例
1、在编辑器中新建材质,这里的材质为NewMaterial,创建在Content目录,加入需要修改的参数的材质节点
2、在材质节点上点击鼠标右键,选择菜单项“Convert to parameter”,将材质节点转为参数节点,并命名参数,如图
3、材质创建完成,可以在代码中加载该材质并创建实例
调用该函数每次都会创建一个新的实例,如果只想在原实例的基础上修改参数,则可以获取材质并转成UMaterialInstanceDynamic类,然后调用SetTextureParameterValue和SetScalarParameterValue函数,SetTextureParameterValue函数设置贴图参数,SetScalarParameterValue函数设置数值参数
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函数设置数值参数
相关文章推荐
- ue4 3dui材质参数修改
- ue4中使用顶点绘制材质
- UE4:C++中使用材质
- UE4材质编辑器 - 如何使用折射
- ue4 材质实例开发参数丢失问题
- <a>标签使用onclick(this)来传递参数
- scala学习之路:4.for循环递归等函数的使用与多参数的传递
- 解决JavaScript中使用$.ajax方式提交数组参数
- 使用JavaScript获取URL参数
- Stream、WshShell、WshUrlShortcut对象及Shell.Application的参数与使用
- linux多线程创建时使用类成员函数作为参数
- 使用undo_retention参数与UNDO表空间GUARANTEE功能避免ORA-01555错误
- 关于form表单同时使用POST和GET传递参数说明
- [原创]在ObjectDataSource中使用自定义Web控件提供查询参数
- [Scala函数特性系列]——使用命名参数
- 讲解python参数和作用域的使用
- 使用SpringAop 验证方法参数是否合法
- 使用UE4实现HTC Vive设备的简单操作
- stdarg.h 可变参数宏的使用
- shell脚本中的grep命令参数使用方法介绍(转载)