Skip to content

场景识别定位开发

在Assets/Recognition/SceneReco中,提供了2个环境识别与跟踪的示例场景(见Assets/Recognition/SceneReco/Tutorial),双击打开后既可在unity editor中修改配置 运行或编译。

ARFoundationExample:支持通用Android和iOS设备的环境识别示例场景。

StARkitMapExample:支持晨星眼镜设备的环境识别示例场景。

若需要做虚实叠加,可以通过晨星视觉智能平台网页下载所需的3D场景模型,将其置于unity场景中用于参考,确保3D模型的position和rotation在(0,0,0),再将此model拖至[StARkitMapSession]下SR Scene Session中的场景模型。

3D模型的材质需要绑定自带的:

请注意SRApplication 里key和secret的填写。一个开发者存在多个项目时,上传地图到哪个项目,就填写对应项目的key和secret。

一、本地重定位

此功能需要将云端下载zip包中的xxxx_ld.dat文件放到\Assets\StreamingAssets\MapConfig路径下一起编译。

运行示例场景apk可看到如下界面,选择“Loc”,取消勾选“UseCloud”,在“请输入map id”输入框中输入id;

点击”开始识别“界面会有提示->(id)重定位中;

移动camera进行环境重定位,成功后界面会有提示->(id)重定位成功,同时放在上述unity开发场景中的对应model会贴附到真实环境中,也可观察屏幕右下方重定位前后的坐标信息。

二、unity预制件配置说明

SRApplicationSDK 通用预制件
Domain Host设置平台网站域名,通常为https://daystar.lenovo.com, 私有云开发者的具体修改值需联系服务器管理员
App Key需要识别的APP对应的Key
App Secret需要识别的APP对应的Secret
SRFrameManagerSDK 通用预制件
Device Type

设备类型
D_ARFoundation:Android设备和iOS设备
D_Starkit:晨星AR眼镜连接拯救者手机和基于光学透视的晨星AR眼镜

Resolution相机分辨率
Auto Open Camera是否自动开关相机
SRRecognitionTargetReco预制件
AutoGetFrame

True:自动获取图像,无需开发者传图像
False:开发者需自主传入图像帧

AutoStartReco

True:应用启动时自动开始识别
False:开发者手动调用接口开启识别

SRTrackingMode

TARGET_TRACKING:物体跟踪,建议在手机、PC等设备上使用
ENV_TRACKING:环境跟踪,建议在晨星AR眼镜上使用,适用于物体静止的场景

Roi Width Ratio识别感兴趣区的宽度与图像宽度比例
Roi Height Ratio识别感兴趣区的高度与图像高度比例
SRTargetModelTargetReco预制件
Tag目标唯一标识,由云端系统生成
Auto Add Target自动加载目标,取消勾选后需开发者自行调用接口加载,适合高级开发者使用
Auto Enable Target自动激活目标,取消候选后需开发者自行调用接口激活

三、SceneReco接口介绍

stARkit SDK中SceneReco提供的接口类为SRSceneRecoBehaviour,该类提供了实例获取方法public static SRSceneRecoBehaviour Instance(bool cloud),参数为是否使用云服务,通过该方法获取类实例后即可调用其中的接口控制算法行为。其中控制识别算法的接口主要有:

流程控制接口

//========================================================
//开启重定位
//"relocTimeoutMS": 重定位的时长
//"mapid": >=0 重定位模式
//"localMapPathDirectory":本地存放id特征文件的路径
//========================================================
public virtual SRRestultCode SceneRecoStart(float relocTimeoutMS,int mapid=-2,string localMapPathDirectory = null)

//========================================================
//停止重定位
//========================================================
 public virtual SRRestultCode SceneRecoStop()
//========================================================
//获取环境id列表
//========================================================
  public virtual SRRestultCode GetSceneList(int pageNo, int pageSize)

//========================================================
//根据环境id删除对应特征文件
//========================================================
  public virtual SRRestultCode DeleteSceneData(int mapId)
//========================================================
//传数据
//========================================================
public virtual SRRestultCode SubmitFrame(SRFrameData[] frameDatas,List<byte[]> datas)

SceneReco自定义回调事件

stARkit环境识别提供了一组注册接收回调和取消回调注册。开发者可以通过注册回调的方式触发自定义行为。

//========================================================
//注册接收回调
//"SRBaseSceneRecivedData":重定位过程中的状态信息
//========================================================
 public void RegisterRecived (Action<SRBaseSceneRecivedData> recived)

//========================================================
//取消回调注册
//========================================================
 public void UnRegisterRecived(Action<SRBaseSceneRecivedData> recived)

四、图片识别定位

图片目标是指开发者在平台上传一张图片,经云端自动处理后生成可用于SDK识别的目标。然后开发者将该图片打印出来后,SDK可直接识别打印的图片,进行叠加各种虚拟的信息。图片目标的制作流程与模型目标基本一样,仅在于上传时选择图片即可。

注意:若该识别应用是运行在AR眼镜,请务必填写正确的打印图片宽度

在项目页面点击“物体识别目标物”,进入目标管理页面后,可以看到当前项目中的所有目标及其信息。上述各类目标在经过平台处理后,显示为可用状态时,可以通过目标列表右侧的“下载”按钮,将制作好的目标下载到本地电脑中,用于后续的应用开发。 下载的目标为tag[id][rand_string].zip的形式,请不要更改文件名和内容。

往后的开发流程、接口定义等,与物体地图定位一致,请参考物体地图定位章节。