近期热门
UE特效绝大部分半透明排序问题一次性解决+源文件(持续更新)

UE特效绝大部分半透明排序问题一次性解决+源文件(持续更新)

 !heats_icon! [复制链接]
2528 2 53 16 29天前
虚幻 Niagara Module特效技术QQ交流群:967848896

1.精灵片和精灵片之间的半透明排序问题


问题描述:
同时使用两个 精灵片 粒子制作特效,想让一个精灵片固定显示在另一个上面


1.png
2.png

解决方案:
我们可以设置这个粒子sprite render的 sort order Hint,这个值越大,精灵片排序越在前面,越小越在后面
3.png
4.png

注意:
在项目中最好有限制,比如-10-10之间,因为所有的特效都遵循这个排序数,不同特效之间可能因为随意乱填而造成混乱,所以要由TA或者特效规划好


2.模型和精灵片之间的半透明排序问题
5.gif
6.png
问题描述:
焦老师  我做了个这种的  我最外层的环绕物用的一个模型(一个球)做的  其他用的粒子做的  然后这个球不管是前面还是后面都会出现在其他粒子的前面  我怎么让这个球的前面挡住其他粒子  但球的背面被其他粒子挡住呢   (我给球的背面是个绿色  方便看)

解决方案:
通过材质球解决,把特效材质换成从半透明变成mask,然后把材质球连线也连到mask节点即可
7.png
8.png
9.png

3.特效模型半透明破面问题


问题描述:
当给一个模型半透明特效材质时,他的前后就会出现各种穿插破面的情况,是特效的一个老问题了
10.1.png 10.png
解决方案:
通过材质和模型写入深度,再通过材质球把深度检测后面的模型剔除掉,就可以避免前后穿插破面的问题了

1.使用两个关键节点:PixelDepth 和 SceneTexture。在 SceneTexture 节点中选择 Custom Depth(自定义深度)。
11.png

自定义深度的作用
当多个半透明面重叠时,Custom Depth 会返回距离摄像机最近的面的深度。 基于这个特性,我们可以设计一个简单的算法:
如果 PixelDepth = CustomDepth,说明像素在最前方 →输出 1(正常显示)。
如果 PixelDepth > CustomDepth,说明像素在后方 →输出 0(透明不可见)。
12.png
为了确保前方像素能正确显示,我们需要给 PixelDepth 一个微小偏差,比如减去 0.01。
13.png
最后,把这个结果乘上不透明度,就完成了材质的核心逻辑。
14.png

额外的三项设置
算法完成后,还需要额外三步,否则在场景中无法得到最终效果:
1.调整 Opacity Mask Clip Value(不透明蒙版剪切值):设定透明度判定阈值,精准切割透明与不透明区域。 值调小可以保证完全透明的效果。
15.png
2.打开 自定义深度写入。
16.png
3.在场景中开启该模型的 渲染自定义深度通道。
17.png
完成这些设置后,半透明排序问题就能彻底解决,材质会正确显示,后面的其他半透明材质也不会受到影响。
18.png
该方法的基本原理是通过 PixelDepth 和CustomDepth 的比较算法,再配合不透明蒙版和自定义深度设置,这样不仅能保证前后层级的正确显示,还能避免复杂场景中半透明材质互相干扰。


材质文件链接:
https://pan.baidu.com/s/1ny-N5M_FFlG4vmXadU07GA?pwd=4tdc 提取码: 4tdc

53
点赞
+10
打赏
16
添加到收藏夹

30

点击复制链接

使用微信扫码分享
一次扣10个券
全部评论4
您需要登录后才可以回帖 登录

老焦  
学特效请加up 微信: a18502083676,进群沟通学习哈
17天前  ·  3楼
回复

使用道具 举报

哇,虽然我用不到,但是我真的觉得这种形式的帖子真的是对要到问题的人帮助超级大!  感谢大佬分享
25天前  ·  2楼
回复

使用道具 举报

  • 老焦 
    感谢支持,后续会不断出一些,也欢迎大佬多多提问哈
    回复
    more_vert
    24天前
您当前使用的浏览器IE内核版本过低会导致网站显示错误

请使用高速内核浏览器或其他浏览器