细数Android原生工程接入EasyAR-SurfaceTracking遇到的坑

背景:该篇文章总结于在原生的工程中接入EasyAR的SurfaceTracking的过程中遇到的一些问题,有一些问题是知识性的问题,有一些问题是可以称之为是坑的问题。

关键词:

Android原生中有关OpenGL的渲染设置

EasyAR初始化失败

EasyAR照相机黑屏

在Android Studio中进行有关EasyAR矩阵的调试(矩阵数据变的很诡异)

如何在自己的引擎中进行设置EasyAR提供的Projection Matrix(投影矩阵)和View Matrix(观察矩阵)

点击人物无法命中,或者没有办法正确命中

低配机进入AR模式之后,拍摄的视频背景卡顿问题

1、Android原生中有关OpenGL的渲染设置

这一块内容其实和AR的东西不是很相关,但是一般来说,工程里面接入ARSDK的话。肯定是想绘制自己的虚拟人物,在移动平台上,OpenGL又是不可或缺的一个部分,所以这一部分应该是有一些可以借鉴的内容。

因为之前工程里面的ARSDK接入的是Vuforia的GroundPlane(以下简称Vuforia),所以按照Vuforia的官网提供的Android事例,自己工程中的结构完全按照其官网事例进行设置,包括里面的session控制Vuforia的生命周期以及子类View继承GLSurface来进行渲染的设置。

所以接入EasyAR-SurfaceTracking(以下简称EasyAR)的第一步,就是先去将Vuforia从原来的工程中移除掉。

这里吐槽一下自己的感想:Vuforia关于这里的结构的设计,真的很严密,有专门控制功能的类,有专门掌管Vuforia生命周期的类,有专门进行渲染设置的类,以及功能的逻辑,错误的判断等真的很值得借鉴。相比于EasyAR,就会更加的简易,也更容易我们去理解,对于我这种新手还是比较友好的。

当然也可以把EasyAR的结构设计成和Vuforia的一样,但是有点小题大做了,因为相比于EasyAR,Vuforia里面的概念还是比较多,设备跟踪、智能地形等等,但是程序还是应该越简单越好(大佬说的,照做就是了)。

所以在我的程序里面,关于这里的设置就只有一个MainActivity.java、GLView.java、以及EasyAR官网提供的例子的中的HelloAR.java和BackGroundRender.java(最后一个文件名字我记不清了,就是用来渲染拍摄的视频流背景的那个文件)。

Tip:官网的例子中还有一个BoxRender.java的文件,用来渲染一个立方体,这个其实在接入的过程中可以留着,可以先去将盒子画出来,然后再去一步步的接入自己的渲染部分。然后完全接入的时候,再去将这部分删除掉就可以了。

EasyAR里面关于SurfaceTracking总共就只有三个文件:HelloAR(管理AR的相关接口),BoxRender(渲染盒子),BGroundRender(背景的渲染)。

下面说一下关于这几个文件结构的设计:

MainActivity.java文件里面是主要的Activity,并且只有这么一个Activity,负责进行EasyAR的最外层的管理,因为在我的工程里面,还有一些通过JNI和C++交互的部分,所以我将EasyAR最外层的管理放在这个类里面。

和Activity匹配的页面布局(XML文件)我使用的很简单,就只是写了一个进入AR的按钮,和一个退出AR的按钮,在这个XML里面,将XML的上下文配置为MainActivity,MainActivity类继承的是:Application类,没什么主义的地方。

在MainActivity的成员变量里面,有一个GLView类型的成员变量:mView。

在OnCreate方法里面,使用setContentView函数将这个成员变量mView设置为当前Activity的View视图。

这里其实我刚开始的时候不是很明白通过xml设置和通过这个View来设置有什么区别,总结一下:可以在某一些层面上将这个xml和mView理解为同一个东西,都是用来设置界面的长相的,只不过如果我们在代码里面一直使用代码来添加按钮,拖动条,进度条之类的,会让我们的代码文件显的特别的臃肿,所以此时,我们将所有有关控件的设置,都抽离出来,组成一个xml文件,这个文件里面只用来设置UI控件的样式,然后我们在代码文件里面就只需要使用就可以了,或者在需要的时

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值