iOS11推出ARKit,用来实现在现实场景中的增强现实等一系列操作,在分析ARKit的过程中,对国内外其它的一些ARSDK的应用场景进行分析,写了个对固定图片/物体进行扫描识别,进行一些后续操作的Demo,以供参考.
主要内容:
(1)识别固定图片或物体,进行后续界面性质操作
(2)识别固定图片或物体,显示出对应模型,进行模型性质操作
一.主要代码
(1)识别 + 界面性质操作
对于集成EasyAR的操作,不做过多说明,参照官方demo即可
当前集成SDK版本为: EasyAR_SDK_2.0.0_Basic_Samples_iOS特别注意: ViewController 继承于 GLKViewController
1.替换需要扫描的图片为自己的图片
BOOL initialize() 方法中更改图片设置:
//替换图片
if (!status) { return status; }
easyar_ImageTracker * tracker = [easyar_ImageTracker create];
[tracker attachStreamer:streamer];
// loadFromJsonFile(tracker, @"targets.json", @"argame");
// loadFromJsonFile(tracker, @"targets.json", @"idback");
// loadAllFromJsonFile(tracker, @"targets2.json");
loadFromImage(tracker, @"test2.jpeg");
trackers = [[NSMutableArray alloc] init];
[trackers addObject:tracker];
2.增加识别成功与失败的方法
void render() 方法中增加方法:
//增加方法
if ([frame targetInstances].count==0) {
NSLog(@"图片识别失败");
[[NSNotificationCenter defaultCenter]postNotificationName:@"PicRecognitionFail" object:nil userInfo:nil];
}else{
for (easyar_TargetInstance * targetInstance in [frame targetInstances]) {
easyar_TargetStatus status = [targetInstance status];
if (status == easyar_TargetStatus_Tracked) {
NSLog(@"图片识别成功");
//图片识别成功
[[NSNotificationCenter defaultCenter]postNotificationName:@"PicRecognitionSuccess" object:nil userInfo:nil];
// easyar_Target * target = [targetInstance target];
// easyar_ImageTarget * imagetarget = [target isKindOfClass:[easyar_ImageTarget class]] ? (easyar_ImageTarget *)target : nil;
// if (imagetarget == nil) {
// continue;
// }
// [box_renderer render:[camera projectionGL:0.2f farPlane:500.f] cameraview:[targetInstance poseGL] size:[imagetarget size]];
}
}
}
3.识别成功后执行需要的方法
//增加需要执行的方法
//识别成功
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(abc) name:@"arSuccess" object:nil];
- (void)PRScuccess{
NSLog(@"识别成功操作");
}
//识别失败
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(abcabc) name:@"arFail" object:nil];
- (void)PRFail{
NSLog(@"识别失败操作");
}
(2)识别 + 模型性质操作
对于模型性质的操作,需要集合Unity进行开发(包括模型动画,模型音频等),现对EasyARSDK中,Unitydemo进行导出iOS工程
1.设置EasyAr的key
2.导出iOS工程
二.实现效果
(1)对固定图片/物体识别 + 界面性质操作 (界面显示文字,图片,视频等)
(2)对固定图片/物体识别 + 模型性质操作
此处是导出EasyARSDK中,Unitydemo的iOS工程,进行识别
特别注意: InfoPlist文件中添加访问相机权限
四.Demo地址
欢迎star : https://github.com/FTC-Chen/EasyARTest-Demo1
有任何问题请私信或者留言,或者有更好的实现方法,也请告诉我.