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

一、原理总述

        首先通过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多重传送门效果演示

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,839评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,543评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,116评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,371评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,384评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,111评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,416评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,053评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,558评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,007评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,117评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,756评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,324评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,315评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,539评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,578评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,877评论 2 345

推荐阅读更多精彩内容