颜色外观
场景识别定位开发
在Assets/Recognition/SceneReco中,提供了2个环境识别与跟踪的示例场景(见Assets/Recognition/SceneReco/Tutorial),双击打开后既可在unity editor中修改配置 运行或编译。
.png)
ARFoundationExample:支持通用Android和iOS设备的环境识别示例场景。
StARkitMapExample:支持晨星眼镜设备的环境识别示例场景。
若需要做虚实叠加,可以通过晨星视觉智能平台网页下载所需的3D场景模型,将其置于unity场景中用于参考,确保3D模型的position和rotation在(0,0,0),再将此model拖至[StARkitMapSession]下SR Scene Session中的场景模型。
.png)
3D模型的材质需要绑定自带的:
.png)
请注意SRApplication 里key和secret的填写。一个开发者存在多个项目时,上传地图到哪个项目,就填写对应项目的key和secret。
.png)
一、本地重定位
此功能需要将云端下载zip包中的xxxx_ld.dat文件放到\Assets\StreamingAssets\MapConfig路径下一起编译。
.png)
运行示例场景apk可看到如下界面,选择“Loc”,取消勾选“UseCloud”,在“请输入map id”输入框中输入id;
.png)
点击”开始识别“界面会有提示->(id)重定位中;
.png)
移动camera进行环境重定位,成功后界面会有提示->(id)重定位成功,同时放在上述unity开发场景中的对应model会贴附到真实环境中,也可观察屏幕右下方重定位前后的坐标信息。
.png)
二、unity预制件配置说明
SRApplication | SDK 通用预制件 |
---|---|
Domain Host | 设置平台网站域名,通常为https://daystar.lenovo.com, 私有云开发者的具体修改值需联系服务器管理员 |
App Key | 需要识别的APP对应的Key |
App Secret | 需要识别的APP对应的Secret |
SRFrameManager | SDK 通用预制件 |
---|---|
Device Type | 设备类型 |
Resolution | 相机分辨率 |
Auto Open Camera | 是否自动开关相机 |
SRRecognition | TargetReco预制件 |
---|---|
AutoGetFrame | True:自动获取图像,无需开发者传图像 |
AutoStartReco | True:应用启动时自动开始识别 |
SRTrackingMode | TARGET_TRACKING:物体跟踪,建议在手机、PC等设备上使用 |
Roi Width Ratio | 识别感兴趣区的宽度与图像宽度比例 |
Roi Height Ratio | 识别感兴趣区的高度与图像高度比例 |
SRTargetModel | TargetReco预制件 |
---|---|
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眼镜,请务必填写正确的打印图片宽度
.png)
在项目页面点击“物体识别目标物”,进入目标管理页面后,可以看到当前项目中的所有目标及其信息。上述各类目标在经过平台处理后,显示为可用状态时,可以通过目标列表右侧的“下载”按钮,将制作好的目标下载到本地电脑中,用于后续的应用开发。 下载的目标为tag[id][rand_string].zip的形式,请不要更改文件名和内容。
.png)
往后的开发流程、接口定义等,与物体地图定位一致,请参考物体地图定位章节。