要针对 XR 配置您的 Unity 项目,请按照以下步骤操作:
注意:
在 2019.3 之前的 Unity 版本中使用的隐式摄像机跟踪已在新的 XR 插件框架中删除。隐式跟踪适用于仅支持 HMD 的简单应用程序,但是与控制器和其他交互方式关联使用时,隐式跟踪并不那么直观。
要确保在 XR 插件框架中正确配置 XR 跟踪,请按照以下步骤操作。
如果从新场景开始,或者从满足以下条件的场景开始,则需要遵循下方的说明:
从 Unity 的主菜单中,选择 GameObject > XR > Add XR Rig。这时会尝试将新场景转换为正确支持 XR 插件框架的场景。
如果在控制台日志中没有看到任何错误,则现在应该可以在场景中单击 Play,并看到在 XR Plug-in Management 包中配置的设备所对应的摄像机跟踪。
如果 Unity 无法正确迁移场景,则控制台日志中会显示错误。请遵循以下从现有场景开始部分中的说明。
与迁移空场景相比,从现有场景进行迁移还需要一些其他步骤。因此,根据场景的配置方式会有不同的选项。总体目标是使场景跟踪的方式与迁移到 XR Plug-in Framework 之前的方式相同。
在场景中找到被标记为主摄像机 (Main Camera) 的摄像机。Unity 使用此摄像机来渲染到 HMD 或其他主要设备。
如果主摄像机游戏对象:
要迁移简单的场景,请遵循以下步骤。
迁移以前位于场景层级视图根目录的摄像机,这样可以通过实例化此包所包含的 XR 绑定预制件而将现有摄像机交换为 XR 绑定。
可以在 Packages/XR Legacy Input Helpers/Prefabs
文件夹中找到此预制件。将此预制件拖动到场景层级视图中即可创建该预制件的新实例。
现在有了 XR 绑定预制件的实例,接下来需要配置 XR 绑定游戏对象,以便在应用程序启动时生成的摄像机位置正确无误。
更改 XR 绑定游戏对象的位置和旋转,使其与当前主摄像机的位置匹配。如果要将缩放变换应用于主摄像机,请确保也将此缩放比例应用于 XR 绑定游戏对象。如果缩放 XR 绑定,强烈建议在所有三个轴上使用统一的缩放比例。
如果未迁移场景中的主摄像机位于地面上方(其 Y 分量大于 0.0f),则需要复制此位置更改。可以通过几种不同的方式来执行此操作,具体取决于要复制更改的原始位置。
3.1 - 升高用于模拟用户的身高
If the previous Main Camera was raised above the floor to simulate the height of the user and the application uses a Device Tracking Origin (sometimes called “Stationary” Tracking Mode), the Camera Offset component performs this additional uplift. Otherwise, see the next section.
要将摄像机配置为当应用程序以设备跟踪原点模式使用时摄像机垂直升高,则可以在 XR 绑定 (XR Rig) 游戏对象的 Camera Offset 组件中设置以下选项:
选项 | 值 |
---|---|
Requested Tracking Mode | 设备 |
Camera Y Offset | 将此选项设置为将现有主摄像机升高的高度(以模拟用户身高)。 |
配置完这些选项后,将 XR 绑定 (XR Rig) 游戏对象的 Y Position 更改为您在应用程序中通常视为“地面”的值(通常是 0.0f)。Camera Offset 组件会根据需要增加任何附加升高。
3.2 - 升高指示摄像机位置
如果未迁移的场景使用地面跟踪原点(以前称为“房间规模”跟踪模式),并且主摄像机的位置代表用户的起点,但不含身高(即,摄像机实际上是在逻辑“地面”上),请按照以下步骤正确迁移场景:
接下来,从 XR 绑定实例中删除主摄像机游戏对象,并将现有的主摄像机 (Main Camera) 游戏对象设置为摄像机偏移 (Camera Offset) 游戏对象的父代。
确保主摄像机游戏对象的位置和旋转均为 0,0,0。请始终更改 XR 绑定游戏对象的位置,而不是更改摄像机的位置。另外,请确保从游戏对象或组件到主摄像机的任何链接仍然正确。
请参阅上文的针对 XR 配置 Unity 项目部分。
现在,您的场景已成功迁移,接下来请按 Play,并确保摄像机的起始位置与迁移到 XR 插件框架之前的位置相同。如果不是,请参阅下面的“故障排除”部分。
如果当前场景使用来自旧版 VR 系统的隐式摄像机跟踪,并且主摄像机是游戏对象层级视图的一部分,请按照以下步骤将旧版 VR 跟踪系统迁移到 XR 插件框架。
隐式摄影机更新会在每一帧中更新主摄像机游戏对象的本地变换两次,这会使主摄像机游戏对象相对于其所在层级视图的位置、缩放和旋转进行移动。
在这种情况下,有两种方法来迁移场景:
如果您的场景具有依赖于现有层级视图结构的功能,通常建议保留该层级视图。如果具有相对简单的配置,则可以直接迁移到 XR 绑定。
此方法只需要对现有场景层级视图进行最少的修改,即可在 Unity 中启用跟踪。这一过程涉及将跟踪姿势驱动程序 (Tracked Pose Driver) 添加到场景中的主摄像机。这样可以确保需要当前游戏对象层级视图的任何其他功能继续正常运行。
在场景中查找主摄像机。
使用 XR 绑定的主摄像机所用的相同设置来添加跟踪姿势驱动程序 (Tracked Pose Driver)。以下截屏显示了这些设置:
对场景中的所有主摄像机执行此操作。如果需要跟踪场景中的其他设备,请参阅跟踪姿势驱动程序 (Tracked Pose Driver) 设置以获取适用于具体用例的正确选项。
请参阅上文的针对 XR 配置 Unity 项目部分。
现在,您的场景已成功迁移,接下来请按 Play,并确保摄像机的起始位置与迁移到 XR 插件框架之前的位置相同。如果不是,请参阅下面的故障排除部分。
Because there are an infinite number of possible hierarchies in use, Unity can’t provide specific steps to migrate your current Scene hierarchy to use the XR Rig. See the XR Rig explanation section of the Legacy Input Helpers package documentation to understand what the XR Rig is intended to represent. This will allow you to map your existing hierarchy to the concepts within the XR Rig.
要将场景配置为使用 XR Management,请参阅上文中的针对 XR 配置 Unity 项目。
如果仍然有问题,请参阅下面的故障排除部分。
问题 | 可能的原因 |
---|---|
摄像机在场景中太高 | Camera Offset 组件的 Requested Tracking Mode 是否设置正确? Camera Y Offset 设置是否太高? |