如何从虚幻引擎中的蓝图对象访问材质实例变量?

问题描述 投票:0回答:3

我有一个在两种纹理之间变化的纹理材质。这种变化可以通过变量来控制。我已经用该材质制作了一个材质实例,以及一个其中包含对象的蓝图,该 MI 纹理已应用到该对象。我希望通过蓝图事件勾选来更新材料变量参数,但我很难弄清楚如何访问此参数。

有人知道必须在蓝图中做什么来访问参数并更改它们吗?

unreal-engine4 unreal-blueprint
3个回答
1
投票

可以通过创建材质实例然后将引用存储到变量中来在蓝图中访问材质(如果您打算在将来使用它)。

创建材质并通过命名来定义参数后,即可基于该基础材质创建材质实例。这是一项资产,允许通过缓存部分底层管道来快速更新。

完成此操作后,您需要使用

CreateDynamicMaterialInstance
,存储输出,将其设置在网格的相应材质槽中,然后使用
SetParameter
节点(向量、标量等)。

完成此操作后,就可以开始了。

如果基础材质不会改变,您也可以直接从插槽获取实例。


0
投票

可以通过创建材质实例然后将引用存储到变量中来在蓝图中访问材质(如果您打算在将来使用它)。

我认为应该补充一点,在 BP 内,首先通过 Get Material 节点访问材质,然后使用 For Each 循环迭代每个返回的材质。对于每个元素,创建动态材质实例。


0
投票

如何让它与景观材质一起工作

@Fritz 的答案是正确的路径,除非您正在使用景观材质。

这里,至少在UE5中,基础材质必须使用材质参数集合。然后,在从此基础材质创建材质实例后,您可以在参数集合上调用

SetScalarParameterValue
(例如)。由于某种原因,动态材质实例的变化不会影响景观。

另外,风景演员有一个场

"Use Dynamic Material Instance"
,我发现它没有效果。但也许有一个秘密的“正确方法”来使用它。

如何使用参数采集(pc.)

  1. 在内容浏览器中的某处创建一个角色(类型:材质参数集合)
  2. 打开它并添加与蓝图图表应能够修改的内容相对应的命名字段
  3. 添加对此电脑的引用。基材内部

您可以添加一个“静态开关参数”,表示是使用电脑,还是使用普通参数。这使您能够在开发过程中使用材质实例来测试内容。但这个开关必须设置为使用pc,否则蓝图对材质的更改将不会产生任何效果。

进一步的设计说明

在蓝图图表中使用对实际场景演员的直接引用是很混乱的。如果蓝图用于其他角色未就位的地图,或者角色被更改/修改,则可能会发生不好的事情。

因此使用参数集合很有意义,因为它将蓝图逻辑与当前世界的参与者分离。至少在我的书中是这样。

© www.soinside.com 2019 - 2024. All rights reserved.