索尼互动娱乐公司的次世代VR头戴设备,PlayStation VR2(PS VR2)于去年发布,该设备的发布标志着索尼在VR游戏与娱乐领域的进一步拓展与突破,Unity作为游戏创作主流平台对于VR游戏创建具有极大的包容性,支持创建各种类型的游戏与创新型应用程序。在本文中,我们将为大家介绍使用Unity为PS VR2开发游戏及应用程序的两个基础方向:图形和输入。
PS VR2和图形显示
PS VR2在4K分辨率下的图像渲染潜力
通过利用PS5的下一代计算和图形功能PS VR2能为您提供令人惊叹的高性能VR游戏体验。这使得您可以观看4k分辨率的显示画面,并以60Hz、90Hz或120Hz高帧速率运行游戏,这将在PS5上使用下面讨论的一些技术来实现。
首先,让我们从渲染管道开始。我们向大多数VR开发者推荐使用Unity的通用渲染管道(URP),因为URP是Unity第一个支持PS VR2中一些独特功能的渲染管道,例如中心凹渲染和视线跟踪。当然您还可以使用脚本化渲染管道(SRP)、内置渲染管道和高清晰度渲染管道(HDRP),但请注意,一些功能,如foveated渲染,目前仅在URP上可用。
总的来说,Unity的通用渲染管道(URP)非常适合创建VR游戏。它非常灵活,易于使用,并且可定制。如果您正在为多个平台(包括多合一VR设备)进行构建,它也非常适用。您可以使用SRP制作自己的自定义渲染管道,Unity提供广泛的C# API可实现您创建游戏需要的任何渲染器。
PS5还通过其全新的NGGC图形API在GPU方面取得了进步。通过NGGC,Unity将以前所未有的方式利用PS5上各种可用的优化技术。此外在Unity中还重新构建了渲染后端,以便在优化的GPU状态转换的同时提高多核利用率。这不仅在CPU、GPU和内存使用方面提高了渲染效率,同时也提供了相同的视觉效果,而无需对资产或游戏代码进行任何重新授权。
有凹渲染
PS VR2中有凹渲染用例
在PS VR2中添加了名为有凹渲染的全新功能。这项技术通过减少给定场景所需的GPU渲染工作量,帮助您制作出具有更高逼真度的VR游戏。中心凹渲染的原理是通过降低视觉外围的图像质量与提高注视点中心的图形质量来进一步提升GPU的使用效率。
通过使用眼球追踪功能来优化GPU渲染,PS VR2的硬件可以更进一步。通过将眼睛注视的信息投射到屏幕空间中,游戏创作者可以在玩家观看的精确屏幕区域中进行高质量的渲染。
中心凹渲染和眼球跟踪的目的是在图像中被认为重要的部分保持较高的图像质量,而在图像中被认为不太重要的区域平滑地渐变到较低的分辨率。这意味着您将可以减小一些渲染目标的大小,同时仍然保持所需的视觉质量。
在Unity中消除了设置这一功能的所有复杂性操作,这将使您能够充分控制视野范围,从而能够根据您的特定要求平衡图像质量和GPU性能。
与通过标准立体渲染获得的同等图像质量相比,通过此功能,PS VR2上的中心凹渲染速度可提高2.5倍,而不会有任何视觉感知损失。此外我们还看到,当有凹渲染与眼球跟踪相结合时,整体渲染速度提高了3.6倍。(请注意,这些测试代表在Unity演示上测试的理想性能提升,数字将因您的游戏而异。)
PS VR2上的中心凹渲染可以大幅减少GPU的使用,同时产生相同的感知质量-并且与眼球跟踪技术相结合,性能增益甚至更高。
PS VR2的输入控制
PS VR2
除了图形性能之外,眼球追踪还解锁了一种全新的输入法。创建者可以使用眼球追踪来支持用户从菜单中选择项目、与NPC互动或使用游戏中的工具等。眼球追踪甚至可能是游戏机制的一个核心卖点。
在Unity中为PS VR2创建利用眼球追踪的工作方式与其他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;
}
}
}
您将看到一个凝视跟踪器对象,该对象在此脚本中驱动十字线的移动,使用用于跟踪Unity中其他XR控制器的相同TrackedPoseDriver,可与我们的输入系统动作地图中设置的眼睛注视位置和眼睛注视旋转相关联。如果您打算使用更传统的Unity输入法,还有专门用于处理眼球跟踪的TrackedPoseProvider可供选择。
感应控制器
新的感应控制器设置也同样适用于Unity开发者,包括仅在PS VR2上搭载的有趣的独特功能。
手指触摸检测使用电容触摸来检测玩家的手指何时停留在按钮上,而不是实际按下按钮。所有主要按钮和拇指棒上都有这些控件,因此您可以使用它们在游戏过程中用玩家的手驱动更自然的手势。你也可以用一种更基本的方法来驱动一个手部模型,使玩家在看控制器时能够“看到”他们的手指在哪里。这可以帮助玩家保持专注并沉浸在VR体验中,而不必摘下VR设备或四处摸索特定的按钮。
PS VR2的新系统使用了inside-out跟踪技术,为头显设备和控制器提供了六自由度跟踪。您现在可以使用大部分标准Unity XR堆栈,从而更容易为更广泛的平台开发您的游戏。关于设置控制器本身,传统的Unity输入管理器和新的输入系统包展示了这些输入控件。
除了眼睛跟踪和控制器输入之外,PS VR2的SDK还可以完全控制PS VR2 的Sense技术触觉系统。这包括基于音频的触觉反馈,为玩家提供更深入的体验,以及更传统的振动反馈支持。新控制器还包括与PS5 DualSense控制器相同的自适应触发器,这意味着您可以根据游戏环境对触发器进行不同风格的反馈编程。除了基于控制器的触觉之外,PS VR2还增加了头显反馈,允许游戏创建者在游戏中为玩家提供可调振动。这可以用来提醒玩家某个事件正在或准备发生,或者与音频相结合,为体验添加更真实的感觉。
当涉及到将PS VR2的输入和触觉集成到您的游戏中时,Unity也同事努力为创作者提供更强的灵活性。结合对于PS VR2跟踪改进的标准Unity XR SDK,您现在可以利用完整的Unity XR堆栈,这包括XR交互工具包,和一些其他XR SDK相关资产,Unity资产商店软件包,以及通过Unity软件包管理器提供的其他软件包。
这些功能将支持游戏创作者探索更新的游戏形式的和世界建设方式。
开始使用Unity为PS VR2创建应用
PS VR2现已推出,您可以使用Unity 2021 LTS版和更高版本为其构建应用。有凹渲染需要Unity 2022.2及更高版本。PS VR2对VR行业的意义我们在此不再赘述,它不仅将VR设备的性能和输入控制提升到了一个新的水平,同时也为玩家提供了更加身临其境且令人兴奋的游戏体验。
需要注意的是Unity游戏开发者需要有效的Unity Pro订阅账户(或相应平台持有者提供的首选平台许可证密钥)才能通过开发者平台论坛访问一些特定的构建模块。