接上文,利用Niagara 粒子的特性,来动态生成三维热力图,高程图!
传统的平面热力图已经很清晰的表达出热力的效果了。
但是,在三维引擎中,看起来没有那么的炫酷,那就增加第三个维度Z轴,来让其“看起来”更加科幻(注意:只是看起来)。
补充:niagara 创建动态Mesh相比蓝图来说,“性价比”更高!
老规矩,先上图:
接下来直接跳过创建说重点:
1、Spawn Particles in Grid——网格体渲染器
居然要依据黑白图生成,那么首先就要用规则的在范围内生成长方体,那么网格体就少不了。
通过Spawn Particles in Grid与GridLocation节点的配合,即可在范围内生成规范的网格体粒子。
有了基础粒子后,就可以在材质方向大展拳脚了!(目前没有找到在Niagara引用virtualTexture的方法,所以只能换一种解决思路了)当然,如果是直接使用噪波图的话,就更加方便了,可以直接在Niagara里面进行修改。
2、材质上色及偏移。
然后就是材质的问题,统合上篇文章输出Lerp值,进行缩放与偏移。
UE 实时地形高度检测(一)。利用虚拟纹理(virtualTexture)低成本生成热力图/高度图/等高线。_丶冒泡的博客-CSDN博客
这里不做累赘,直接说拿到lerp值后的事情。感兴趣的可以看我上一篇文章。
大家都清楚,如果要做材质动画的话,就涉及到worldOffset,
我们的需求是:BOX基于轴点向上进行伸长与偏移(在材质内进行缩放偏移来达到同样的效果)。
在材质中。通过轴点 - 顶点世界坐标,* 缩放值 + 偏移值,可以得到以上效果。
//大小及位置偏移
float3 OutWorldOffset = float3(0.f,0.f,0.f);
OutWorldOffset.z = (ObjectScale-1) * (WS - OPP).z + ObjectScale * 50;
return OutWorldOffset;
把Scale 替换成黑白图(及virtualTexture 输出的worldHeight)即可。
可以看到有基本的隆起了,worldHeight *系数 进行放大即可。
10倍效果进行展示
不过现在还是静态的,并没有动态效果,只需要简单增加一个Time 节点就可以有动态效果。
通过sine 曲线及 黑白系数,即可得到这个效果