[Android-ARCore开发]ARCore从入门到放弃2-Demo介绍和扩展


昨天只是简单运行了官方的Demo,今天抽时间看了下文档和代码,大概了解一下原理。

Demo功能很简单,打开之后自动检测平面,手指触摸平面会在触摸位置放置一个机器人。


检测平面成功后如下面截图所示,可以看到很多蓝色小点和平面的菱形网状图。

蓝色点称为锚点,结合手机传感器用于追踪手机移动。详细原理介绍参考官网介绍



网格、小点和机器人都是使用OpenGL在SurfaceView上绘制的,看代码发现,当手指点击时会去检测触摸点与平面的碰撞,如果有碰撞则会在平面处放置一个机器人。理解一个不熟悉的东西,就先试着修改一番。

修改后实现的效果是,如果手指点击时没有碰撞到平面,则在手机当前所在的空间位置放置一个机器人,所做的主要逻辑修改代码如下,也很简单。

原来的逻辑是拿到MotionEvent后,去做碰撞检测,如果有碰撞结果,并且碰撞结果属于平面碰撞类型,即与SDK检测到的平面有碰撞,则把一个标识要显示机器人的PlaneAttachment放到队列。

所做的修改是,新增了一种碰撞类型叫FrameAttachment,不是上面的平面碰撞类型则作为这个类型放到队列。

更多细节可以参考Github

[Android-ARCore开发]ARCore从入门到放弃2-Demo介绍和扩展_第1张图片


修改后的效果如图,点击平面则在平面放置机器人,没有平面则在当前空间手机的位置放置一个机器人。




以上只是个人理解的大概介绍,没有严格的术语考证,之后再完善。

代码放到了Github上,做了一点修改,测试过是支持Neuxs 6的。

Github地址

你可能感兴趣的:(AR)