700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 移动端IOS使用EasyAr实现非unity(unity)案例介绍

移动端IOS使用EasyAr实现非unity(unity)案例介绍

时间:2019-05-12 13:57:12

相关推荐

移动端IOS使用EasyAr实现非unity(unity)案例介绍

前言

使用EasyAr首先我们需要在 / 注册自己的账号,在开发栏创建自己的应用,生成key和自定义Bundle ID ,当然若是在自己的工程添加识别功能的话,只需将 Bundle ID 设置成工程的Bundle Identifier即可。

① IOS端EasyAr使用(unity)

因为我们想要通过unity来实现识别,那我们自然要先下载工具unity 和样例,打开样例(注意这里Open的是一个文件夹)

选择Upgrade

根据步骤,输入我们事先准备好的key

File -> Build Settings ->IOS -> Build And Run

就生成了一个Xcole文件.

打开Xcode文件,我们需要修改Bundle Identifier为我们设置的Bundle ID.还有在Info.plist文件中添加相应的视频、相机、相册权限

可参考:/w582324909/article/details/53539158

IOS端EasyAr使用(unity)并不难,看看文档就解决了,只是酷炫的效果需要在uiniy中取操作,所以我们可以采用非unity的方式实现自定义视频播放

② IOS端EasyAr使用(非unity)

需求:

从相册中获取识别图(或拍照获取),从相册中获取识别视频(或拍摄获取),实现当工程进入识别状态的时候,可以通过识别到不同的照片来跳转到下个页面播放原先指定的识别视频

步骤:首先我们需要先下载 EasyAR的iOS的原生(非Unity)sample样例,如果你在导入EasyAR创建自己的工程,你需要添加如下这些framework。

当然Bundle Identifier和info.plist的设置是一样的。

这边我们以holloarvideo为例

通过字符串定义一个key,输入我们事先准备好的key赋值给它。然后在OpenGlView的初始化方法里面传给EasyAR

- (id)initWithFrame:(CGRect)frame{frame.size.width = frame.size.height = MAX(frame.size.width, frame.size.height);self = [super initWithFrame:frame];if(self){[self setupGL];EasyAR::initialize([key UTF8String]);ar.initGL();}return self;}

这样,我们最基本的配置就完成了。

扫描工程中原本的指定图片,我们可以看到相应的案例视频。那么这些图片和视频是通过扫描方式识别播放的呢?不难发现,在OpenGlView的函数void HelloARVideo::render()

通过判断识别的图片与指定图片是否一致,一致就创建播放器,通过open的三种方法,打开普通视频,透明视频和加载网络视频,再在这里,通过矩阵变换映射的方式展示视频效果。

而根据需求,我们应该在识别前创建一个页面去做图片和视频的选择,然后当我们点击识别的时候播放我们指定的视频,在这里我的做法是通过从相册中选取照片(或拍照),从相册中选取视频(或拍摄),取得相应的照片和视频,将它们存放在沙盒中,然后在函数void HelloARVideo::render()中将固定的图片名和视频名替换掉,这样,就实现了从单一的图片视频播放,都任意可指定图片视频播放,但是,由于需求是识别到后跳转播放,所以我们不能用样例自带的矩阵投影变化的方法播放视频,而是在

if(frame.targets()[0].target().name() == 图片名 && texid[0]) {// 在这里去实现播放}

又因为我们的识别ViewControl并没有直接处理识别这个功能,而是在OpenGlView中去做识别,而VC(指ViewControl)是通过控制创建和销毁OpenGlView来实现识别,那么我们想要做页面间的跳转就只能在这个实现播放处去传值或者响应事件,又由于.mm文件的限制,我选择用通知,当识别到图片时,发送一个通知给VC。让页面dismissViewControllerAnimated

然后重写VC的初始化方法,传一个Block给它,当VC dismiss时调用Block,Block跳转新页。

这样就实现了 识别后跳转新页,再在新页实现播放等功能,完成需求。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。