[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地址

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Android最常用的控件ListView(详解)

    Android最常用的控件ListView(详解)一.ListView简介在Android开发中,ListView是一个比较常用的控件。它以列表的形式展示具体数据内容,并且能够根据数据的长度自适应屏幕显示。二.ListView简单用法代码部分1.布局界面activity_main.xml代码:<?xmlversion=”1.0″encoding=”utf-8″?><LinearLayoutxmlns:android=”http://schemas.android.com/ap…

    2022年7月22日
    12
  • 小米路由器3 opkg安装

    小米路由器3 opkg安装小米路由器3opkg安装1、复制opkg到小米路由的/data路径下。下载地址:http://sangbo.pub/soft/opkg/opkg2、修改/etc/opkg.conf文件,替换为以下内容:src/gzattitude_adjustment_basehttp://openwrt.sangbo.pub/barrier_breaker/14.07/ramips/mt7620a/

    2022年6月3日
    48
  • Python 十进制转换为二进制 高位补零

    Python 十进制转换为二进制 高位补零用到的内置函数为 format 具体方法如下 gt gt gt a 2 gt gt gt b 08b format a 输出结果为八位二进制 且高位补零 如果是 gt gt gt b 8b format a 输出结果为八位二进制 但是高位不补零 需要注意的是 输出的结果类型都为 str 类型

    2025年7月31日
    1
  • CentOS 7 SSH配置免密码登录

    CentOS 7 SSH配置免密码登录目的在搭建 Linux 集群服务的时候 主服务器需要启动从服务器的服务 如果通过手动启动 集群内服务器几台还好 要是像阿里 1000 台的云梯 hadoop 集群的话 轨迹启动一次集群就得几个工程师一两天时间 是不是很恐怖 如果使用免密登录 主服务器就能通过程序执行启动脚步 自动帮我们将从服务器的应用启动 而这一切就是建立在 ssh 服务的免密码登录之上的 所以要学习集群部署 就必须了解 linux 的免密码

    2025年7月9日
    4
  • 安捷伦示波器连接电脑没反应_安捷伦示波器升级

    安捷伦示波器连接电脑没反应_安捷伦示波器升级调试或者测试电路的过程中,示波器是比不可少的东西,且常需要保存示波器的波形,可以通过一条网线把示波器与电脑连接起来,这样就可以在电脑上方便的保存波形图,怎么实现示波器和电脑连接,我们以安捷伦示波器DSO7052B为例,其他示波器类似。1.首先通过一条网线连接示波器和电脑,在电脑上找到:网络和共享中心->以太网状态->以太网属性->TCP/IPv4协议,点击属性2…

    2022年10月12日
    3
  • Spring的静态代理与动态代理[通俗易懂]

    Spring的静态代理与动态代理[通俗易懂]简述AOP是可以横向扩展功能的,能够在不修改原来代码的前提下实现功能扩展,AOP的实现原理即是动态代理+反射。为什么要使用代理1.什么是代理  代理即是将被代理对象进一步封装后,隐藏被代理对象,在不修改被代理对象代码的前提下完成一些额外的处理。2.场景描述  有一个BookService类,其中有一个add方法,现在想在执行hello方法之前打印一句话,例如是打印”…

    2022年10月17日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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