雨果·巴拉:行业北极星Vision Pro过度设计不适合产品市场

研发实践:为《Supernatural》添加MR模式的方法、挑战和经验

查看引用/信息源请点击:映维网Nweon

为《Supernatural》添加混合现实模式时的方法、挑战和经验

映维网Nweon 2024年08月09日)《Supernatural》是Quest Store最成功的VR应用之一,以至于Meta一度开出4+亿美元的价格收购Within。除了正常的纯VR模式之外,这款健身体验同时提供了MR透视功能。

日前,团队的工程总监戴夫·考林(Dave Cowling)分享了他们是如何在为《Supernatural》添加混合现实模式时的方法、挑战和经验:

《Supernatural》最近推出了混合现实模式,并获得社区令人难以置信的积极反应。我们非常高兴能够拥抱硬件和软件堆栈的这一方面,一系列的用户都对周围环境的额外感知表示赞赏。

尽管玩家对MR模式反响积极,但这个应用的核心是沉浸在自然环境中的感觉。所以,保持这种沉浸感并提供MR的态势感知是一项有趣的技术挑战。我们是这样做的:

以传送门为中心

大多数《Supernatural》训练包括在一个完整的360度场景中锻炼。随着时间的推移,不同的传送门将动态打开,以指示目标的活跃“通道”。原型显示,通过允许我们的虚拟世界只出现在活跃通道周围,这可以提供一个非常好的平衡,虚拟世界沉浸感直接在焦点之内,而现实世界的情境意识在焦点之外。

alpha icosphere

underlay层允许我们通过framebuffer alpha控制透视可见性。这完美适合我们的用例,因为它提供了对过渡区域的逐像素控制,允许我们显示虚拟环境、透视或两者的混合。

为了实现这个功能,我们将渲染分为三个层,通过Unity渲染队列进行分割:

  • 使用透视动态掩码的环境和相关对象

  • alpha icosphere

  • 总是虚拟渲染的对象(手套和目标等)

第一层:环境和传送门按正常方式呈现。

第二层:alpha icosphere仅渲染到alpha通道。这是一个高度镶嵌的~10k顶点球体,覆盖framebuffer并写入alpha蒙版,在传送门可见的地方masking in像素,并在透视feed将出现的地方masking out像素。设计团队通过纹理曲线控制蒙版的衰减。

// Blend operation for the icosphere
// Fragment shader returns (0, 0, 0, mask_amount)
// Note the premultiplied alpha for the framebuffer color
Blend One SrcAlpha, One Zero

第三层:我们渲染我们总是想要可见的虚拟对象。因为它们都是在icosphere之后渲染,所以可以编写一个适当的framebuffer alpha来覆盖icosphere已经设置的内容。

左图:图层1渲染后。中图:第2层icosphere渲染后(在线框中覆盖了icosphere的顶点密度)。右图:第3层对象渲染后。注意:透视masking区域已人为增加,并在这里显示为绿色。

充满挑战

尽管概念而言非常简单,但这种方法产生了特定的一阶和二阶挑战。

在《Supernatural》中浏览广泛的内容目录默认使用带有“大而远”元素的UI范例。这个UI在MR中的体验不佳,因为它会导致与现实世界中可以更接近的表面不协调。为了确保在MR中浏览内容的感觉尽可能舒适,我们实现了UI缩放,将虚拟元素移动到离camera更近的地方,从而降低出现在“墙内”的风险。

出于同样的原因,我们在热身和放松环节拉近了教练的距离。我们已经以2K播放立体教练视频,但教练距离的减少导致了一定的轻微像素化。为了保持质量,我们调到了3K,这使得教练在近距离时看起来更清晰。对HEVC embedded alpha的支持允许我们能够以两倍的效率使用视频帧区域,并且允许我们在没有视觉质量下降的情况下回到2K。

在Meta Quest 3运行MR限制了应用程序可用的CPU和GPU时钟速度。将最大可用GPU速度降低近20%要求我们认真考虑如何最好地确保我们保持帧速率,特别是考虑到MR从icosphere添加的额外渲染负载。

最终,我们选择在MR模式下将帧率从90fps降至80fps。对于我们的测试对象来说,这种帧率的下降几乎无法察觉,并且认为是额外GPU空间的合适权衡。我们希望,随着不断的优化,这种MR引起的极限可能会在未来降低。

另外,尽管透视的光子到光子延迟令人印象深刻,但它依然比控制器位置延迟大得多。当控制器快速移动时,这会导致虚拟世界和透视世界之间的边界明显不匹配。当然,与慢速运动的应用程序相比,快速运动的健身应用程序尤其会感受到这种延迟挑战。

我们投入了一定的时间来调整边界,尝试将过渡区域尽可能地推到运动范围之外,同时保持有用的外围通道。尽管我们对解决方案的结果感到满意,但问题依然存在。

对于特定应用,一个可能的延迟问题缓解方法是允许控制器编写本地化的alpha blob。一个合理大小的blob会动态地mask in控制器周围的虚拟世界中,并隐藏差异。

请注意,在报告的控制器位置(虚拟手套)和透视之间存在实质性的不匹配,这是由透视中的光子对光子延迟引起。

Quest 2

同时,我们的团队非常关心在可行情况下保持硬件生态系统的功能均等,所以在Meta Quest 2支持MR对我们来说很重要。遗憾的是,用于在《Supernatural》环境之间隐藏特定处理的短暂淡出周期在MR中不可能实现,这导致在GPU运行复杂的光照卷积内核时,Quest 2出现了明显的更新停滞。

我们的解决方案是重新构建这种计算,将处理摊销到可配置的帧数。在20帧的情况下,我们每帧只占用内核处理的5%。由此产生的GPU负载减少允许非常平滑的过渡,包括Quest 2。

重要的alpha

带有alpha punch-through的underlay意味着你必须仔细考虑在半透明第三层对象中使用framebuffer alpha。通常,这意味着扩展混合操作,为alpha通道指定一个单独的组合,以允许icosphere写入的alpha持久存在。我们最终不得不修改数个着色器来完成这个任务,而在某些情况下,我们不得不编写一个Unity标准着色器集的替代品,以提供我们需要的特定于alpha的控制。

// Standard additive blend that doesn’t separate alpha
// and will break layer 3 object
Blend SrcAlpha One

// Standard additive blend for color, separately allow
// icosphere-alpha to persist
Blend SrcAlpha One, Zero One

总结和感谢

我非常感谢《Supernatural》团队的每个人,是他们实现了这个功能。

本文链接https://news.nweon.com/123684
转载须知:转载摘编需注明来源映维网并保留本文链接
素材版权:除额外说明,文章所用图片、视频均来自文章关联个人、企业实体等提供
QQ交流群苹果Vision  |  Meta Quest  |  微软HoloLens  |  AR/VR开发者  |  映维粉丝读者

您可能还喜欢...

资讯