spine动画开深度写入有些部件还是会穿插显示

  • 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相机的提交顺序不一样,要怎么处理渲染排序