ARCore是谷歌推出的一款超级受欢迎的AR平台,对标苹果的ARKit。它为开发者提供了一个构建AR应用的平台,可以将虚拟内容与现实世界中的事物相结合,具有很好的兼容性。无论什么安卓设备都可以运行,安全且免费,用户可以随时随地进行创作。如果你对AR技术感兴趣,千万不要错过这个优秀的平台。
另外开发者使用arcore软件将可打造全新的增强现实体验,让数字世界与现实世界无缝融合,变革工作和游戏的未来。当然如果你只是普通的用户,也是可以使用这个软件的,你只需要装在你手机上(支持的设备机型)它可以准确感知手机的位置和姿态,并改变显示的虚拟物体的位置和姿态,有需要的用户可以来本站下载使用。
arcore是Google的增强现实体验构建平台。利用不同的API让手机能够感知其环境、理解现实世界并与信息互动。一些API可用于Android和iOS,以实现共享AR体验。
使用三个主要功能将虚拟内容与通过手机摄像头看到的现实世界整合:
1、借助动作跟踪,手机可以了解和跟踪它相对于世界的位置。
2、借助环境理解功能,手机可以检测各类表面(例如地面、咖啡桌或墙壁等水平、垂直和倾斜表面)的大小和位置。
3、借助光估测功能,手机可以估测环境当前的光照条件。
从本质上讲,在做两件事:在移动设备移动时跟踪它的位置和构建自己对现实世界的理解。
的运动跟踪技术使用手机的相机来识别有趣的点(称为特征点),并跟踪这些点随着时间的变化。结合这些点的移动和手机惯性传感器的读数,可以在手机移动时确定其位置和方向。
除了确定关键点外,还会检测平坦的表面(例如桌子或地面),并估测周围区域的平均光照强度。这些功能相结合,让可以构建自己对周围世界的理解。
借助'对现实世界的理解,您能够以一种与现实世界无缝集成的方式放置对象、注释或其他信息。您可以将一只打盹的小猫放在咖啡桌的一角,或者利用艺术家的生平信息为一幅画添加注释。移动跟踪意味着您可以移动和从任意角度查看这些物体,即使您转身离开房间,当您回来后,小猫或注释也会在您离开时所处的位置。
如需开始在Android上使用,您可以运行 SDK附带的hello_ar_kotlin或hello_ar_java示例应用。这些示例应用使用OpenGL,这是一种用于渲染2D和3D矢量图形的编程接口。这些应用会显示检测到的所有平面,并允许用户点按平面来放置3D模型。
1、设置您的开发环境
安装Android SDK Platform 7.0(API级别24)或更高版本的Android Studio 3.1版或更高版本。
2、打开示例项目
(1)在Android Studio中,克隆 SDK GitHub代码库。
为此,您可以采用多种方式:
对于现有的Android Studio安装:
从Git菜单中选择Clone。
在Version control下拉菜单中,选择Git作为版本控制系统。
在URL字段中,输入 GitHub代码库的以下网址:
https://github.com/google-ar/arcore-android-sdk.git
(2)按如下方式打开一个示例项目(您必须明确打开一个项目才能构建并运行该项目)。
从File菜单中选择Open。
在arcore-android-sdk/samples文件夹中,选择hello_ar_kotlin或hello_ar_java文件夹,然后点击Open。
3、准备设备或模拟器
您可以在受支持的设备或Android模拟器上运行AR应用。您必须先在模拟器上更新AR服务的Google Play服务,然后才能运行该应用。
4、运行示例
确保您的Android设备已连接到开发机器,然后点击Android Studio中的Run。
Android Studio将您的项目构建为可调试的APK,安装该APK,然后在您的设备上运行该应用。
如果适用于AR的Google Play服务缺失或已过期,系统可能会提示您安装或更新。选择CONTINUE可从Google Play商店安装它,或按照更新AR版Google Play服务中的说明手动更新该应用。
借助hello_ar_java应用,您可以在检测到的AR平面上放置一个三维典当。它通过Android GL SurfaceView实现,Android GL SurfaceView用于渲染相机预览和基本AR对象,例如平面和锚点。可以在com/google/ar/core/examples/java/common/samplerender中找到hello_ar_java的示例渲染框架。
注意:hello_ar_java中的生命周期方法与OpenGL应用中通常提供的生命周期方法不同。为确保您自己的应用的AR设置正确无误,请遵循hello_ar_java中的生命周期管理逻辑。
5、使用即时展示位置
借助Instant Placement API,用户可以将AR对象置于屏幕上,而无需等待检测表面几何图形。随着用户继续在环境中移动,系统会实时优化对象放置位置。一旦能够在放置AR对象的区域中检测到正确的姿态,白色对象便会自动更新为姿态准确,并变为不透明。
hello_ar_java中会自动启用Instant Placement。点按屏幕上的齿轮图标,然后从下拉菜单中选择Instant Placement。您应该已经选中Enable Instant Placement复选框。
点按屏幕以放置对象。在屏幕上显示全息对象后,请务必继续来回移动设备,以便可以获取关于周围环境的足够数据来准确锚定虚拟对象。
在深入了解之前,了解一些基本概念会很有帮助。这些概念共同说明了如何实现虚拟内容看起来就像是呈现在真实的表面上或附加到现实世界中的位置一样。
1、运动追踪
当您的手机在现实世界中移动时,会通过一个称为同时定位和映射(SLAM)的过程来了解手机相对于周围世界的位置。会检测捕获的摄像头图像中视觉上不同的特征(称为特征点),并使用这些点来计算其位置变化。这些视觉信息会与设备的IMU的惯性测量结果结合,一起用于估算摄像头在一段时间内相对于现实世界的姿势(位置和方向)。
通过将渲染3D内容的虚拟摄像头的姿势与提供的设备的摄像头姿势对齐,开发者能够从正确的角度渲染虚拟内容。渲染的虚拟图像可以叠加到从设备的相机获取的图像上,使虚拟内容看起来仿佛是现实世界的一部分。
2、环境理解
会检测特征点和平面,从而不断提高对现实世界环境的理解。
可以查找看起来位于常见水平或垂直表面(例如桌子或墙)上的成簇特征点,并将这些表面作为几何平面提供给您的应用。还可以确定每个几何平面的边界,并将这些信息提供给您的应用。您可以使用这些信息将虚拟对象放在平坦的表面上。
由于使用特征点来检测平面,因此可能无法正确检测像白墙一样没有纹理的平坦表面。
3、深度理解
可以使用受支持设备中的主RGB摄像头创建深度图,其中包含有关表面与给定点之间的距离的数据。您可以使用深度图提供的信息实现沉浸式逼真的用户体验,例如使虚拟对象与观察到的表面准确碰撞,或使虚拟对象出现在真实对象的前面或后面。
4、光估测
可以检测其环境光线的相关信息,并为您提供给定摄像头图像的平均光强度和色彩校正。这些信息可让您在与周围环境相同的条件下照亮您的虚拟对象,从而提升其真实感。
5、用户互动
利用点击测试来获取与手机屏幕相对应的(x,y)坐标(通过点按或您希望应用支持的其他任何互动提供),并将光线投影到摄像头的世界视图中,并返回该射线相交的所有几何平面或特征点以及该交点在现实世界空间中的姿态。这样,用户就可以选择环境中的对象或以其他方式与其互动。
6、定向点
借助定向的点,您可以将虚拟对象放置在倾斜的表面上。当您执行会返回特征点的点击测试时,会查看附近的特征点,并使用这些特征点尝试估算给定特征点上表面的角度。然后,会返回一个将该角度考虑在内的姿势。由于使用特征点聚类来检测Surface的角度,因此可能无法正确检测没有纹理的表面(例如白墙)。
7、锚点和可跟踪对象
姿态会随着改进其对自身位置和环境的理解而发生变化。当您想要放置一个虚拟对象时,您需要定义锚点,以确保可以跟踪对象随时间推移的位置。通常,您可以根据点击测试返回的姿势创建锚点,如用户互动中所述。
姿态会发生变化,这意味着可能会更新环境对象(例如几何平面和特征点)的位置。平面和点是一种特殊类型的对象,称为“可跟踪对象”。顾名思义,会随着时间推移跟踪这些对象。您可以将虚拟对象锚定到特定的可跟踪对象,以确保即使在设备四处移动时,虚拟对象与可跟踪对象之间的关系也保持稳定。这意味着,如果您将一个虚拟的Android小雕像放在您的书桌上,即使稍后调整了与书桌关联的几何平面的姿态,Android小雕像仍会看起来位于桌子上。
注意:为了降低CPU费用,请尽可能重复使用锚点,并分离不再需要的锚点。
8、增强图像
借助增强图像功能,您可以构建能够响应特定2D图像(例如产品包装或影片海报)的AR应用。当用户将手机的相机对准特定图片时,即可触发AR体验。例如,他们可以将手机的相机对准电影海报,让角色弹出并出镜。还会跟踪移动图像,例如移动公交车侧的广告牌。
您可以离线编译图片以创建图片数据库,也可以从设备实时添加个别图片。注册后,会检测这些图像以及图像的边界,并返回相应的姿态。
一、检查地理空间VPS可用性
添加了一个新的地理空间API,用于在运行时检查指定水平位置的视觉定位系统(VPS)可用性。此API可在没有活动AR会话的情况下使用,例如,仅在VPS可用时显示“Enter AR”按钮。
1、Kotlin/Java
-开发者指南:检查VPS可用性
-Session.checkVpsAvailabilityAsync
2、C
-开发者指南:检查VPS可用性
-会话检查可用性同步确定VPS在给定区域中是否可用。这将使用远程arcoreapi服务启动查询。
二、地理空间姿势方向
地理空间姿势现在在三维空间中显示其方向。
1、Kotlin/Java参考
-GeospatialPose.getEastUpSouthQuaternion
2、C参考
-ArEarthu getGeospatialPose
三、地理空间姿势转换
地理空间姿势现在可以转换为世界空间姿势和从世界空间姿势转换。
1、Kotlin/Java参考
-地球。getGeospatialPose转换姿势到a地理空间糖在同样的位置。
-地球。getPose转换为地理空间位置姿势在同样的位置。
2、C参考
-ArEarthu getGeospatialPose将输入姿势转换为银粒糖在同样的位置。
-ArEarth_getPose将地理空间位置和方向转换为果皮在同样的位置。
请注意,从这些函数中获取的地理空间姿势的标题值设置为零。相反,使用它的EUS四元数。
四、其他变更
1、这个地理空间_java已调整样本以检查VPS可用性。
2、这个地理空间_javasample现在支持通过点击AR相机视图来创建地理空间锚定。
3、将Kotlin示例从1.4.20更新到Kotlin版本1.5.30。
五、错误修复
1、修复了ARM主机上模拟器映像报告的“设备不支持”。
2、地球状态和ArAnchor_getterarianchorstate现在正确返回错误“未授权”当出现身份验证问题而不是返回时内部错误。
相关推荐
最新文章
最近更新