-
Creator 版本: 3.8.2
-
目标平台: chome浏览器
-
重现方式:3d场景下的spine骨骼动画开启深度检测和深度写入,面片会闪烁穿插显示
这种现象叫做zfighting。深度测试使用的深度值,用于表示目标像素距离相机的距离,但是存储的值不是距离值,而是一个和距离值正相关的值。因为深度值在近距离的精度要求更高,距离越远则越无所谓。当深度相近的目标渲染时,会出现这种穿插闪烁的现象。不光是spine。你做两个面片叠一起也是这样的。
有办法解决吗?
我想在3D场景(固定相机角度)中用2d的资源来表现 ,图片我改成用quad替换,spine不知道怎么搞了。
可以把spine动画拍下来,然后用rendertexture投射懂啊一个quad。
如果spine多的话,考虑换成帧动画。
还有种方法是修改材质,但是应该比较复杂,我想到的思路是,修改材质,固定spine各个部分的渲染次序,spine材质的深度测试开启,这样允许它和其他物品交叉,但是深度写入关闭,避免spine各部件之间的zfighting
你说的是复制一份spine的shader然后改spine默认材质么?我觉得可以hook引擎的代码去实现欸(之前我们也遇到了)
你们用什么方式处理的呢?
spine是2d相机处理的,和3d相机的提交顺序不一样,要怎么处理渲染排序