查看原文
其他

使用Unity为PlayStation® VR2开发游戏及应用

Unity Unity官方平台 2023-11-23
次世代 VR 头显 PlayStation® VR2(下文简称:PS VR2)日前已经开售,已经有很多开发者选择使用 Unity 构建具有注视点渲染等独特功能的 PS VR2 游戏。
PS VR2 利用了 PS5 强劲的运算与图形能力来打造炫目的高性能 VR 游戏,可以以 60Hz、90Hz 甚至 120Hz 实现可匹敌 4K 分辨率的画面。
推荐 PS VR2 开发者优先考虑使用通用渲染管线(URP),该管线将最先支持 PS VR2 的独特功能,如注视点渲染(forveated rendering)和视线追踪。当然,也可以使用可编程渲染管线(SRP)、内置渲染管线和高清渲染管线(HDRP),但像注视点渲染这类独特功能目前仅在 URP 上可用。
URP 不仅非常适合开发 VR 游戏,而且它使用起来灵活便捷,并且还能兼容多个平台。您也可以选择使用可编程渲染管线定制自己的渲染管线,借助我们提供的泛用 C# API 可以完成您想要的任何渲染器。

PS VR2 的画面效果

PS5 所采用的新 NGGC 图形 API 使得 GPU 也获得了提升。在 NGGC 的加持下,我们能够以前所未有的方式使用 PS5 上的优化技术。我们还重新设计了渲染后端的架构,使得渲染能多核运行,同时也能改进 GPU 的状态切换。所有这一切让渲染的 CPU、GPU 和内存占用更加高效,可维持相同的图像质量,不必再让开发者重新制作资产或修改代码。
  注视点渲染(foveated rendering)
PS VR2 采用注视点渲染技术。此项技术可以降低当前场景的 GPU 渲染负荷,提高 VR 游戏的图像清晰度。注视点渲染通过降低视线周围的图像质量来提高 GPU 性能。
PS VR2 硬件还能利用眼动追踪来优化 GPU 渲染。通过将眼球注视信息映射到屏幕空间,您就能够在玩家注视的精确屏幕区域进行高质量渲染。
注视点渲染加上眼动追踪可以只在必要的位置维持高质量的图像,并且平稳地降低周围相对不重要的位置的分辨率。这表示部分渲染目标的大小可以降低, 同时在需要的位置保持图像质量。这意味着 PS VR2 的注视点渲染可以极大地降低 GPU 占用,同时从视觉上达到相同的质量,如果搭配眼动追踪技术,性能提升会更为明显。
我们已将功能整合至 Unity,让您能够控制注视程度,从而根据特定需求平衡图像质量和 GPU 性能。借助这个功能,PS VR2 上的注视点渲染速度最多可提高 2.5 倍,相较于标准的立体渲染几乎没有可见的图像质量损失。如果搭配上眼动追踪,注视点渲染的速度可以快 3.6 倍之多。(这些测试以 Unity 演示为基础,仅表示理想情况下的性能收益,结果在不同的游戏里可能略有不同。)

PS VR2 的输入控制

除了图形性能,眼动追踪还解锁了一种新的输入方式。玩家可以使用眼神选择菜单项、与非玩家角色(NPC)互动,以及使用环境工具等等。眼动追踪甚至可以成为游戏机制的核心。
  眼动追踪
眼动追踪作为输入方式与其他 XR 输入设备类似。您可以使用眼睛注视的组件。它是双眼的位置和旋转的组合,可以转化为虚拟世界里的一处位置。您可以用它来识别用户当前注视着的地方。
除了基本的姿势信息,您还能检查玩家的瞳孔直径和眨眼频率等。将这些信息与姿势相结合,您就可以构思自己的游戏玩法和互动方式,让玩家深入参与到游戏中。
下方是一个简单的目视十字准星示例:
public class GazeReticle : MonoBehaviour
{
Vector3 m_GazePosition;
Vector3 m_GazeForward;
Quaternion m_GazeRotation;

// In this script, gazeTracker is driven by a TrackedPoseDriver component wired up to the Position/Rotation
// of the eyeGazePosition and eyeGazeRotation from PSVR2 headset in the Input System Actions.
public GameObject gazeTracker;

void Update()
{
RaycastHit hitInfo;
m_GazePosition = gazeTracker.transform.position;
m_GazeRotation = gazeTracker.transform.rotation;
m_GazeForward = m_GazeRotation * Vector3.forward;
if (Physics.Raycast(m_GazePosition, m_GazeForward, out hitInfo, 10.0f))
{
transform.position = hitInfo.point;
}
}
}

在这个脚本中,gazeTracker 对象在使用 TrackedPoseDriver 组件驱动着十字准星的移动,这个组件是在 Unity 中追踪任何 XR 控制器时都会用到的。这里它只是正好绑定到 Input System Action Map 中设定的 eyeGazePosition 和 eyeGazeRotation 上。如果您计划采用更传统的 Unity 输入方式,也会有一个特定的 TrackedPoseProvider 来处理眼动追踪。

  Sense Controller
新的 Sense Controller 包含有独特的 PS VR2 功能特色。手指触摸检测功能使用电容触摸来检测玩家的手指是否放在了按键上。这些检测适用于所有主要的按键和摇杆,可用于在游戏期间产生更为自然的手部姿势。您还可以采用更基本的方法,即驱动手模型。让玩家在看控制器时“看到”自己的手指在哪里。这确实可以帮助玩家保持专注并沉浸在游戏体验中,不必摘下头显或用手来摸索特定的按键。
PS VR2 采用了由内向外(inside-out)的追踪技术,可以在头显和手柄上实现六自由度的追踪。您还可以使用绝大部分标准的 Unity XR 技术栈,更轻松地开发面向更广泛平台的游戏。为了设置新手柄,我们已经将输入控制接入到旧版 Input Manager 和新的 Input System 软件包。
除了眼动追踪和控制器输入之外,PS VR2 的软件开发工具包(SDK)还允许对 PS VR2 Sense 技术的触觉反馈进行全面控制。基于音频的触觉反馈能让玩家深入参与游戏体验,另外还有传统的手柄震动。新手柄还支持 DualSense 手柄同款的自适应扳机(Adaptive Trigger),可基于游戏情景产生不同种类的扳机反馈。除了手柄上的触感,PS VR2 还增添了头显的反馈,可为玩家提供可调整的头显震动。它可以用来提醒玩家某个事件,或者与音频结合带来更为逼真的感受。
为了让您能灵活地整合 PS VR2 输入和触感技术,我们做出了许多努力。通过将改进后的追踪技术及适用于 PS VR2 的标准 Unity XR SDK 相结合,将能够使用整个 Unity XR 技术栈,包括XR Interaction Toolkit、依靠 XR SDK 运作的资产、以及其他可通过 Package Manager 下载的软件包。
现在即刻与我们一同开启 PS VR2 开发之旅吧。您可以使用 Unity 2021 LTS 及以上版本为其开发项目。*注视点渲染(forveated rendering)需要 Unity 2022.2 及以上版本。



长按关注

Unity 官方微信

第一时间了解Unity引擎动向,学习进阶开发技能




 每一个“在看”,都是我们前进的动力 

继续滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存