PICO4 传送门效果开发小结之原理篇

本文详细描述了如何通过PICOSDK实现透视功能,利用深度测试和模板测试两种方式在Unity中创建具有穿透效果的传送门,包括Shader的配置、包围盒制作、穿越检测等步骤。同时提到了代码实现和效果演示的相关资源链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、原理总述

        首先通过PICO SDK透视开启接口开启透视;然后对传送门模型进行处理,分别在门的两端添加附带有处理Shader的Quad,面向真实世界一侧的Quad添加附带深度测试或者模板测试Shader的材质,面向虚拟世界一侧的Quad添加附带Underlay “开洞” Shader的材质。

        为了方便表述,将面向真实世界一侧的Quad附带的Shader表示为Shader[See Virtual],而将面向虚拟世界一侧的Quad附带的Shader表示为Shader[See Reality]

        整体原理示意图如下。

二、实现方式

        以上Shader[See Virtual]有两种实现方式,分别是深度测试和模板测试。

1、深度测试

        这种实现方式相对于模板测试来说较为繁琐,需要创建一个附带Underlay “开洞” Shader材质的包围盒,这个包围盒可以六个面都采用Quad来做。让包围盒包裹相机和传送门,遮住外围的虚拟场景。

(1)包围盒创建

        这个创建的包围盒可以营造有局限的真实世界,即开启透视之后可以在包围盒范围内看到真实世界以及传送门。

(2)Shader[See Virtual]依附物制作

        采用只保留深度计算的Shader制作传送门观看虚拟世界一侧效果,这里将此侧Quad表示为Quad[See Virtual]注意,虚拟世界、Quad[See Virtual]和包围盒的Render Queue需要满足虚拟世界 < Quad[See Virtual] < 包围盒。

(3)穿越传送门

        可以在传送门上添加碰撞体,相机下创建一个带有碰撞体及刚体并隐藏网格渲染器的球体,来进行触发检测是否穿越门,注意传送门碰撞体勾选触发检测开关。我们将虚拟世界一侧的Quad表示为Quad[See Reality]

        此处触发检测配合相机和传送门之间坐标关系计算一起实现。当穿越进虚拟世界一侧时,将包围盒隐藏,此时会完全进入虚拟世界,同时可以通过Quad[See Reality]看到真实世界;当再次穿越真实世界一侧时,只需将包围盒显示,此时会进入局限的真实世界,同时可以通过Quad[See Virtual]看到虚拟世界。

2、模板测试

        模板测试需要采用Unity的URP渲染管线实现,方便针对Stencil属性进行控制。

(1)Shader[See Virtual]依附物制作

        采用模板测试的Shader制作传送门观看虚拟世界一侧效果,这里将此侧Quad表示为Quad[See Virtual]。可以将Quad[See Virtual]材质的Stencil ID属性修改为1,便于后续进行条件比较。

(2)虚拟场景制作

        将虚拟场景所有物体作为同一个物体的子物体,然后修改父物体的层级为自定义层级。

(3)修改URP渲染管线数据资产

        此处在原来URP渲染管线资产绑定的数据资产基础上复制一份数据资产,在将复制的数据资产赋值给URP渲染管线资产。在复制的数据资产里添加一个渲染特征,此渲染特征选择渲染物体。

在过滤条件处将自定义层级去除,勾选Stencil并将比较值改为1,比较方法改为相等。

        进行完以上三步后,只能通过Quad[See Virtual]看到虚拟世界场景。

(4)穿越传送门

        可以在传送门上添加碰撞体,相机下创建一个带有碰撞体及刚体并隐藏网格渲染器的球体,来进行触发检测是否穿越门,注意传送门碰撞体勾选触发检测开关。我们将虚拟世界一侧的Quad表示为Quad[See Reality]

        此处触发检测配合相机和传送门之间坐标关系计算一起实现。当穿越进虚拟世界一侧时,将Stencil的比较方法改为Disabled,其他属性不变,此时会完全进入虚拟世界,同时可以通过Quad[See Reality]看到真实世界;当再次穿越真实世界一侧时,只需将Stencil的比较方法改为Equal,其他属性不变,此时会完全进入真实世界,同时可以通过Quad[See Virtual]看到虚拟世界。

三、代码实现

        多重传送门代码实现参见:PICO4 传送门效果开发小结之多重传送门代码实现

四、效果演示

        效果演示参见:PICO4 MR多重传送门效果演示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

画中影

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值