一、创建ARSession 和 ARSessionOrigin
ARSession 和 ARSessionOrigin 两个对象,是AR功能的基础,缺少了这两个组件AR功能将无法运行。
1.在Hierarchy面板点击右键,再弹出的面板中选择“XR->ARSession 或 ARSessionOrigin”。
二、ARSession 组件
ARSession 主要用来管理AR应用的状态和处理AR应用的生命周期。通过启用或禁用 ARSession 来控制AR体验的生命周期。
当您禁用ARSession
时,系统将不再跟踪其环境中的功能,但如果您稍后启用它,系统将尝试恢复和维护以前检测到的功能。
设置 | 功能 |
Attempt Update | 勾选 “Attempt Update”选项,设备将尝试安装AR软件(如果可能)。对此功能的支持取决于平台。 |
Match Frame Rate | 匹配帧率 |
Tracking Mode | 跟踪模式。有三种选择:
|
检查设备支持
ARCre 和 ARKit 对硬件设备有要求,并不是所有手机都能够使用AR功能,因此在AR运行前需要先检查设备是否支持AR功能,如果不支持AR时可以提供其他替代体验。
public class MyComponent {
[SerializeField] ARSession m_Session;
IEnumerator Start() {
if ((ARSession.state == ARSessionState.None) ||(ARSession.state == ARSessionState.CheckingAvailability))
{
yield return ARSession.CheckAvailability();
}
if (ARSession.state == ARSessionState.Unsupported)
{
// 当前设备不支持AR功能
}
else
{
// 当前设备支持AR功能
}
}
}
ARSession
状态
ARSessionState | 描述 |
---|---|
None | AR系统尚未初始化,可用性未知。 |
Unsupported | 当前设备不支持AR。 |
CheckingAvailability | 系统正在检查当前设备上的AR可用性。 |
NeedsInstall | 当前设备支持AR,但AR支持需要安装其他软件。 |
Installing | AR软件正在安装中。 |
Ready | 支持AR并准备就绪。 |
SessionInitialized | AR会话正在初始化(即启动)。这通常意味着AR正在工作,但尚未收集到足够的环境信息。 |
SessionTracking | AR会话正在运行并正在跟踪(即设备能够确定其在世界上的位置和方向)。 |
AR Input Manager
AR Input Manager组件是启用世界跟踪所必需的组件,不启用此组件,Tracked Pose Driver(跟踪姿态驱动)将无法获取设备的姿态。默认是挂载在 AR Session 对象上。
三、AR Session Origin 组件
ARSessionOrigin
的目的是将可跟踪功能(如平面表面和特征点)转换为Unity场景中的最终位置、方向和比例。由于AR设备在“会话空间”中提供数据,“会话空间相对于AR会话的开始是一个未缩放的空间,因此ARSessionOrigin
执行适当的Unity空间转换。
AR Session Origin对象还有一个子对象AR Camera,AR Camera默认挂载Tracked Pose Driver 、AR Camera Manager、AR Camera Background,如下图所示。
Size
设置 ARSessionOrigin 的 Scale 属性,可以缩放来自设备的所有数据,包括AR摄像机的位置和任何检测到的可跟踪对象。 较大的值会使AR内容显得较小。 例如,缩放比例为10会使您的内容显得小10倍,而缩放比例0.1会使您的内容看起来大10倍。
ARPoseDriver
AR Pose Driver
根据设备的跟踪信息驱动父GameObject的本地位置和方向。最常见的用例是将ARPoseDriver
连接到AR相机上,以驱动相机在AR场景中的位置和方向。
ARCameraManager
AR Camera Manager 管理相机事件,包括管理设备相机纹理和设置光估计模式的属性。
设置 | 功能 |
Auto Focus | 勾选后设备会自动对焦 |
Light Estimation | 估算环境的照明特性。有五种选择:
虽然您可以同时请求其中任何一项,但对每种支持在设备之间差异很大。一些平台可能无法同时提供所有选项,也可能取决于其他功能(例如,相机朝向方向)。 |
Facing Direction | 控制相机切换,只在手机和平板电脑等手持移动设备上支持
|
ARCameraBackground
AR Camera Background 将AR Camera纹理渲染到屏幕上(即设备相机的背景纹理必须为每个帧渲染)。
设置 | 功能 |
Use Custom Material | 这个默认会由Unity根据平台来进行背景渲染,但如果勾选,我们就要提供背景渲染的材质、Shader。 |