使用 Underminer Studios 的 MR 配置器工具制作现实混合虚拟现实视频

作者: Timothy Porter,Underminer Studios LLC
编辑: Alexandria Porter,Underminer Studios LLC

我是管线技术美工与效率专家 Timothy Porter。 我负责创建统一的系统,为创意项目提供更快、更直观且更协同的工作流程。 凭借超过 9 年的娱乐业从业经验、电脑动画专业的学士学位以及对技术细节的敏锐度,我用自己在早期职业游戏工作中学习到的经验教训开发了各种解决方案,以简化管线、优化多个平台并创建使团队更强大、更高效的工具。 我拥有一家名为 Underminer Studios 的外包与尖端科技公司。

概述

本文将教您如何识别支持混合现实 (MR) 的虚拟现实应用,以及如何在 Unity* 虚拟现实应用中启用 MR 模式。 在文本结尾,您将可以调整自身体验,使用最清晰、最准确的配置制作 MR 绿屏视频。 由于绿屏 MR 对开发人员和内容创建者(如内容传输者或 YouTube 用户)都有用,本文中的信息将从开发者和用户角度出发。 记住,有些信息可能比内容创作者在 MR 中立即开始工作所需的信息要多。 请参考章节标题,以便找到符合您需求的相关信息。 到目前为止,首次设置 MR 体验的过程是一个痛苦冗长的过程。 Underminer Studios 创建了 Underminer Studios MR 配置器工具来完善流程。

Underminer Studios 的 MR 配置器工具

该工具旨在加速 MR 设置的校准。 本文介绍了如何使用该工具并帮助您充分利用 MR 体验。 对于虚拟现实用户和内容传输者来说,制作 MR 视频是向不使用头戴式显示器 (HMD) 的人展示不同视角的好方法。然而对于虚拟现实开发人员来说,MR 视频是制作预告片和展示更全面的 VR 体验的绝佳方法。

Underminer Studios MR 配置器工具将为您提供怎样的帮助?

与相机调准的手动流程相比,这款工具可自动配置控制器/相机偏移,从而大大缩短调准时间。 如果没有这个助手实用程序,您可以从一个空白的 externalcamera.cfg 文件开始,手动调整 x、y 和 z 偏移值,以便使虚拟相机和真实相机对齐。 每次更改时,您必须关闭应用并重启,然后检查对齐,希望您的配置正确,并在需要时重复。 这是一个冗长且不准确的过程。 我们的助手实用程序可简化并自动执行这一对齐过程,让您更轻松地校准 MR 设置。 下载并安装可执行文件,然后下载并遵循阅读指南中的文档。

尽管我们有很多用例来吸引广泛的受众,但开发人员总会不可避免地遇到新的未知需求。 我们打算定期更新工具,如果您有任何工具改进方面的意见,请发送电子邮件至info@underminerstudios.com

如何使用 MR 配置器工具

我们提供了一个便于使用的信息文件,其中包含如何设置应用的各个步骤。该文件包含在MrSetUp.pdf文件中。 您的安装程序中也提供了直接链接。

什么是混合现实?

在这种情况下,混合现实是指从支持 MR 的虚拟现实应用分层到视频中的绿屏背景上的人。 这是向未佩戴虚拟现实头盔的人展示虚拟现实世界的绝佳方式。 用户可以与他人分享其虚拟现实体验,并可以帮助创造一个社交性更强的游戏环境。 一旦您拥有一款支持 MR 的虚拟现实应用,您只需一台合适的相机、一些绿屏材料和一个额外的 Vive* 控制器即可创建自己的 MR 虚拟现实体验。

所需条件

强大的机器

在虚拟现实基础上添加 MR 需要一个高端系统来处理这些应用带来的内在压力。 如果没有足够强大的系统,则可能会出现性能滞后的情况,这可能会降低您的帧速率并带来不太理想的体验,特别是对于佩戴头盔显示器的用户而言。 需要使用高端 PC 提供 MR 体验并避免这些问题。 我在下面提供了一个列表,列出了 MR 体验的最佳系统要求。

支持 MR 的应用

您可以使用以前创建的支持 MR 的项目或自己创建一个项目。 我们将在本节中进行介绍。

如何判断一个虚拟现实应用是否可以使用这种方法

  1. 配置文件

    将名为“externalcamera.cfg”的配置文件放到与虚拟现实可执行文件相同的目录中,查看基于 Unity 的虚拟现实应用是否支持这种 MR 模式。 比如您在 C:\Program Files (x86)\Steam\steamapps\common\APPNAMEHERE\ 目录下有一个游戏。 只需将文件放在该文件夹中即可。 以下是一个原始配置文件的示例:

    x=0
    y=0
    z= 0
    rx=0
    ry=0
    rz=0
    fov=60
    near=0.01
    far=1000

    请注意,这个配置文件立即正常运行的几率几乎为 0。 利用我们的应用进行配置,或查看下面的手动配置部分并按照说明操作。

  2. 连接第三个 Vive 控制器

    连接第三个 Vive 控制器(这个控制器需要通过 USB 插入,因为 SteamVR* 一次只能支持两个无线控制器)。 启动 VR 可执行文件,如果您在桌面上看到一个由四个面板组成的四等分视图, 则该应用应该可以使用这种制作 MR 视频的方法。 如果您没有看到这种由四个面板组成的四等分视图,那么很有可能该应用不是在 Unity 中创建的,或不支持这种 MR 视频方法。 如果您创建了虚拟现实可执行文件,请阅读相关说明,了解如何支持这种 MR 模式。 如果不是您的应用,则可能需要您选择另一个应用来制作 MR 视频。

开发人员和用户

如果您想要在 Unity 内设置 MR,请转至开发人员部分。 如果您想要学习如何玩现成的 MR 游戏,请转至用户 部分。 首先我们来介绍开发人员方面,如果您的目标是创造出色的 MR 体验,从此处开始。 稍后我们将学习最终用户方面,如果您的游戏已经配置了开发方面,则可以从这里开始。 我们将限制这一讨论,重点关注如何在 Unity 和 SteamVR 系统内实现 MR,因为创建多个相机和绿屏以及合成它们有多种方法。 我将使用 HTC Vive,我曾看到其他人使用 Oculus Rift* 和 Touch* 控制器,但这不在本文的介绍范围之内。 我们立即开始吧!

开发人员方面

我将首先介绍当前的本机 SteamVR 插件方法。 这种方法可免去系统设置中的许多猜测,为您提供快速、高品质的 MR 设置。 提供的工具位于当前系统之上,通过自动化或助手解决方案减少了流程中的手动或繁琐环节。 如果未涉及您项目所需的特定设置或流程,那么没有必要终止,因为流程的其余部分是完全独立的。

本机(内置)SteamVR MR 概述

发明这一工具的团队真是太棒了。 SteamVR 设置利用剪切面和播放器位置创建多个视图,以此支持 MR 体验。 如果您想使用本机插件并在游戏中启用此功能,您有两个单独选择: +第三个控制器和无第三个控制器。 两者都需要使用 externalcamera.cfg。

使用 externalcamera.cfg 的示例

这一文件作为 externalcamera.cfg 进入项目的根目录。 这一文件会告知系统相机与控制器之间的偏移距离(以米为单位)。

x=0
y=0
z= 0
rx=0
ry=0
rz=0
fov=60
near=0.01
far=100
sceneResolutionScale=0.5

使用什么设置?

使用第三个控制器可让用户移动相机。 如果您打算使用固定式相机,请参见下面的无第三个控制器部分。 如果您的游戏需要移动相机,请参见下面的+第三个控制器部分。

无第三个控制器—本机 SteamVR MR 设置

  1. 使用额外的控制器预制件
  2. 将 SteamVR_Tracked Object (Script) 的索引设为设备 2。

用户需要对上面使用 externalcamera.cfg 的示例 部分中涉及的 externalcamera.cfg 进行设置。

注: 这需要始终使用 Unity IDE,除非您按照下面的“如何不使用 Unity IDE”部分操作。

+第三个控制器—本机 SteamVR MR 设置

  1. 使用额外的控制器预制件
  2. 将 SteamVR_Tracked Object (Script) 的索引设为设备 3。

这在概念上很简单。 您只需要一个通过 USB 连接到游戏电脑的额外控制器。

注: 这需要始终使用 Unity IDE,除非您按照下面的“如何不使用 Unity IDE”部分操作。

如何不使用 Unity IDE—本机 SteamVR MR 设置

两者都需要您在编辑器内运行项目。 如果你想制作一个独立版本,那么需要做一些额外的工作。

  1. 在层次结构的根目录中添加 “SteamVR_ExternalCamera” 预制件。
  2. 将 “Controller (third)” 拖入到 [SteamVR] 脚本 “Steam VR_Render” – External Camera。
  3. 在 SteamVR_Render.cs 中添加下列代码:
    	void Awake()
    	{
    	#if (UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0)
    	    var go = new GameObject("cameraMask");
    	    go.transform.parent = transform;
    	    cameraMask = go.AddComponent<SteamVR_CameraMask>();
    	#endif
    	    if (System.IO.File.Exists(externalCameraConfigPath)) {
    	        {
    	            if (externalCamera == null) {
    	                var prefab = Resources.Load<GameObject>("SteamVR_ExternalCamera");
    	                var instance = Instantiate(prefab);
    	                instance.gameObject.name = "External Camera";
    	            }
    	            externalCamera = instance.transform.GetChild(0).GetComponent<SteamVR_ExternalCamera>();
    	            externalCamera.configPath = externalCameraConfigPath;
    	            externalCamera.ReadConfig();
    	        }
    	    }
    	

用户方面

如果您已经有了一个支持虚拟现实的系统,请跳至下面的 运行 MR 部分。

系统要求

我在下面添加了高端选项 (a) 和低端选项 (b)。

购物清单:

  1. 绿屏套件

    a. StudioPRO* 3000W 连续输出软盒照明套件,提供 10 英尺 x 12 英尺支持系统,383.95 美元(或类似)。
    b. ePhotoInc* 6 x 9 英尺棉色键背景,18.99 美元。

  2. 额外的控制器

    a. Vive 控制器,129.99 美元。
    b. 这款解决方案不需要额外的控制器,但如果您不是创建游戏的开发人员,则必须保持相机静止不动,并执行如下所述的变通方案。

  3. 相机

    a. Panasonic* HC-V770,带配件包,499.99 美元(或带用于实时相机视图的 HDMI 输出的类似相机;数码单反相机或无镜像数码相机可能行,但请注意,其传感器不适合长期运行,可能会过热。 )

  4. 视频捕捉卡

    a. Magewell* XI100DUSB-HDMI USB 捕捉 HDMI 3.0 - 299.00 美元(或类似的 HDMI 捕捉设备)。

  5. 计算机

    a. 如果您正在阅读这篇文章,那么您可能已经有一台具备虚拟现实功能的 PC。 除了最低虚拟现实规范之外,您将需要一个具备足够能力处理额外工作的系统(在比您需要的录制分辨率高 3 倍的分辨率下运行四等分视图,以及执行图层捕捉、绿屏色度键和 MR 合成)。 推荐使用高端的第六代或更高版本的英特尔® 酷睿™ i7 处理器(例如 7700K 或类似)

  6. 4K 显示器

    a. 鉴于 MR 捕捉四等分视图窗口的方式,您会希望能够在比最终视频输出分辨率高 4 倍的分辨率下运行该窗口。 这意味着,如果您想以 720p 的分辨率录制,则您需要能够在 1440p 分辨率下运行窗口,因为您一次只捕捉窗口的四分之一。 如果您想要以 1080p 的分辨率录制,则需要以 2160p 的分辨率运行窗口。 为此,您将需要一台能够处理这些分辨率的显示器; 或许为 4K 或更高。

关于一些选项的更多信息

  1. 绿屏

    您可以使用户外地毯(如 AstroTurf*)作为背景。 看起来似乎效果不错,应该持续很长一段时间,但实际上任何单一颜色的东西都应该不错。 推荐使用绿色,因为大多数系统(OBS*,或本教程提供的屏幕截图)都用绿色作为剪切或色度键。

  2. 控制器

    如果项目设置不当且需要一个额外的控制器,那么有一个涉及如何在软件中伪造第三个控制器的解决方案。 这个解决方案不在本文的介绍范围内,如果您想尝试一下,请点击此处了解更多信息。

  3. 相机

    使用真正的相机和网络摄像机进行摄像有巨大的差异。 上面列出的摄像机选项中有一些很棒的功能,且不像专业摄像机那么贵。 如果您使用静物相机(数码单反相机或无镜像数码相机),请注意,它们的传感器通常不适合不间断运行,因为可能会过热;这就是为何它们通常有 20 或 30 分钟的录像限制。 请务必小心,不要损害您的设备。

  4. 视频捕捉卡

    如果您使用外部相机,则需要使用捕捉卡才能使相机的 HDMI 输出显示为 PC 的可用源。 上文列出的相机使用 USB,是一款出色的全功能捕捉卡。 与使用与系统相连的内部卡相比,USB 捕捉卡的最大好处是其轻便易携。 若要与发布商、客户或其他开发人员进行现场沟通,您可将其装入一个袋中,向他们发送一个构件并向每个人展示游戏进展。 它可以让您快速传达信息和想法。

  5. 计算机

    我们正在进行的项目是一个计算密集型项目,因此 CPU 选择非常重要。 现代的高端英特尔酷睿 i7 处理器(如 7700K)非常适合这样的项目,因为许多进程是单线程密集型的(如来自 SteamVR 的合成器),高单核性能可起到真正的帮助作用。 使用四核或更高 CPU 可帮助您更好地捕捉、合成和录制 MR 视频。

运行 MR—设置

要查看设置,您只需要下面的 .cfg 文件和一个允许使用 MR 的游戏即可。 其中一些游戏包括 Fantastic Contraption、Job Simulator*、Space Pirate Trainer*、Zen Blade* 和 Tilt Brush* 等。

只有满足这两个要求后,设置视图才会出现:

  1. 在项目的根目录中添加一个名为 externalcamera.cfg 的文件。
  2. 将第三个控制器连接到系统。

运行 MR—步骤

注: 在使用以下步骤配置 .cfg 文件之前,这些步骤将无法使体验与现实保持一致。

  1. 关闭 SteamVR

    如果您打开 SteamVR,则会对其他进程造成影响,因此最好关闭。 同样,如果您以后遇到问题,重启将起到帮助作用。

  2. 将 externalcamera.cfg 文件放在项目的根目录中

    接下来,您需要将文件放在项目根目录的正确位置。 如果发现您的项目没有显示四面板四分屏,那么您需要在检查控制器之后验证根位置。

  3. 设置您的绿屏和灯

    您需要将人合成到虚拟现实环境中。 为此,您需要一个绿屏设置,将人从真实世界中移出并放入虚拟现实世界。

  4. 将相机连接到电脑/捕捉卡

    应对同时运行虚拟现实和 MR 所产生的额外开销基本上需要使用捕捉卡,仅使用网络摄像头是不够的。 另外,捕捉卡可让您从辅助摄像机中导入视频。

  5. 将控制器固定在相机上

    系统总是需要定位相机,我们通过让系统跟踪 Vive 控制器来实现这一点。 上面的配置文件基于 Vive 控制器相对于所连接相机的位置向系统提供偏移和相机信息。 控制器越紧越好。

  6. 拔下连接到系统的所有控制器

    SteamVR 在这个过程中会产生混乱。 如果您加入项目并发现第三台相机连接了错误的控制器,请拔下第三个控制器并重新插上电源,这样可以解决问题。

  7. 打开 SteamVR

    现在我们可以启动 SteamVR 了。

  8. 打开未连接到相机的两个控制器

    我们只想打开未连接的控制器,以便它们到达 SteamVR 手机插槽中的正确位置。 这是关键的一步,请务必进行这一步。 我还建议在灯塔上直接挥动控制器。

  9. 将连接到相机的控制器插入系统

    现在 Steam 已经知道前两个控制器的位置,您可以接入第三个控制器了。 如前所述,如果您加入项目并发现第三台相机连接了错误的控制器,请拔下第三个控制器并重新插上电源。

  10. 双击您所选的游戏

    这可以让您以最高分辨率打开项目。 出于某些原因,SteamVR 还会对管理员运行的应用给予优惠待遇,因此这应该有所帮助。

  11. 选择所需分辨率(比您所需的录制分辨率高 3 倍)

    这种情况可以使用 4K 或更高分辨率的显示器。 由于您只捕捉窗口的四分之一(并且合成多个图层),因此您需要在此处选择正确的窗口大小。 如果您想要以 720p 的分辨率录像,请选择 2560 x 1440。 如果您想要以 1080p 的分辨率录像,请选择 3840 x 2160。 您可能需要尝试不同的录像分辨率,具体取决于您的系统性能和所需的录像质量。

  12. 打开 OBS 或 XSplit*

    接下来我们将进入实时合成部分的内容。 尽管其他程序也可能有效,但这些程序都经过 MR 合成方面的测试。

  13. 添加裁剪的左上角,并将右上角作为 alpha;将这一图层标记为 “前景”

    本部分将介绍人的合成。 如果您没有时间将手机完全匹配到虚拟现实空间,请为控制器选择一个使用大符号的皮肤。 这将隐藏所有内容并非完全匹配的事实。 这是一份展示如何在 teamVR 中更改控制器皮肤的指南。

  14. 从您的相机添加视频流,并用色度过滤器清除背景;将这个视频流标记为“Live”

    将真人添加到虚拟现实环境是本项目最重要的部分。 根据您使用的程序,您可以通过多种方式来执行此操作。 下面是 XSplit 的屏幕截图,用来展示您可以对图层进行色键处理,从图像中删除单个颜色。

  15. 添加左下角;将这个图层标记为“背景”

    我们将这个图层放在您用来合成的程序的底部位置。 如果背景不可见,重复上述步骤。

  16. 关闭游戏并对配置文件进行配置

    若要创建配置文件,请使用本文开头介绍的工具或按照下面的内容操作。 提醒: 手动配置不仅难以正确完成,而且也是一个缓慢而费力的任务。 每次发生更改时,您都需要重启程序。 设置的平均时间约为 1 小时。 我们已经使用 MR 配置器工具将流程平均缩短了三分钟。 它也更加准确,因为安装时间长通常会导致人们在完成配置之前放弃。

如何在 externalcamera.cfg 中手动计算信息

x=0
y=0
z= 0
rx=0
ry=0
rz=0
fov=60
near=0.01
far=100
sceneResolutionScale=0.5

配置

注: 记住,您可以使用我们的工具跳过整个部分。

  1. 视野 (FOV) – 这必须是垂直 FOV

    FOV 是设置中难度最大的;先找出 FOV。 大多数相机制造商提供相机的 FOV 值,但这不是垂直 FOV。 这些技术中的大多数来自相机世界。 这是一篇关于如何找到 FOV的文章。

    注: 相机的 FOV 取决于焦距。 一旦完成设置,不要放大或缩小相机!

  2. 旋转

    RX、RY、RZ—这些是旋转角度。 0,0,0 表示手机是否与相机持平。 Y+ 是向上,Z+ 是向前,X+ 是向左。 请注意,这些是度数。

  3. 距离

    X、Y 和 Z 应使用卷尺进行测量。 记住,这些数字以米为单位。

  4. 测试

    打开您的游戏,在 OBS 或 XSplit 运行的情况下,查看是否排队。 如果没有排队,请关闭您的游戏,然后重试。

故障排除

如果您的系统或游戏滞后,选项包括缩小画布,降低帧速率,使用 GPU 对视频进行编码,或仅在没有流传输的情况下进行录制。 这也可能使事情变得更糟,具体情况取决于游戏和您的系统。 在有这么多不同选项的情况下,提供配置文件似乎不现实。 若要手动更改这些操作,请执行以下操作:

缩小画布

降低帧速率,请谨慎进行,如果帧速率低于 24,则可能会带来更多问题。

使用 GPU 进行渲染

仅录像;不流传输

这篇文章是我作为导师和老师的相关技能的延伸。 通常我可以引导别人顺利过渡到新技术,我非常喜欢与别人分享我的知识。请尽情享受 MR 体验,有任何反馈请发送至:info@undeminerstudios.com

有关编译器优化的更完整信息,请参阅优化通知