百度智能云AR开放平台使用指南-AR场景开发专题2D图像跟踪 |
产品推荐: 1、安全稳定的云服务器租用,2核/2G/5M仅37元,点击抢购>>>; 2、高防物理服务器20核/16G/50M/500G防御仅350元,点击抢购>>> 3、百度智能建站(五合一网站)仅880元/年,点击抢购>>> 模板建站(PC+手机站)仅480元/年,点击抢购>>> 4、阿里云服务器2核2G3M仅99元/年、2核4G5M仅199元/年,新老同享,点击抢购>>> 5、腾讯云服务器2核2G4M仅99元/年、新老同享,点击抢购>>> 点击这里申请百度智能云特邀VIP帐号,立即体验AR开放平台>>> 百度智能云AR开放平台使用指南-AR场景开发专题2D图像跟踪 2D图像跟踪2D图像跟踪指通过扫描识别图调起AR,并使AR场景跟踪在识别图上的功能。 2D图像识别分为两种类型—本地图像检索和云端图像检索: 识别图要求识别图是用于识别AR内容,并实现跟踪效果的图片,为了达到完美的识别效果,需要对识别图进行规范化设计,请设计师严格按照以下要求进行设计,并注意规避相关禁忌。 一、格式规范为了保证识别跟踪效果,我们对图片的大小、格式等进行了规范性限制。 1、 识别图应为不小于480x480像素的图片。 2、 识别图格式应为JPG或JPEG。 3、 所上传的识别图应小于3M。 二、图形规范识别图必须是2D平面图形,不支持3D物体等实体物作为识别物。 三、纹理规范1、特征丰富原则 2、纹理相似度原则
识别图纹理需分布均匀,避免元素过于集中。 4、 纹理对比度原则 识别图的相邻色块间的灰度值差别应尽量大。 四、材质规范1、请上传高分辨率、高清晰度、高像素的识别图。 2、不建议反光、过暗、有噪点、强曝光的图片作为识别图。 总结请设计师严格按照上述识别图规范进行设计,本规范如有未尽系统说明之处或相关疑问,请开发者或设计师随时与百度AR团队沟通联系,感谢您的耐心阅读。 识别图跟踪模型文件识别图跟踪模型文件是指位于AR场景包中的Models文件夹,它是通过在平台上选择2D跟踪模板上传识别图以后动态生成的文件,其目录结构如下图所示。 训练生成models目录结构图 主场景包ar目录结构图 开发者需注意 :
如何配置跟踪配置文件(Targets.json)必须严格按照roi.txt对应参数进行配置,可确保模型与识别图之间的位置关系。
文件参数对照表 target.json中targets属性部分参数截图 加载场景回调一般只要在scene文件中设置显示,项目有详细的交互流程时,通过lua调用,控制场景内节点间的隐藏显示,实现项目需求。
-- ~~~~默认加载
app.on_loading_finish = function()
ARLOG("play music..")
anim = scene.simplePod:pod_anim()
:speed(1)
:anim_repeat(true)
:start()
audio = scene.simplePod:audio()
:path('/res/media/bg.mp3')
:repeat_count(-1)
:delay(0)
:start()
ARLOG("play audio id:" .. audio)
end 跟丢回调跟丢回调是指在调起AR后,通过识别图激活已配置好的AR场景,然后将移动设备移开识别图的操作。
-- 跟丢识别图回调事件
app.on_target_lost = function()
ARLOG("tracking loss..")
audio:pause()
end 跟丢后显示雷达扫描跟丢后显示雷达扫描为百度AR扫描识别图激活场景跟丢后的默认配置,无需任何配置,不需要调用on_target_lost 接口,即可实现。 跟丢后显示半透明识别图
image_target.png在主场景包目录下截图 -- 跟丢识别图默认显示半透明识别图
"UI":{
"image_target_path":"image_target.png"
} 跟丢后设置默认位置
-- 跟丢识别图后显示默认位置
app.on_target_lost = function()
ARLOG('on target lost')
app:set_camera_look_at("0, 0, 1000","0, 0, 0", "0.0, 1.0, 0.0")
end 跟上回调跟上回调是建立在已经发生过一次“跟丢”后的情况下。
-- 跟上识别图回调事件
app.on_target_found = function()
ARLOG("tracking found..")
scene.simplePod:set_rotation_by_xyz(0.0, 0.0, 0.0)
ARLOG(string.format("firstFound :%s", tostring(firstFound)))
if (firstFound == false) then
ARLOG("resumeAudio found..")
audio:resume()
end
firstFound = false
end |