Language:
Page Info
Tags:
Skill Level:
Engine Version:
Share

虚拟现实旁观者模式

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

虚幻引擎 4 的 VR 观众画面(VR Spectator Screen) 功能能够使用户成为虚拟现实(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 运行时则可能出现渲染问题(基本上每三帧就会掉帧)。

当前已知问题

以下问题当前正在解决中:

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

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

Tags