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

昨天只是简单运行了官方的Demo,今天抽时间看了下文档和代码,大概了解一下原理。Demo功能很简单,打开之后自动检测平面,手指触摸平面会在触摸位置放置一个机器人。检测平面成功后如下面截图所示,可以看到很多蓝色小点和平面的菱形网状图。蓝色点称为锚点,结合手机传感器用于追踪手机移动。详细原理介绍参考官网介绍网格、小点和机器人都是使用OpenGL在SurfaceView上绘制的,看代码发现,当手指点击时

大家好,又见面了,我是全栈君。

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

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


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

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

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

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

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

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

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

更多细节可以参考Github

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

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

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


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

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

Github地址

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/121304.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号