在使用Decal Actor组件放置贴花时,常会遇到拉伸(竖纹)问题。以下是两种常见的解决方法

1.法线阈值遮罩
该问题的原因在于绘制平面与投射Actor之间的夹角过小。可以通过修改Decal Actor的材质球,获取当前绘制平面的法线并计算点乘,再乘以遮罩来避免拉伸 。应用该材质后,拉伸现象即可消失。

运用该材质球后,拉伸效果消失:

需要说明的是,使用世界坐标的DDX和DDY来求当前法线,是因为直接通过法线节点获取到的是Decal Actor自身的法线,而非绘制平面的法线。

2.三平面投影
根据项目需求,也可以采用三平面投影的方法来避免拉伸。

该方法同样需要用到上一步中获取的法线信息。

Decal默认会自带边缘淡出效果,但这个效果不太理想,也不好调,因为UE把逻辑写死在源码里了。这时候可以通过Decal Actor自身的位置和WorldPosition做对比来手动修改。
