UE4 简单的修改顶点色(Vertex Color)

大哥们帮我说下,UE4 简单的修改顶点色(Vertex Color)
最新回答
贫尼想借色

2025-06-27 11:25:21

通过新需求的调整,我选择了利用UE4的Niagara粒子系统来实现粒子特效接触材质后材质变化的效果。起初,尝试在材质中通过粒子碰撞位置与world position的计算影响范围,但直接使用draw aterila al to render target方式并未达到预期效果。

鉴于此,我转向了修改VertexColor的思路。Niagara系统在与蓝图通信上确实十分便捷,我创建了FX_GlueWater系统并生成绿色的Sprite。借助BP_GlueWater蓝图管理这些Particle。

Niagara系统能够将Particle信息传递给蓝图,实现Particle与材质的互动。对于CPU粒子,虽有输出数据在前几帧后出现错误的问题,但在GPU粒子上的表现较为稳定。

实现过程中,使用了BI_VertexColorInflunce接口,以兼容StaticMesh和SkeletalMesh。BP_GlueWater蓝图创建了BI_VertexColorInflunce的数据变量,用于存储场景中的实例。

在Niagara粒子碰撞触发回调后,执行Receive Point Effect操作。此操作在BP_Mesh蓝图中实现,需要额外的C++代码处理顶点位置和颜色查询。

尽管代码相对粗糙,但能有效实现粒子特效与材质互动的预期效果。对于Vertex Color的修改,参考引擎源码MeshPaintModeHelpers可以进一步优化实现过程。