伴随着 2020 年谷歌开发者大会的落幕,ARCore 开发入门系列课程也迎来了收官之作。上期我们带大家了解了 ARCore 的平台优势,开始起步打造自己的 AR 应用。本期是本系列教程的最后一讲,我们为各位总结了 ARCore 的实用功能,赋能开发者优化 AR 体验。
表面探测与平面创建轻松实现
如今 AR 技术的实现过程需要 ARCore 与智能手机协同工作,来探索并检测平面。这个知识点我们在第二、三讲的课程中就有所涉及。这里所说的平面如同一张网,由网络点和多边形共同构成。ARCore 在表面探测和平面创建的过程中,会投射出来一个节点来识别运行时所需的特征点和平面。一旦 ARCore 找到了足够多的平面特征点,系统就可以开始在空间内放置对象了。
有的时候,虽然环境色调比较单一,光线也较暗,但是 ARCore 仍然能够在欠佳的光线下成功绘制出整个房间的样子并检测到环境中的物体与景深。但是为了给用户带来效果更好的沉浸式体验,仍然要考虑到暗光条件所带来的局限性,在进行 AR 体验时,可以适当提醒用户移动到光线较好的环境中或增加照明。
在这个示例中,ARCore 发现了一个对象,并在对象表面创建了一个平面。但是由于缺乏额外的特征,导致系统判定的对象平面尺寸远远超过其实际尺寸。这会导致 ARCore 为应用创建的平面呈现不当,进而用户无法准确放置数字对象。
用户互动: 命中测试与物体姿态
命中测试——或许之前你从未听过这个概念,但它是 ARCore 打造沉浸式用户体验最关键的一环。因为它可以确定画面中数字对象的姿态。我们这里提到的姿态信息,指的是数字对象的位置与摆放朝向。在 ARCore 用户体验过程中,命中测试的操作紧跟特征点与平面查找之后。
命中测试的工作原理是,从手机的镜头位置“画”出一条线,然后沿线的方向移动直到命中相应平面。这样建立连接后,ARCore 就可以确定数字对象的位置和朝向。
请看上面这个例子,系统需要在真实环境的平面上,正确合理地放置一个三维数字对象,不会倾斜或飘在空中。通过命中测试,软件可以在绘制表面以及理解平面相对位置时,确定这个对象的位置和朝向。利用这项姿态信息,ARCore 可以使虚拟镜头与真实手机镜头的角度保持一致。所以,当数字对象放到真实环境后,数字对象可以面向用户并以合适的角度和阴影进行渲染。
善用锚点,让数字对象“定格”
由于虚拟镜头和智能手机能够识别出数字对象在空间内的位置和朝向,因此当用户移动手机时,系统会利用锚点恰当地进行放置。这种锚定方式可以确保 3D 对象的位置保持不变。有了锚点,即使用户拿着手机在现实环境中进行移动,或是物体移出镜头后再回来,ARCore 也能保证数字对象纹丝不动,就和真实的桌椅一样。
遮挡,成功实现虚实结合
把一个虚拟对象放入现实场景后会发生什么?它会“穿透”家具“飘”在镜头前,还是真实地 “躲避”在树丛或沙发后面?我们在之前的课程中提到过“遮挡”这个概念,它是营造 AR 真实感最重要的关键之一。用户即使在环境中移动手机,数字对象的行为方式也会符合我们的预期。目前,透过对环境深度的理解,ARCore 能够成功实现数字对象与真实物体的遮挡效果。
光估测:匹配虚拟光线与现实光照
ARCore 最大的优势之一就是光估测,让看到的光照与真实的光照保持一致,这样可以大大增加场景的真实感。我们可以通过下面的例子来了解 ARCore 体验中 3D 对象的着色和阴影是如何随着光照的变化而变化。
你注意到数字对象的着色变化了吗?当用户拉上窗帘或关掉所有的灯,数字对象也会随之变暗,这为原本的“虚拟对象”平添了不少真实感。运用 ARCore 的 HDR 环境光,你可以轻松处理复杂的多光源环境的光照模拟、反射及阴影等渲染效果。
多平面测试与空间映射
ARCore 能够同时识别多个表面区域,比如桌子、沙发或地板。数字对象可以根据用户需求被放置在任何一个平面上,而每一平面都有同样的锚定和摆放能力。可以确保数字对象的行为方式具有真实感。
我们常见的数字对象都是由图形系统构成,通过镜头从不同的角度和深度进行渲染,从而达到近大远小的效果。ARCore 会不断从环境中“学习”,所以手机镜头对环境进行空间映射的时间越长,ARCore 对数字对象姿态的理解就越准确。
ARCore 在工作时会假定平面是不动的,而且数字对象不会紧贴镜头进行投射,当镜头被遮挡就会对 ARCore 的识别系统造成干扰。所以,通常情况下要先等到房间或周围环境得到充分映射,且各表面的静态特征确认完毕后再放置数字对象。
让移动 AR 的处理更容易
在用户体验 AR 的过程中,可能会出现同一场景下出现多个数字对象的情况。这时候,想让手机识别过程不降速,就需要手机中的专用处理器。这样的处理器对于移动 AR 领域的持续创新至关重要。基于移动设备的增强现实,需要设备能够同时实现空间映射、深度映射、光估测、特征点识别和平面查找等功能,而这仅仅是一个开始。
巧妙“取景”,避免打破沉浸感
用户在使用 AR 应用时,出于好奇而产生的其他一些行为也会不自觉地破坏沉浸感。举个例子,在放置数字对象后,有不少用户会试图走进数字对象或与之互动,将镜头移到对象内部,进行“越界”操作。这种行为是不符合逻辑的,所以作为开发者,提醒用户恰当取景或设计相对应的内容反馈才能应对这一挑战。
就像拍摄 2D 电影或视频一样,取景是 ARCore 内容制作者一种强大的“工具”。开发者可以利用手机镜头取景,并将数字对象放置在恰当的位置并巧妙引导用户在保证真实感的前提下,趣味互动。在设计 AR 应用时,开发者要确保用户与数字对象的互动是真实有效的。
3D 资源创建工具推荐
工欲善其事,必先利其器。这里给大家介绍 Poly、Unity 两款打造 ARCore 资源的实用工具,丰富你的 AR 应用。
1. 什么是 Poly?
Poly 是一个线上资源库,开发者可以在其中浏览、共享并重新和成 3D 资源。这里说的资源指的是一个 3D 模型或一个应用场景。利用 Tilt Brush、Blocks 或者任何能够生成 Poly 支持文件的 3D 工具都能够创建资源。Poly 支持直接上传 OBJ 文件。许多资源都会采用“知识共享”许可协议,开发者只要注明资源创作者,便可在自己的应用中免费使用这些资源。
欢迎访问 poly.google.com 获得数以千计的 3D 资源,“装饰”你的 AR 应用。
2. Unity 工具该怎么玩?
Unity 是一个热门的搜索引擎,可以为视频游戏、电影等应用场景创造 3D 对象。Unity 会提供从简单到专业的大量工具,简化 3D 对象和环境的创建过程。ARCore 提供了两种不同的 SDK,一个是 AR Foundation with ARCore XR Plugin/ARCore Extensions,另一个是 ARCore SDK for Unity。可以让开发者方便地使用 Unity 来开发 Android AR 应用程序。同时,通过 Unity 开发者可以直接从 Poly 导入数字对象,并通过一系列工具和插件将这些对象轻松接入到应用或游戏、电影场景中,渲染真实体验。
至此,ARCore 开发入门课程全部结束。回顾这五讲内容,我们带你从 0 开始,解密 AR 增强现实技术的发展背景与现存挑战,认识并了解 ARCore 的优势、学习利用 Poly、Unity 等工具创造 3D 资源来丰富自己的 AR 应用。相信通过学习,你对 AR 这项未来科技有了初步的了解与认知。我们也看到了增强现实随着开发技术和工具的逐步完善慢慢真正落地,开始服务于用户。
在未来创造 AR 应用的过程中, Google 也会携手开发者,共同努力不断提升技术与开发工具,挖掘出 AR 的无限潜能。目前本课程现已全部上线,您可前往中国大学 MOOC 官网搜索【Google ARCore 入门开发课程】系统学习 ARCore 开发技术,让科技为生活拓展无限可能。
点击“阅读全文”也可进入学习哦。