Configuring your Unity Project for XR

要为XR配置Unity项目,请执行以下步骤:

  1. 打开Project Settings窗口(菜单:Edit > Project Settings),然后选择XR Plug-in Management
  2. 如果尚未安装该软件包,请单击 Install XR Plug-in Management。 您也可以从Package Manager窗口中安装它。
  3. 安装完成后,选择一个 Plug-in Provider 提供程序以为相应的构建目标启用它。 这样做:
    1. 选择一个构建目标(例如 Android)。
    2. 选中要用于该构建目标的每个插件左侧的复选框。
  4. 插件加载后,它会显示在XR插件管理下的左侧导航栏中。 单击该插件为每个构建目标配置其设置。
  5. 要设置跟踪,请从Unity的主菜单中转到 GameObject> XR>Add XR Rig

注意:

  • 选择XR插件提供程序将为相应的构建目标启用该提供程序。 如果该插件包不存在,Unity会自动安装它。
  • 禁用插件不会自动卸载现有软件包。 从 Package Manager.
    中卸载提供程序插件。
  • 有关第三方插件的列表,请参阅 Getting Started with VR Development。

在XR插件框架中设置跟踪

在新的XR插件框架中已删除了在2019.3之前的Unity版本中使用的隐式摄像机跟踪。 隐式跟踪仅适用于简单的仅使用HMD的应用程序,但是与控制器和其他交互相关时,隐式跟踪却不那么直观。

要确保使用XR插件框架正确配置了XR跟踪,请按照以下步骤操作。

从新Scene(场景)开始

如果您从新Scene开始,则以下说明适用,或来自满足以下条件的Scene:

  • 场景中只有一台摄像机,并且该摄像机被标记为主摄像机。
  • 场景中的相机位于层次结构的根部。

在Unity的主菜单中,转到 GameObject > XR > Add XR Rig。 这将尝试将新Scene转换为正确支持XR插件框架的Scene。

现在,如果您在控制台日志中没有看到任何错误,则现在应该可以在Scene中单击Play,并查看在XR插件管理包中配置的设备的“摄像机”轨迹。

如果Unity无法正确迁移您的场景,则控制台日志中会显示错误。 请按照下面的从现有Scene(场景)开始部分中的说明进行操作。

从现有Scene(场景)开始

与迁移空场景相比,从现有场景进行迁移还有其他步骤。 因此,取决于场景的配置方式,会有不同的选项。 总体目标是使场景跟踪的方式与迁移到XR插件框架之前的方式相同。

识别场景类型

在场景中找到标记为“主摄像机”的摄像机。 Unity使用此相机渲染到HMD或其他主要设备。

如果主摄影机是GameObject:

  • 位于项目层次结构的根部,请按照迁移简单场景的步骤进行操作。
  • 不在项目层次结构的根本位置,请按照迁移复杂场景的步骤进行操作。

迁移一个简单的场景

要迁移简单的场景,请执行以下步骤。

1. 创建XR Rig Prefab的实例。

迁移以前位于“场景”层次结构根目录中的摄影机,可以通过实例化XR Rig Prefab将现有摄影机交换到XR Rig。
该软件包包含的内容。

您可以在Packages / XR Legacy Input Helpers / Prefabs文件夹中找到此Prefab。 将Prefab拖动到Scene层次结构中以创建它的新实例。

2. 移动XR装备以匹配相机的位置。

现在您有了XR Rig Prefab的实例,您需要配置XR Rig GameObject,以便在应用程序启动时生成的Camera位置正确。

更改XR Rig GameObject的位置和旋转,使其与当前“主摄影机”的位置匹配。 如果您要对主摄像机应用比例转换,请确保也将此比例应用于XR Rig GameObject。 如果您缩放XR装备,强烈建议在所有三个轴上使用统一的缩放比例。

3. 如有必要,请复制位置更改。

如果未迁移场景中的主摄像机位于地板上方(其Y分量> 0.0f),则需要复制此位置更改。 您可以通过几种不同的方式来执行此操作,具体取决于更改要复制的原始位置。

3.1-模拟用户身高的抬升

如果将先前的主摄像机抬高到地板上方以模拟用户的身高,并且该应用程序使用设备跟踪原点(有时称为“固定”跟踪模式),则“摄像机偏移”组件将执行此附加抬升操作。 否则,请参阅下一节。

要在“设备跟踪原点”模式下使用应用程序时,将摄影机配置为具有垂直方向的提升,请在XR装备GameObject的“摄影机偏移”组件上设置以下选项:

Option Value
Requested Tracking Mode Device
Camera Y Offset Set this option to the height at which the existing Main Camera is raised to simulate user height.

配置完这些选项后,将XR Rig GameObject的Y位置更改为您在应用程序中通常认为的“地板”(通常为0.0f)。 相机偏移组件会根据需要添加任何其他的提升。

3.2-抬起表示摄像机位置

如果未迁移的场景使用“地板跟踪原点”(历史上称为“缩放比例”跟踪模式),并且“主摄像机”的位置代表了用户的起始点,而没有包括他们的身高(也就是说,摄像机实际上在逻辑上“ floor”),请按照以下步骤正确迁移场景:

  • 移动XR装备,使其与Unity相机在世界空间中的当前位置和旋转方向匹配。
  • 如果应用程序使用地板跟踪原点,请将“摄像机偏移”组件上的“请求的跟踪模式”设置为“地板”。这样可以确保摄像机具有正确的垂直偏移。
  • 如果应用程序不使用楼层跟踪原点,请将“摄像机偏移”组件上的“请求的跟踪模式”设置为“默认”。无论应用程序以哪种设备跟踪模式启动,这都将应用正确的行为。
  • 如果您以前使用其他组件垂直移动“相机”并处理“设备”和“地板”追踪原点之间的差异,则可能需要禁用或修改此组件,以使不同组件不会多次错误地移动“相机”。

接下来,从XR Rig实例中删除“ Main Camera GameObject”,并将现有的“ Main Camera GameObject”作为“ Camera Offset GameObject”的父对象。

确保主摄影机游戏对象的位置和旋转度均为0,0,0。 始终更改XR Rig GameObject的位置,而不是更改相机的位置。 另外,请确保从GameObjects或组件到您的主摄像机的任何链接仍然正确。

5.为XR配置您的项目

请参阅上面的为XR配置Unity项目。

6.按播放

现在,您的场景已成功迁移,请按Play,并确保相机的起始位置与迁移到XR插件框架之前的位置相同。 如果不是,请参阅下面的“疑难解答”部分。

迁移复杂场景

如果您当前的场景正在使用来自旧版VR系统的隐式摄像机跟踪,并且“主摄像机”是GameObject层次结构的一部分,请按照以下步骤将旧版VR跟踪系统迁移到XR插件框架。

隐式摄影机更新将每帧两次更新主摄影机游戏对象的局部变换,这使主摄影机游戏对象相对于其所在的层次结构的位置,比例和旋转进行移动。

在这种情况下,您有两个选择来迁移场景:

  1. 保留现有层次结构,并添加组件以启用对当前层次结构的跟踪
  2. 迁移现有层次结构以使用XR Rig结构。

如果您的场景具有依赖于该层次结构的功能,通常建议保留现有的层次结构。 如果您具有相对简单的配置,则可以直接迁移到XR Rig。

留在原地

该方法只需对现有场景层次进行最少的修改即可在Unity中进行跟踪。 它涉及到在场景中的主摄像机中添加“跟踪姿势”驱动程序。 这样可以确保需要您当前GameObject层次结构的任何其他功能继续像以前一样起作用。

1.找到您的主相机,并向其中添加一个跟踪姿势驱动程序
在场景中找到主摄像机。

使用与XR Rig的主相机相同的设置来添加Tracked Pose驱动程序。 下面的屏幕截图显示了这些设置:

跟踪姿势驱动程序设置

Tracked Pose Driver settings

对场景中的所有主摄像机执行此操作。 如果需要跟踪场景中的其他设备,请参见“跟踪姿势驱动程序”设置,以获取适用于您的用例的正确选项。

2.为XR配置您的项目

查看 Configuring your Unity Project for XR 部分.

3.按播放

现在,您的场景已成功迁移,请按Play,并确保相机的开始位置与迁移到XR插件框架之前的位置相同。 如果不是,请参阅下面的“疑难解答”部分。

迁移到XR钻机
由于正在使用的层次结构数量众多,因此Unity无法提供具体步骤来迁移当前的场景层次结构以使用XR装备。 请参阅“传统输入助手”软件包文档中的“ XR钻机说明”部分,以了解XR钻机打算代表的内容。 这将允许您将现有层次结构映射到XR Rig中的概念。

要将场景配置为使用XR管理,请参见上面的“为XR配置Unity项目”部分。

如果仍然存在问题,请参阅下面的“疑难解答”部分。

故障排除

Issue Possible causes
Camera is too high in the Scene Is the Camera Offset component’s Requested Tracking Mode set correctly? Is the Camera Y Offset set too high?

你可能感兴趣的:(Configuring your Unity Project for XR)