在 Nreal 设备上使用¶
EasyAR 支持的 Nreal SDK 版本¶
以下 Nreal SDK 版本在当前EasyAR发布时已经支持:1.5.7 - 1.8.0,如果EasyAR使用到的Nreal接口在Nreal新版本中没有变化,可能也是可以直接支持的;如果这些接口存在少量变化,在EasyAR更新前也可以自行修改NrealFrameSource脚本。
Nreal的支持是通过EasyAR Sense的自定义相机实现的。在使用个人版时,如果运行时选择了自定义相机,EasyAR每次启动将只能使用100秒。使用付费版本的EasyAR Sense没有这个限制。
导入 Nreal Unity Asset Package¶
如果你在使用EasyAR的sample,需要确保在导入Nreal Unity Asset Package之后再打开sample场景,否则可能会出现异常。如果在这之前已经打开并保持了场景,建议删除并重新导入。
如果你已经有一个可以运行的Nreal工程,可以跳过这一步。
从 Nreal官方 获取Nreal SDK的 unitypackage
文件,通过 Unity > Assets > Import Package
来导入Nreal SDK。
创建 Nreal Unity Package (虚拟)¶
在这个版本发布的时候,Nreal SDK还未发布成一个Unity Package,但EasyAR会使用Unity Package来检查和使用依赖。
在Unity工程的 Packages
文件夹中创建一个文件夹 com.nreal.sdk
,并在该文件夹中创建文件 package.json
,其内容如下,注意其中 version
字段值需与你获取的Nreal SDK的版本号一致。
{
"name": "com.nreal.sdk",
"displayName": "Nreal MR SDK for Unity",
"version": "1.7.0",
"unity": "2019.4",
"description": "",
"keywords": [],
"dependencies": {}
}
在创建完上述文件之后,Unity工程目录中的文件结构会是这样的
.
├── Assets
└── Packages
└── com.nreal.sdk
└── package.json
如果今后Nreal官方通过Unity Package来发布SDK,就不再需要创建这个虚拟的Package。但如果Nreal官方发布的package name与上面不同,则需要修改EasyAR Package中所有 .asmdef
文件中使用到的 com.nreal.sdk
字符串为Nreal官方的name。
创建Nreal可使用的场景¶
如果你已经有一个可以运行的Nreal工程,可以跳过这一步。
根据Nreal官方文档或demo,创建一个可以在Nreal设备上运行的场景,也可以使用现有demo。一般建议在这个场景可以正常运行后再进行下一步。
在场景中添加 EasyAR 组件¶
参考 从零创建可运行的工程 中的描述,在场景中添加EasyAR的AR Session及其它需要的节点。可以使用GameObject菜单中的 EasyAR Sense >
一些AR Session预设或单独功能创建完成所需功能需要的AR Session。 EasyAR Sense > Eyewear
中收集了一些在眼镜上推荐使用的预设。
对于在Nreal设备上的使用,需要注意在AR Session启动后 NrealFrameSource 可以被选择为Session的frame source。
通常可以设置 ARComponentPicker.FrameSource 为 FirstAvailableActiveChild
并确保 NrealFrameSource 的transform顺序是所有frame source的第一个,
或者也可以设置 ARComponentPicker.FrameSource 为 Specify
并手动指定为 NrealFrameSource 。
如果AR Session中还没有 NrealFrameSource ,可以通过菜单 EasyAR Sense > HMD > Frame Source : Nreal
添加。
然后需要在场景中创建 Target 或 Map,比如,如果你需要使用 稀疏空间地图
建图功能,你需要使用 EasyAR Sense > SpatialMap > Map : Sparse SpatialMap
创建 SparseSpatialMapController ,
最后,一个简单的可以在Nreal上运行稀疏空间地图和稠密空间地图建图功能的场景可能是这样的,
场景可能会根据使用的 Nreal SDK或EasyAR Sense Unity Plugin 功能不同而不同。