简介和先决条件
1.1. 简介
SpatialLabs Unity 插件为您提供了在采用 SpatialLabs 技术的设备上打造沉浸式立体体验所需的所有组件。它的功能类似于 VR 插件,既提供立体渲染功能,又提供虚拟摄像头,用于跟踪用户在三维空间中的头部运动。然而,SpatialLabs 还拥有一组独特的功能,可以将其整合到您的项目中,让您能够打造传统 AR/VR 设备无法实现的体验和互动。
1.2. 先决条件
要开发 SpatialLabs 体验,需要满足以下条件:
- 安装了 SpatialLabs Experience Center Pro 软件套件的 Acer SpatialLabs Pro 设备。请注意,您可以在非 SpatialLabs 设备上开发您的项目。但是,您需要一台设备才能预览、测试和运行您的应用程序。Unity 项目只能在 SpatialLabs Pro 版本上运行。
- 使用兼容版本的 Unity 引擎的工作安装(请参阅下文了解版本兼容性信息)。
- 将 SpatialLabs Unity 插件的副本添加到您的项目文件夹中(说明如下)
1.3. Unity 版本兼容性
SpatialLabs Unity 插件已通过验证,推荐用于Unity 2021.3 LTS 和Unity 2022.3 LTS(长期支持)。要使用该插件,您至少需要安装 Unity 2021.3。
1.4. Unity 项目兼容性
Unity Hub 提供各种渲染模板,让开发者能够快速构建项目。所有 3D Core 模板均兼容立体 3D。对于需要 2D GUI 和鼠标交互的项目,我们建议重点关注URP或HDRP 3D Core 模板。
3D 核心模板 | 2021.3 LTS | 2022.3 LTS |
BRP——内置渲染管道 | 不支持 2D GUI | 不支持 2D GUI ️ |
URP——通用渲染管道 | ✓ | ✓ |
HDRP——高清渲染管道 | ✓ | ✓ |
安装插件
2.1. 下载插件
从SpatialLabs 开发者网站 下载适用于 Unity 的 SpatialLabs 插件,然后解压缩下载的文件。

2.2. 将插件复制到Packages文件夹中
将“ com.acer.spatial-labs-sdk ”文件夹复制到Unity 项目的“ Packages ”文件夹中。“ Packages ”文件夹应包含“ manifest.json ”和“ packages-lock.json ”文件。如果 Unity 编辑器要求启用新的输入系统包,请单击“是”,这也会重新启动编辑器。


2.3. 启用 SpatialLabs 插件
打开您的 Unity 项目,然后导航到“项目设置”菜单。您应该能够在左侧面板中找到“ XR 插件管理”。启用“启动时初始化 XR ”以启用运行时自动启动 XR。确保在“插件提供程序”菜单下选中“ OpenXR ”复选框。

在“ OpenXR”子选项卡的“ OpenXR Feature Groups ”列表中,选中“ Acer: Dynamic Frustum ”复选框以激活该插件。

在 SpatialLabs 中查看场景
3.1. 在编辑器中修改相机
由于 SpatialLabs 会跟踪头部相对于物理屏幕的相对位置,因此需要进行额外的相机设置才能正确显示立体 3D 的视觉投影。以下是两种设置相机的方法:
3.1.1 将相机转换为 XR Rig
对于非 XR 项目,您可以通过右键单击主摄像头游戏对象来选择“XR/将主摄像头转换为 XR Rig”选项。

通常建议将XRRig GameObject的“Camera Y Offset”设置为 0,然后将其放置在所需的位置。

3.1.2 为相机添加 Tracked Pose Driver 组件
如果相机无法执行“将主相机转换为 XR Rig”,您还可以向其添加“跟踪姿势驱动程序”组件。选中“使用相对变换”选项以激活它,并将相机保持在层次结构视图的根目录。

注意
确保相机对象的通用比例保持为 1,因为缩放它可能会导致不正确的 IPD(瞳孔间距)。如果要调整视图空间的缩放比例,建议直接按比例修改XRRig GameObject 的统一比例。
3.2. 在游戏视图中播放场景
使用上述两种方法之一设置好相机后,只需按下游戏视图顶部的“播放”按钮即可激活立体 3D。

3.3 Unity播放器设置
为了获得最佳体验,建议对 Unity 项目和 3D 环境进行额外设置更改,以确保头部跟踪的平滑刷新以及使用 Unity 播放器正常激活立体 3D。
3.3.1 项目设置
导航至“项目设置”菜单,在左侧面板中找到“质量”选项卡。在“渲染”部分,将“垂直同步计数”设置为“每个垂直空白”。

在左侧面板中 找到“播放器” ,然后将“全屏模式”设置为“全屏窗口” ,并在分辨率部分启用“在后台运行” 。

注意
为了正确显示立体 3D,请确保桌面分辨率设置为 3840×2160。
虚拟屏幕
激活 SpatialLabs Unity 插件后, 将创建一个代表物理显示的虚拟屏幕,让 Unity 相机充当用户的眼睛。这是通过头部跟踪和确定用户相对于虚拟屏幕的位置和视角来实现的。因此,用户可以通过显示器体验三维深度。默认情况下,视锥体小工具代表 3D 场景中的虚拟屏幕和视点。
将相机放入场景后,通常会将其放置在与其对应模型相同的位置。下图展示了模型与虚拟屏幕(红色窗口表示)的展示位置。这种定位使用户能够舒适轻松地以立体 3D 方式查看模型,模型看起来会略微突出于显示屏。

如果模型位于摄像机前面,它将出现在虚拟屏幕内并产生正视差效果。

另一方面,如果模型位于相机后面,它就会显得从虚拟屏幕中弹出,并产生负视差效果。
SpatialLabs 缩放
默认情况下,虚拟屏幕与 SpatialLabs 显示器的物理尺寸对齐,确保您的 Unity 场景及其内容以真正的 1:1 比例呈现。不过,您可以根据项目要求自定义XRRig GameObject 的统一比例。统一比例值为 1 可保持物理精度(1:1 比例)。将值增加到 5 会将比例调整为 1:5,将其设置为 10 会将其调整为 1:10,从而使场景中的物体更小。
Uniform Scale(统一比例) = 1

Uniform Scale(统一比例) = 2

显示 2D GUI
由于 Unity OpenXR 不支持 2D GUI,此插件提供了一种解决方法,可在 SpatialLabs 设备上为不同的渲染器显示 2D GUI。绘制 3D 世界空间 GUI 不需要特殊设置。
笔记
2D GUI 的指针交互仅在 Standalone Player 中可用。因此,在 Unity Editor 中开发应用程序时,必须单击 Game Window 中显示的 GUI。
6.1 通用渲染管线
6.1.1 添加渲染器功能
在项目视图中选择当前使用的“Universal Renderer Asset” 。在 Renderer Features 部分,点击“Add Renderer Feature”,然后在 Inspector 中选择“Universal Render Pipeline 下的 GUI Overlay Feature”。确保在 URP 渲染时将“Intermediate Texture”设置为“Always”。

通过使用通用渲染管道的 GUI 叠加功能,您可以将 2D GUI 渲染到Spatial Labs 设备上的“RenderTexture”中。要配置您的 UI 以绘制到 RenderTexture 中,请继续执行下一步。

6.1.2 添加 UI Rig(如果已有,请跳过此步骤)
从菜单栏中选择“GameObject/UI/Text – TextMeshPro”。这将创建一个 UI 元素,其文本显示在屏幕中央。

如果出现对话框,请单击“导入 TMP Essentials”。

6.1.3 创建UI相机
从菜单栏中选择“GameObject/Camera”。这将创建一个新相机,我们将配置它以将 2D GUI 渲染到 RenderTexture 中。(可选)将此新相机命名为“UI Camera” ,并从中删除“Audio Listener Component” 。

在此相机组件的渲染部分,将“Culling Mask”仅设置为“UI”。

在环境部分中,将“背景类型”设置为“纯色”。

在输出部分,将“输出纹理”设置为“GuiRenderTexture”。

6.1.4 配置 UI 设置
在 Hierarchy 视图中选择“Canvas”游戏对象。在此 Canvas 组件的 Canvas 部分中,将“渲染模式”设置为“屏幕空间 – 摄像头”。

在 Canvas 部分中,将“渲染相机”设置为“UI 相机”。

在 Canvas Scaler 部分,将“UI 缩放模式”设置为“随屏幕尺寸缩放” ,并将“参考分辨率”设置为“1920 x 1080”(建议)。

笔记
在特定的 URP 设置下,RenderTexture可能无法正常显示。建议从 Unity Hub 创建一个新的3D 示例场景 (URP)项目以进行进一步开发,以确保 2D GUI 可以在 SpatialLabs 上显示。
6.2 高清渲染管线
6.2.1 添加自定义通行证
在高清渲染管线中,需要将 2D GUI 元素渲染到“RenderTexture”中,然后利用“CustomPass”功能将 RenderTexture 显示到屏幕上。您可以按照以下步骤设置此过程。
从菜单栏中选择“GameObject/Volume/Custom Pass” 。这将创建一个带有“Custom Pass Volume”组件的 GameObject。

或者,将这个新的游戏对象命名为“GUI Overlay”。

在自定义通道体积部分中,将“注入点”设置为“后期处理后”。

单击“自定义通道” 列表中的加号图标以打开自定义通道列表。从那里,选择“全屏自定义通道”选项以添加新通道。此通道将配置为在 3D 渲染之上绘制 GUI 渲染纹理。

设置自定义通道参数如下:

Property(属性) | Value(值) |
Name(名称) | “GUI Overlay” |
Target Color Buffer(目标颜色缓冲区) | Camera(相机) |
Target Depth Buffer(目标深度缓冲区) | None(无) |
Clear Flags(清除标记) | None(无) |
Fetch Color Buffer(获取颜色缓冲区) | False(否) |
FullScreen Material(全屏材质) | GUIOverlayHDRP |
Pass Name(通道名称) | Custom Pass 0(自定义通道 0) |
注意
- 设置名称是可选的。
- 要设置全屏材质,请单击对象选择器中的圆圈图标,搜索“GUIOverlayHDRP”,然后单击关联的材质图标。
6.2.2 添加 UI Rig(如果已有,请跳过此步骤)
从菜单栏中选择“GameObject/UI/Text – TextMeshPro”。这将创建一个 UI 元素,其文本显示在屏幕中央。

如果出现对话框,请单击“导入 TMP Essentials”。

6.2.3 创建UI相机
从菜单栏中选择“GameObject/Camera”。这将创建一个新相机,我们将配置它以将 2D GUI 渲染到 RenderTexture 中。(可选)将此新相机命名为“UI Camera” ,并从中删除“Audio Listener Component” 。

在此相机组件的渲染部分,将“Culling Mask”仅设置为“UI”。

检查“自定义框架设置” 以列出“框架设置覆盖” ,然后检查“自定义通行证”左侧的覆盖切换,并确保取消选中“自定义通行证”右侧的切换。

在环境部分,将“背景类型”设置为“颜色”。

在输出部分,将“输出纹理”设置为“GuiRenderTexture”。

6.2.4 配置 UI 设置
在 Hierarchy 视图中选择“Canvas”游戏对象。在此 Canvas 组件的 Canvas 部分中,将“渲染模式”设置为“屏幕空间 – 摄像头”。

在 Canvas 部分中,将“渲染相机”设置为“UI 相机”。

在 Canvas Scaler 部分,将“UI 缩放模式”设置为“随屏幕尺寸缩放” ,并将“参考分辨率”设置为“1920 x 1080”(建议)。

SpatialLabs 插件设置
您可以在 OpenXR 功能设置面板中自定义 SpatialLabs Unity 插件的立体行为。这些是适用于整个项目的全局参数。
要访问这些设置,首先导航到“项目设置”窗口中的“OpenXR”选项卡。从那里,单击位于“Acer:动态视锥功能”复选框旁边的齿轮图标。

新打开的窗口显示全局可调参数。

参数 | 描述 |
---|---|
FieldOfViewAxis | 指定视场值的轴(垂直或水平)。 |
FieldOfView | 当未设置 UseDynamicFov(使用动态视场) 时,用于计算相机视锥体的视场值。 |
UseDynamicFov | 根据眼睛位置调整视场。 |
WorldScaleFactor | 该值与每个场景的 SpatialLabs Scale(SpatialLabs 缩放) 值相乘,以便对项目中所有场景应用统一缩放。 |
IPD | 瞳孔间距。 |
UseFixedHeadPos | 设置固定头部位置,而非使用头部追踪。 |
FixedHeadPos | 当设置 UseFixedHeadPos(使用固定头部位置) 时的固定头部位置值。 |
ScalingMode | <li> ScaledSize(缩放尺寸):表示 3D 场景内的虚拟屏幕将填满 SpatialLabs 显示屏。</li> <li> OriginalSize(原始尺寸):表示 3D 场景内虚拟屏幕的尺寸由当前 SpatialLabs 显示屏决定。</li> |
ScreenSize | 定义 3D 场景内虚拟屏幕的尺寸。 |
ShowFrustumGizmo | 视锥体小工具代表 3D 场景中的虚拟屏幕和视点。 |
示例
通过查看示例,您可以了解如何为 SpatialLabs 设备设置 Unity 场景。示例可以通过“包管理器”导入。打开包管理器窗口后,单击“ Acer SpatialLabs SDK ”,然后展开“示例”部分。

示例 | 描述 |
---|---|
2D GUI 界面设置示例(高清渲染管线) | 适用于高清渲染管线(HDRP)的 GUI 界面设置示例 |
2D GUI 界面设置示例(通用渲染管线) | 适用于通用渲染管线(URP)的 GUI 界面设置示例 |
3D 场景设置示例(高清渲染管线) | 高清渲染管线(HDRP)对应的基础 3D 场景 |
3D 场景设置示例(通用渲染管线) | 通用渲染管线(URP)对应的基础 3D 场景 |
3D 场景设置示例(内置渲染管线) | 内置渲染管线(BRP)对应的基础 3D 场景 |
建议
以下列表提供了一组有关如何在 SpatialLabs 中实现更佳性能的提示。
9.1 NVIDIA 控制面板
在 NVIDIA 控制面板的“管理 3D”设置部分中,将“全局设置”下的“最大帧速率”设置为60 FPS。它将增强 Unity 的头部跟踪刷新率。

Was this helpful?
0 / 0