UE4 交互雪 学习笔记

首先创建:

一个蓝图,一个材质,一个Render Target 

A就是在一个范围内中的,中点B上,在范围0.8倍的A范围内外加0.1的外部弱化为返回结果,结果内部返回值为1,外部返回值为0,用于绘制部分玩家行走而画的轨迹

材质模块:

下面是世界坐标转换UV的材质逻辑


蓝图:

和材质同步,世界场景位置转化为UV的位置只需要除以2000

在世界中画玩家位置的痕迹

如何计算屏幕位置:用玩家位置转化成UV位置,再乘以分辨率即可变成屏幕左上角的位置,再减去画笔大小的一半,即可在玩家的中心位置进行绘制玩家轨迹

效果如图:


让范围跟到玩家动(全世界都支持画轨迹)

首先声明位置和大小,通过这两个值动态控制其位置

创建一个材质函数,将世界位置的任何位置都支持一个Location对应其UV 

原理图如上

然后将函数替代之前的世界位置转化UV位置(M_Snow)

既然材质的位置转换UV位置的方法变了,那么蓝图的也要相应的变化,不然不能互相转化出正确的位置:

然后制作一个可以显示的范围用于观看:

材质:

将材质赋给测试用的Plane里面

最后在构造内将之位置和大小初始化

效果如下:


 

将位置信息全部每帧更新,让画板一直追随着玩家,那么就可以在任何地方去绘制轨迹,绘制轨迹时需要有像素偏移

这里需要对像素进行对齐,不然画出来的图像不清晰 

所以在材质里面绘制偏移:

偏移过后,由于不想要范围以外的颜色,则将之BoxMask掉,就看不见了

再由于RT不能在采样的同时进行绘制,所以我们做两张RT,一张采样,一张绘制

将最开始的RT存在另一张RT上

再对新的一张RT上进行做偏移,最后再将新的RT画在最开始的RT上,最开始的RT再绘制最新玩家画的轨迹

最后在Tick里面写主画布清空,更新世界转化UV的位置

效果如下: 


制作SceneComponent组件,方便去使用它

在人的脚下放两个该插件 

射线检测,如果检测到有物体的话就加入画点让画布去绘制,我这里给的Snow Height为30

这里进行将组件内的绘制信息进行绘制

在画布的Tick内

效果如下:

为防止画多个图片后,图片与图片之间过度不平滑,所以:

再写一个材质,取最大值,就不会有黑色的分界面了

最后把它替换掉

效果如下图:


最后设置雪的深度

再对Snow的材质颜色反转:

效果如下:

最后对像素大小进行设置,像素大小等于能够行走的范围除以RT的分辨率


最后做图片的法线效果:

雪材质最后节点为上方 

改成次表面

单独再画一个场景雪地

制作完成:

猜你喜欢

转载自blog.csdn.net/qqQQqsadfj/article/details/129954185