EasyAR头显扩展¶
EasyAR和头显SDK的关系¶
EasyAR的功能与头显的功能大部分是不重叠的。所以大部分情况下,EasyAR不会代理头显的功能,当你需要使用头显的一些功能,比如手势识别等的时候,你需要按照对应头显官方的做法来使用,并从其官方了解这些功能的具体使用方法和适用范围。
对EasyAR来说,头显SDK提供了在其设备上的运动跟踪能力,EasyAR也只利用了头显的这部分功能。请阅读 运动跟踪与EasyAR功能 来了解EasyAR功能与运动跟踪的关系,以及EasyAR的什么功能可以在有运动跟踪时使用。
对Pico、Qiyu、Rokid、Nreal等等这些AR/VR显示设备来说,设备自身运行不会使用EasyAR,EasyAR补足了这些设备在一些场景下的能力。
EasyAR 支持的头显 SDK 版本及设备请阅读 头显兼容性 。
头显扩展的导入和使用准备¶
导入头显SDK¶
从设备官方获取SDK并使用官方方法导入。这里列出几个已知头显的官方下载或文档链接,如有变化或链接失效请与头显官方确认。
确保头显自身的 demo 可以使用¶
如果在当前工程中第一次使用某个头显的SDK,请务必先在没有EasyAR的情况下使用它自身的demo,通常来讲这些demo都需要一些特殊的工程配置,请参考其官方文档来使用。许多设备SDK都提供物理相机输入的demo,比如Rokid的 RKCameraPreview。由于EasyAR需要物理相机的输入,而很多其它demo并没有使用到物理相机,所以其它一些sample或设备本身可以显示内容并不说明已经准备好了。
提示:默认情况下,EasyAR会在相机前显示一些运行信息,如果头显SDK配置正确,它必然会显示出来。很多时候,使用EasyAR但看不到任何显示都是因为设备SDK配置不正确,而其本身的Demo也无法合理运行。比如,在Nreal SDK的一些版本中,你需要先解决Nreal菜单 NRSDK > Project Tips
所显示的所有错误。其它眼镜有时候也有类似配置。
导入 EasyAR Sense Unity Plugin¶
通过Unity的 Package Manager window 来 使用本地tarball文件安装插件。

在弹出的对话框中选择 com.easyar.sense-*.tgz
文件。
导入EasyAR Sense Unity Plugin头显扩展¶
不同的设备SDK需要使用不同的扩展,所有扩展都需要通过Unity的 Package Manager window 来 使用本地tarball文件安装插件。这里列出已知一些头显扩展的包名及对应下载文件名。
Nreal SDK: 下载文件
EasyARSenseUnityPlugin_*.zip
,Unity插件包com.easyar.sense.ext.pico-*.tgz
头显扩展sample的使用¶
样例随对应的头显扩展一起分发(注意:不在Mega Studio里面)。可以使用 Unity的 Package Manager window 将样例导入工程中。
以Pico为例,

除了上述差异外,使用方法与其它sample一致,可参考 样例使用说明 。
在头显场景中添加EasyAR支持¶
以下图示以Nreal为例,其它头显操作方式类似。
准备可运行头显的场景¶
接下来这一部分假设你有一个已经可以使用头显的场景。根据头显官方文档或demo,创建一个可以在设备上运行的场景,也可以使用现有demo。
在场景中添加 EasyAR 组件¶
在场景中添加EasyAR的AR Session。可以使用GameObject菜单中的 EasyAR Sense > Ext: * > *
来添加预设好的AR Session。

如有必要你也可以自己组装AR Session,需要注意在AR Session中包含对应头显的FrameSource(比如Nreal是 NrealFrameSource )。
对于在设备上的使用,需要注意在AR Session启动后对应头显的FrameSource可以被选择为Session的frame source。
通常可以设置 ARComponentPicker.FrameSource 为 FirstAvailableActiveChild
并确保对应头显的FrameSource的transform顺序是所有frame source的第一个,

或者也可以设置 ARComponentPicker.FrameSource 为 Specify
并手动指定为对应头显的FrameSource。

然后需要在场景中创建 Target 或 Map,比如,如果你需要使用 稀疏空间地图
建图功能,你需要使用 EasyAR Sense > SpatialMap > Map : Sparse SpatialMap
创建 SparseSpatialMapController ,

最后,一个简单的可以在使用头显运行稀疏空间地图建图功能的场景可能是这样的,

你所使用的场景可能会根据使用的头显SDK或EasyAR Sense Unity Plugin 功能不同而不同。
在EasyAR场景中添加头显支持¶
以下图示以Nreal为例,其它头显操作方式类似。
准备可运行EasyAR的场景¶
接下来这一部分假设你有一个已经可以使用EasyAR的场景。你可以参考 样例使用说明 来使用sample,或参考 从零创建可运行的工程 创建一个全新的场景。
删除Main Camera¶
请根据具体头显使用规则操作,大部分头显会自己控制相机,但不排除有些SDK存在特殊情况。
头显内有Camera,大部分情况下需要先删除场景中现有的Camera。

在一些高级的用法中,你可以根据自己需要判断是否删除。
在场景中添加 EasyAR 头显支持组件¶
在AR Session中添加对应头显的FrameSource,选中 AR Session (EasyAR)
或 Frame Source Group
,然后通过菜单 EasyAR Sense > Ext: * > Frame Source : *
添加。

将对应头显的FrameSource移动到第一个。

在一些高级的用法中,你可以根据自己需要判断它的位置,也可以在代码中修改。
对于在设备上的使用,需要注意在AR Session启动后对应头显的FrameSource可以被选择为Session的frame source。
通常可以设置 ARComponentPicker.FrameSource 为 FirstAvailableActiveChild
并确保对应头显的FrameSource的transform顺序是所有frame source的第一个,

或者也可以设置 ARComponentPicker.FrameSource 为 Specify
并手动指定为对应头显的FrameSource。

在场景中添加头显组件¶
你可以遵循头显官方说明来添加头显的组件。
比如对于Nreal来说,大部分情况下,你需要添加一个 NRCameraRig
的prefab(如与Nreal官方说明冲突,请以官方说明为准)。

最后,一个简单的可以在使用头显运行稀疏空间地图建图功能的场景可能是这样的,

你所使用的场景可能会根据使用的头显SDK或EasyAR Sense Unity Plugin 功能不同而不同。
在运行之前,请确保阅读头显官方说明来了解一个有头显SDK的场景应该如何进行配置和运行。