【Unity Shader】2D模型 3D模型混用的穿模问题(Spine在3D场景中出现前后穿模问题的解决办法)

问题描述:

在3D场景中使用Spine模型(2D), 因为Spine需要像Billboard类似的处理,永远是垂直与相机的, 所以一般情况下2D模型能正常显示且前后的阻挡关系也是没有问题的,如下图所示,一切都很美好.(这里用一个四边形,图中的福字表示2D模型)
在这里插入图片描述
可是如果后面蓝色的格子比较高,或者2D角色本身也比较高,那么就会出现模型穿插的问题,如下图所示:
在这里插入图片描述
如果吧2D模型竖立起来,前后关系肯定是没有问题的,所以也能避免模型穿插的问题,可是就没有Billboard效果,圆形的福字已经被压扁了,如下图:
在这里插入图片描述
所以现在的解决办法是,2D模型还是斜着放(不让这里的福压扁),而做深度检测的时候用竖立起来的那个模型所在的深度值(避免模型穿插问题,使前后关系看起来是正确的)

怎么才能既保证2D模型的正常显示(Billboard效果),又能有预期的前后遮挡关系(不穿模),鱼和熊掌是可以兼得的,解决思路来源:https://www.bilibili.com/video/BV1rr4y1c7wz

解决方案:

使用斜着的2D模型经过MVP变化后的结果进行渲染,但是在顶点变换的最后,需要用上面竖立时所处的深度值修改顶点的深度值,就能欺骗过VertShader与FragmentShader之间的深度检测环节,就可以达到预期想要的遮挡关系,防止前后穿模。

下面是将2D模型竖立起来,沿着2D模型的脚下旋转到垂直:
在这里插入图片描述
需要注意的是我们是从侧面来看,则是沿着ZY平面进行旋转的,所以需要先找到旋转的中心点(脚下),如这个

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值