虚拟现实旁观者模式

这个文档是虚幻引擎 4 的 VR 旁观者模式概述。

Windows
MacOS
Linux

如果是为 Playstation 开发的话,请参考 PlayStation VR (PS VR) 旁观者文档。

如果您希望在其他人与虚拟现实(VR)环境互动(第一人称视角)时充当VR旁观者(第三人称视角),那么虚幻引擎4(UE4) VR旁观者屏幕 会是一个理想功能。在运行VR旁观者屏幕时,您可以用自己的电脑显示器(或电视)观察其他玩家,这有助于收集用户对沉浸式VR体验的反馈。

Images Courtesy of GhostPaint.com

VRSpecScreen.png

VRPlayerPerspectiveScreen.png

VR 观众画面视角

VR 玩家的头戴显示器视角

在左侧,您(观众)观察到 VR 中这位艺术家正在绘制砖墙;而在右侧,VR 中艺术家正专注于进行绘制。

根据头戴显示器(HMD)生产商的不同,VR 观众画面与 VR 社交画面含义相同;或者 VR 观众模式与 VR 镜像模式含义相同。在此文档的情景中,观众画面 是一个连接到 VR 设备的标准输出设备(如电脑显示器或电视)。此外,启用 观众模式 意味着用户能够在玩家使用头戴显示器在 VR 环境中进行游戏时进行观察(或在特定情况下进行交互)。

支持平台

以下平台当前支持 UE4 中的观众画面模式:

虽然我们希望其他个人电脑设备和主机能够支持此功能,但移动 VR 设备(平台)很难支持此功能。

观众画面模式入门

除 PS VR 之外,观众画面模式默认在 UE4 中启动。

在观众画面模式中使用纹理时,左上角的坐标代表最小的坐标值,而右下角的坐标则代表最大的坐标值。

VRSpec_BPTextureCoordinate.png

旁观者窗口蓝图节点

范例中,我们用了以下蓝图接口:

节点

描述

设置旁观者屏幕纹理

设置旁观者屏幕纹理

设置旁观者屏幕模式 TexturePlusEye

设置旁观者屏幕模式 TexturePlusEye

设置旁观者屏幕模式

该节点设置旁观者屏幕模式。

使用范例

  1. 在支持观众画面的平台中设置一个 VR 项目。

  2. 现在需要新建一个蓝图脚本,指定需要渲染到观众画面的图像。为便于展示,以下蓝图节点对三个键盘输入形成响应:

    1. 举例而言,按下 1 键时第一个蓝图节点将指定一个静态纹理,它将在纹理区域中被绘制。

      VRSpec_BP_1.png

    2. 按下 2 键时,第二个蓝图节点将指定一个布局,头戴显示器的眼睛视图将被绘制到整个画面(纹理将在屏幕的左上四分之一半圆中绘制)。此外,此节点将在指定纹理布局的同时确保首先绘制眼睛布局。

      VRSpec_BP_2.png

      眼睛和纹理矩形的最大和最小值被标准化到 [0.0, 1.0] 之间。

    3. 最后按下 3 键时,第三个蓝图节点将启用(因此切换至)TexturePlusEye 模式。

      VRSpec_BP_3.png

最终结果

总而言之,新蓝图随需要使用的观众画面模式设置观众画面的纹理(以及其眼睛和纹理布局)。

VRSpec_BP.png

虽然纹理可作为一个渲染目标(可从一个 SceneCaptureComponent2D 进行写入),或一个用户界面元素的容器,但需要注意的是 SceneCapture 的计算开销极大。

如果需要在运行时测试不同纹理或布局,可在观众画面模式启用时切换纹理(甚至布局)。

切换模式

如果需要切换至新的观众画面模式,可打开命令行并输入 vr.SpectatorScreenMode 。例如输入 vr.SpectatorScreenMode 2 将启用 Distorted 模式,当前 Oculus Rift 支持此模式。

VRSpec_CVarExample.png

支持的模式

不同平台将支持特定的观众画面模式,具体如下:

模式

Oculus Rift

SteamVR

PS VR

注解

0

Disabled

为在头戴显示器上达到最佳效果,此模式禁用观众画面输出。

1

SingleEyeLetterboxed

此模式主要用于调试之用,只在屏幕上显示一个宽银幕眼睛。

2

Undistorted

这是一个调试模式,显示两只眼睛的整个渲染区域。

3

Distorted

只有 Oculus 支持此模式。具体而言,这是一个 Oculus 特有的调试模式,显示色差等内容。

4

SingleEye

Undistorted 模式相似,这是只用于一只眼睛的调试模式。因为此模式会拉伸场景,因此可用于识别场景中细微的穿帮。

5

SingleEyeCroppedToFit

此模式将对眼睛进行裁剪,以填充整个画面。

6

Texture

此模式显示指定 Utexture 的全屏视图。

7

TexturePlusMirror

此模式在一个渲染矩形中显示一个纹理,而眼睛则显示在另一个渲染矩形中。

8

ViewPort

当前不支持 ViewPort 模式,然而未来版本中将支持。此模式将渲染一个分屏输出(类似于分屏多人游戏),一个用户拥有头戴显示器,而另一个用户则是观众。

优化观众画面模式

当前观众画面模式没有标准优化设置。如您想要实现观众画面模式的优化解决方案,推荐在 30 fps 下进行场景采集(假定 VR 应用程序以 60、90 或 120 fps 运行)。此外,推荐将观众画面输出限制为 30 fps。请注意:如果尝试在特定硬件上限制观众画面输出,VR 帧率以 90 fps 运行时则可能出现渲染问题(基本上每三帧就会掉帧)。

4.17版已知问题

  • 一帧过后运行时创建的渲染目标才会被指定为观众纹理,因此直到应用程序的第一帧被渲染后才会出现无提醒失败。

  • 如果渲染目标被销毁,同时又被指定为观众纹理,应用程序可能崩溃。

Tags
Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback