【Quest开发】极简版!透视环境下抠出身体并能遮挡身体上的服装
前两天发了一个很复杂的版本,又鼓捣了一下发现完全没有必要。我之前的理解有点偏(不是错误的但用法错了),但是有一些小伙伴收藏了,害怕里面的某些东西对谁有用,所以写了一篇新的,前两步配置环境和之前一样。
软件:Unity 2022.3.51f1c1、vscode、Meta XR All in One SDK V72
硬件:Meta Quest3
仅实验urp管线
博主搞这个主要是想做现实里的人的变身功能,最后效果如下
可以看到虽然身体是半透明的,但是裙子依旧被完全遮挡了
速通原理: 将打开DepthTest(深度测试)和DepthWrite(深度写入)的透明物体(身体)的渲染队列调至不透明物体(衣服)的前面,即完成遮挡
一、使用BuildingBlocks设置透视环境
注意:透视有个坑是camera不能开postprocessing(后处理),开后处理会导致环境全黑
二、配置一个具有全身追踪的玩家物体,可参考这篇
【Quest开发】全身跟踪(一)_quest3如何识别跟踪脚部-CSDN博客
我为了绑定准确直接使用meta默认的全身追踪示例
三、修改材质
仅需修改身体材质,创建一个Lit ShaderGraph(主要是我不会写shader,会写shader的朋友也可以写shader)如下配置(红框地方一致即可)
把它给到身体要用的材质,修改属性如下
这里面翻译过来就是,这是一个透明的,透明度为0的,但会像不透明物体一样写入深度和测试深度的,渲染队列排在一般不透明物体更前面(也就是先将深度值写入深度缓冲区)的材质。
找到全身追踪物体下的Amature_Mesh,替换全身材质
完成咯,是不是简单多了,也好理解多了。还是不太理解的朋友可以看一下这篇讲渲染顺序的,给了我很大的启发
Unity 渲染原理(十二)透明效果与渲染队列 | Origin of Ray
这样虽然实现了遮挡关系,但是运行了的朋友应该会发现衣服不会跟着身体动,需要导入到建模软件重新蒙皮哦,把衣服也蒙皮到meta原有的骨骼上才行