在《使用ARCore创建新型用户交互体验》系列文章的第一篇中,我们分享了一些充满创意的想法,教你如何使用光照估计这样的功能来实现新型用户交互和游戏体验。第二篇文章中,我们将分享更多使用案例,让你了解如何使用ARCore的即时预览和运动跟踪功能。

你能想象在AR中玩“抽积木”游戏吗?如果你不了解这个游戏,这里简单介绍一下,它的玩法是通过从积木塔中移走积木然后放到塔顶,从而逐渐把积木塔搭得更高。在本文中,我们将分享一些更为实用的方法,包括使用ARCore的运动跟踪功能来构建手持式AR游戏“抽积木”,或是使用AR会话暂停功能,帮助ARCore应用在失去焦点时,保持用户的参与度。

运动跟踪和距离判断
使用运动跟踪功能,你可以实现非常多的效果,包括:基于设备位置和朝向触发动画,以及基于设备与数字对象之间的距离把设备用作物理保险杠。“

抽积木”便是一个应用AR距离检测的有趣案例。通过使用设备和数字积木塔之间的距离信息,你可以在积木塔周围移动,寻找要移动的积木,然后使用简单而熟悉的手势操作移动积木,将它放到塔顶。
171711h1qqa9zvansa7yyq.png

这是一个非常有趣的ARCore体验,在案例中,你将通过使用熟悉而简单的操作直接控制数字对象,例如:在屏幕上按住积木来握住它,然后移动设备寻找到合适位置后,松开手指来放下积木。基于距离和运动跟踪的用户交互功能将继续在手持式AR的同类功能中扮演重要角色。

暂停AR会话
为了保持用户参与度,向用户提供AR会话的暂停功能十分必要。用户或许会想要在行动中暂停,或是停止在应用中使用增强现实功能。

为了使用户能够暂停使用AR,你可以允许用户停止整个AR会话,然后当他们准备好回到AR模式后,再开启新的AR会话。然而,这样做会要求用户重新在现实世界中寻找平面或放置对象,可能会有一部分用户会不再进行操作。

另一个选择则是使用ARCore的功能来进行短暂的暂停。这样可以在临时阻止应用寻找平面和运动跟踪的同时,保留平面和已放置物品的原有信息。

ARCore支持暂停AR会话功能,所以作为一名开发人员,你仅需在Unity中禁用ARCoreSession组件即可。
[C#] 纯文本查看 复制代码

using System.Collections; 
using System.Collections.Generic; 
using UnityEngine; 
using GoogleARCore; 
public class PauseAR : MonoBehaviour 
{ 
  public ARCoreSession SessionController; 
  private bool m_sessionPaused = false; 
  public void TooglePauseMode() 
  { 
    if (SessionController == null) 
  { 
    return; 
  } 
  SessionController.enabled = m_sessionPaused;
   m_sessionPaused = !m_sessionPaused; 
  } 
}

AR应用的暂停功能不仅能让用户稍作休息。这个功能还有值得一提的用处,例如在单个设备的多人游戏中,它能在回合之间暂停会话,或是让用户在使用AR应用时接听电话,而不丢失接电话前应用中的信息。
171840teee85lfb8ppt95l.gif
AR活动已经暂停,在屏幕上出现了UI,在结束暂停后平面和花朵又回来了
需要注意暂停是临时的,如果用户移动得太远,使应用无法重新找到原有平面或特征点的话,AR中的物品或许会在暂停后丢失。

即时预览
ARCore v1.1.0 for Unity中新增了即时预览(Instant preview)功能。它仅可以在Unity中使用,当你在Unity中构建项目时,这个工具能允许你跳过构建过程,直接在ARCore支持设备上测试对AR应用的改动。这将把流程时间从数分钟缩短为几毫秒,从而让你近乎实时地在Unity编辑器中进行迭代、检查对象状态,调试错误,并查看对象的位置和大小比例。
171842gfiqbfi51q22bj1w.gif

若想体验即时预览功能,请安装ARCore 1.1 for Unity,在支持设备上安装HelloAR场景。默认情况下,例如:摄像机位置、朝向、平面搜索、特征点、光照估算和触屏输入等设备数据会载入Unity编辑器中,在游戏窗口显示。通过直接在Unity中使用这些信息,你可以更快地测试并迭代新功能。

尽管主流AR都是通过移动端设备在现实世界情景中体验的,但通常情况下开发者要在笔记本电脑或是台式电脑上开发AR应用,这样的环境是脱离现实世界的。即时预览功能则能实现在现实世界进行测试,这或许是在开发移动端AR应用时所解决的最大和最重要的难题。这个功能将让开发者能在Unity编辑器中直接测试现实世界的情况,例如对比着色器和现实物理材质之间的区别,或是比较不同光照条件对AR体验的影响。
171848z8ihhcot108t1dod.gif
开发人员直接在Unity中对比现实世界中的画面,从而更好测试和迭代对象材质

即时预览功能先已上线,在ARCore v1.1.0 for Unity中默认使用,欢迎开发者们使用体验!


《使用ARCore创建新型用户交互体验1》

《使用ARCore创建新型用户交互体验2》

《使用ARCore创建新型用户交互体验3》

锐亚教育

锐亚教育 锐亚科技 unity unity教程