MegaTracking_Nreal

演示如何在Nreal设备上使用Mega的基本功能,通过工具导入Block,摆放3D内容,并最终运行查看跟踪效果。

配置和运行

请参考 样例使用说明 进行配置和运行。

需要注意的是,在打开sample场景之前,你需要根据上述文件中与Nreal相关的描述导入Nreal文件并创建虚拟的Package。如果顺序反了,你会遇到很多无法恢复的错误。

用法

需要佩戴眼镜使用。关于Nreal眼镜的具体使用方法需查阅Nreal的官方说明。

该sample不能在PC上运行。

打包安装应用后,在Nreal眼镜中启动,看到的显示内容与 MegaTracking_Basic sample 是类似的,有一片显示debug信息的区域。启动后会直接开始定位跟踪,需要注意应用的权限都事先打开,并确保设备网络连接正常。

在使用Nreal设备进行开发时,建议多使用adb remote调试功能查看实时日志,以便跟踪运行时的各种状态。

详解

这个sample可以是无代码的。脚本中的代码只有两个作用:

  1. 显示debug信息

  2. 显示未付费时在眼镜上的使用限制信息

场景是如何创建的?

创建EasyAR Mega场景 这一小结的内容介绍了场景中EasyAR相关功能的创建。除此之外,你还需要添加Nreal本身的功能节点到场景中,可以参考Nreal的官方说明。

在 Nreal 设备上使用 对EasyAR Sense Unity Plugin中的Nreal的支持做了更多的描述。

3D模型在哪里?

场景中并未提供3D模型。如果不自己创建或添加模型,运行时将只显示相机画面。你需要根据 样例使用说明 的描述,比照工具导入的Block在需要的地方摆放3D模型。

debug信息是如何展示的?

MegaTracking_Basic 相同,可以参考对应描述。

100秒倒计时与超时功能停止

如果你使用的是个人版SDK,在超过100s之后整个SDK功能将停止。下次启动即可恢复。

sample中显示了100s倒计时。

EasyAR License for EasyAR.NrealFrameSource will timeout for current process within ** seconds. (Personal Edition Only)

这段提示是由下面这段代码输出的:

// avoid misunderstanding when using personal edition, not necessary in your own projects
if (!string.IsNullOrEmpty(Engine.errorMessage()))
{
    trialCounter = DateTime.MinValue;
}
if (trialCounter.OnSome)
{
    if (Session.State >= ARSession.SessionState.Ready && (Session.Assembly.FrameSource is ARFoundationFrameSource || Session.Assembly.FrameSource is HuaweiAREngineFrameSource || Session.Assembly.FrameSource is NrealFrameSource || trialCounter.Value == DateTime.MinValue))
    {
        var time = Math.Max(0, (int)(trialCounter.Value - DateTime.Now).TotalSeconds + 100);
        Status.text += $"\n\nEasyAR License for {Session.Assembly.FrameSource.GetType()} will timeout for current process within {time} seconds. (Personal Edition Only)";
    }
}

这是一段提示,可以安全的删除,但删除提示并不影响100秒本身的限制。

如需不限时间的使用,请购买SDK。一般在购买Mega时都是有相应的购买选项的。

Nreal的功能 X 该如何使用,是否支持?

EasyAR与Nreal各自有各自的SDK,两个SDK互不干扰且互为补充。因此,Nreal能使用的功能你仍能使用,EasyAR并不会封装或阻碍相关功能,你需要根据Nreal官方说明进行配置和使用。