【UE5】使用基元数据对材质传参,从而避免新建材质实例

在项目中,经常会遇到这样的需求:多个模型(例如 100 个)使用相同的材质,但每个模型需要不同的参数设置,比如不同的颜色或随机种子等。

在这种情况下,创建 100 个实例材质不是最佳选择。正确的做法是通过模型的基元数据向材质传递参数。

这种方法不会因为新建实例材质而产生成本。

最重要的是,相同的模型,相同的材质,不会因为基元数据不同而影响合批。

在操作上StaticMesh和InstancedStaticMesh是有少许区别的。

StaticMesh

先以StaticMesh为例。

创建材质

在流程上,虽然不是必须的,但通常需要先创建材质:

设置变量为基元数据

为材质勾选使用基元数据:

基元数据是一个浮点数组,一个4通道变量,占用了0123四个索引位置

所以第二个变量在勾选基元数据后,需要按顺序填4

自定义基元数据面板可以助你参考index设置

模型设置

将材质赋予模型,在细节面板,就可以看到材质中可以使用的基元数据。

关键一步

可以看到数据后面是+ 号,也就是并未启用。

点击+号,需要将其全部启用,变成有默认值的状态:

这样,你就可以手动为每个模型创建不同材质参数,而并不需要为其新建实例材质了。

在蓝图中设置

搜索基元,就可以看到可以使用的函数

基本上分为两种,一种是使用名字设置,一种是使用index设置

如果是构建函数

要特别强调的是,在构建函数中,要使用可以被序列化的"默认基元数据",这样你的设置才能保存到下次启动项目:


InstancedStaticMesh

在ISM中使用基元数据,要注意的是,ISM组件的基元数据,和ISM组件中实例的基元数据是并存的。

这是组件:

这是实例:

他们是并存的
看实例的基元数据如何实现的,假如ISM有2个实例,每个实例2个参数,那么一共记录为4个,所以实例并不是独立储存了参数

左侧是组件基元数据和之前一样。新增的是右侧的实例基元数据变量节点,除了不能"起名"用法和之前一样:

在蓝图中设置

关键一步

如果你的ISM组件也需要使用基元数据,千万要记得启用index!

实例的基元数据,你可以预设和动态修改:

设置数据相比静态网格体,ISM多了一个InstanceIndex ,为设置基元数据的目标实例。

左侧为组件基元数据,右侧为实例基元数据。

演示

为了展现基元数据不同不影响合批的特性,这里用ISM作为示例。

基元设置

  1. 制作材质,注意组件和实例的基元index是单独计算的:

  2. 选择组件,设置模型和材质,并设置基元数据数组长度1:

  3. 设置实例的基元数据长度3

    等效:

蓝图

红色为设置组件基元数据,给整体随机一个亮度

绿色为实例的基元数据,为每个基元随机一个颜色

效果

技巧

材质

在使用时,组件可以不预先设置材质,甚至模型。此时基元数据是这样的:

显示未声明是不影响实际使用的,但切记需要把可能使用的通道的最大数量的提前开启。

例如所切换的材质中,最复杂的材质需要使用10个基元数据,那么在一开始你就需要开启同样数量的基元数组。

通道使用

通过前面的例子可以看到,基元数据应尽可能压缩索引占用,例如Color的A通道并未使用,却占用了一个位置。

在实际使用中,你可以完全使用浮点类型变量,通过在材质中拆组通道来避免浪费(其实对性能影响微小)

也可以尽可能的打包参数

取决于你的风格

常见用法

提供一些举一反三的思路

  1. 为材质设置随机值
  2. 为每个ISM实例指定不同贴图
相关推荐
上海红同电子1 天前
红同电子线束工厂100问|绝缘护套采购,材质PVC、TPE、PP该如何选型?
数据库·经验分享·职场和发展·产品运营·制造·材质
Solange__2 天前
文旅景区怎么用AI生成3D导览?从航拍采集、地标重建到网页漫游的完整方案
人工智能·3d·语言模型·自然语言处理·材质·贴图·1024程序员节
BugPhysician2 天前
影之刃零首发UE崩溃排查:着色器缓存、虚拟内存与驱动版本
ue5·影之刃零·影之刃零报错·影之刃零进不去·ue崩溃·ue引擎崩溃·ue5引擎崩溃
电子云与长程纠缠4 天前
UE5魂系游戏开发教程05
开发语言·学习·游戏·ui·ue5
fanfan_hongyun4 天前
UE5.1 蓝图调用C++方法
ue5
易知微EasyV数据可视化4 天前
UE5 中接入 GDAL:从vcpkg编译到插件打包
ue5
努力学习的小廉4 天前
UE5入门系列(一):环境搭建.md
ue5
fanfan_hongyun4 天前
【UE5.1 创建C++文件】
c++·ue5
努力学习的小廉4 天前
UE5 入门系列(二):编辑器基础操作速通
ue5·编辑器
Solange__4 天前
AI材质生成、图片贴图和材质扫描怎么选?按5类3D资产比较PBR、可编辑与授权
人工智能·3d·ai·自然语言处理·材质·贴图·游戏策划