【ARCore 开发入门课程系列】六步带你着手打造优秀的 AR 应用
在上节课中,我们对 AR 目前面临的五大挑战进行了梳理。这些技术挑战的解决方案仍在完善中,功能不断强大的 ARCore 让技术难题迎刃而解,同时也为开发者打造体验更好的 AR 应用插上了翅膀。本文将带你起步,开始 AR 应用开发之旅。
ARCore 实际开发前提:扬长避短
优势:海量用户期待优质 AR 体验
全球超过 85% 的移动设备搭载的是 Android 操作系统。在 2018 年初,支持 ARCore 的 Android 智能手机达 1 亿部。截止到 2020 年,已经增加到了 7 亿部。但是因为 ARCore 需要使用强大的算法支持,所以不是所有 Android 平台设备都满足打造 AR 体验的必要规范。不过,正如过去十年我们看到的那样,技术会围绕着贴合用户需求的系统和功能迅速发展。越来越多的手机搭载了强大的处理器和创新的处理单元(简称 VPU),这些创新型移动处理单元将让 ARCore 功能变得更加强大。
2017 年 Android 在全球至少有 20 亿的装机量,是全球使用最广泛的智能操作系统,也就是说 ARCore 的应用拥有了庞大的潜在用户,他们在期待着获得更沉浸式的 AR 体验,开发者们快行动起来吧。
目前, ARCore 在中国地区支持的设备列表如下:
数据来源:谷歌开发者官网(最新)
局限:弱光环境和光滑平面识别困难
对于智能手机来说,AR 仍然是一项新兴的技术。ARCore 平台的功能十分丰富,但它目前仍存在一些局限。比较主要的局限现存于弱光环境和光滑平面下的识别。
就像眼睛一样,AR 需要光才能识别现实环境中的物体。为了找到特征点和平面,手机摄像头和其他传感器需要实时、流畅地探寻空间中所有的事物。这意味着,在昏暗的环境中,大多数增强现实设备难以正确理解所处的环境,因此无法准确地渲染体验。弱光环境是现有每个 AR 跟踪系统都面临的挑战。解决这个难题的关键在于看见和理解真实环境并确定自身朝向。要做到这一点,真实环境需要有良好的照明条件和可见度。
AR 会不断尝试寻找鲜明的特征点来观察、跟踪并记忆,从而在 AR 体验中确定设备和数字对象的朝向。这意味着 AR 跟踪系统在处理某些平面时会更加吃力。比如,在处理白色木质咖啡桌时,平面特征点很难抓取。相比较而言,放有咖啡杯、纹理粗糙的木桌更容易被 AR 识别。咖啡杯与粗糙的纹理所形成的高对比度可以方便系统创建特征点,可见鲜明的纹理结构至关重要。
简单来说,物体表面和周围空间的差异化特征越明显,AR 应用的效果就会越好。如下图中花园里的桌子, ARCore 很容易就识别到了桌面,然后让安卓小人出现在了桌子上。
然而, 摄像头技术的升级和计算机算法领域的不断进步, 让过去许多无法辨认的场景也在不断改善。
AR 应用开发需要哪些准备工作?
第一步:站在用户的角度思考问题
在思考 AR 应用要面对的用户时,不妨从“场景”这个角度切入。简单来说,就是开发者要写出用户可以看到的东西,运用第一人称,站在第一视角。这么做可以提前、直观且高效地把握用户体验。在这里,我们要介绍几个概念,帮助你更好把握用户心智。
输入选项(Input Option)
输入选项指的是在任一个场景中用于互动的选项。作为开发者,需要充分了解输入选项的特点以及使用场合。
用户操作(User Action)
顾名思义,它指的是用户需要做些什么,进行哪些操作才能在一个场景内移动,或者在不同的场景间转换。虽然这个问题至关重要,但是没有一个统一的答案。归根结底需要开发者根据应用的场景打造最佳的个性化体验。
图标含义(Icon Key)
这是最重要的一点。开发者需要写出图标的图例信息,解释所有图标的含义,给用户明确的解释。整个 AR 系统,从初始场景的呈现到可用的输入选项,再到音频提示,开发者需要提前帮用户进行规划,才能打造沉浸式 AR 体验。
第二步:克服技术局限
正如前文提到的那样,AR 技术目前仍存在诸多局限。例如,开发者无法在 AR 体验中加入很多逼真的资源和元素。因为大多数 3D “角色”都会引发所谓的 “恐怖谷(Uncanny Valley)” 效应。如果你对这个术语没有概念,看看下面两个例子。
左图中,开发者在现实环境中放置了一个一比一还原的“虚拟人物”。想一想,如果你利用移动设备体验 AR 时,突然有一个“真”人出现在你面前,但是看起来行动僵硬,你可能会觉得怪怪的。这种虚拟对象给用户的体验感并不好。相比较而言,选择卡通化的设计和光照会让用户感觉沉浸感更强。如同右图这个可爱的卡通狮子,它并不会让用户瞬间出戏,反而会觉得生动有趣。
由此可见,试图模仿真实物体效果往往会适得其反。所以开发者想要避开这个“坑”,就需要考虑如何在用户体验中增加并运用艺术设计,打造出理想效果。
第三步:提醒用户:不可“越界”
在玩游戏时,爱探索的玩家会试图跑出某个关卡的边界,或者直接跳转到最后一个关卡一试身手。用户对于新鲜的事物总是跃跃欲试,对于 AR 也不例外。比如,有不少用户会想走进虚拟对象或者与之互动,这种做法是不符合逻辑的,就如同下面这个例子:
例如你的 AR 场景是想要在真实世界中加上一盏“以假乱真”的灯,我们就需要考虑,如果这盏灯真实存在于现实生活中,图里这种操作还能实现么?答案是否定的。因为手机会和真实灯盏“亲密接触”,不可能出现图中的“破壁”效果。我们无法直接透过手机看到里面的结构。但是,虚拟的 AR 对象无法阻止用户进行图中的操作。这就需要开发者对用户进行引导和提醒。
第四步:打造 3D 数字对象,请备齐工具
部分 AR 资源是 2D 的展现形式,但沉浸式 AR 体验往往搭配的是 3D 数字对象,这样才能给用户更真实的体验。出色的 3D 建模工具如 Maya、ZBrush、3DS MAX 等是面向专业人员的,所以对于新用户来说,在最开始上手时有畏难情绪是很正常的。每种工具都有专门的课程,年轻的开发者只有不断学习、积累经验才能掌握这些工具的各种特性和功能。
在 ARCore 的入门阶段建议先使用 Google Poly 这个资源库。它汇集了各种 3D 资源和设计,几乎涵盖了全球用户构建的模型。通过 Poly,开发者可以从现有的庞大的资源库中挑选所需资源,下载后即可在自己的 ARCore 体验中应用。以此为基础,便可以快速打造自己首个 ARCore 体验。
比如,你只需要在 Poly 中搜索“汉堡”,选择并下载这个资源,就可以为自己的 ARCore 应用获得一个现成的汉堡,是不是非常方便。
第五步:模拟用户体验,提前起草设计
在用户流这部分中,我们与大家讨论过提前起草设计的重要性。一定要预先勾勒出想要为用户打造的体验,尽量避免可能出现的问题。想要做到这一点,分镜脚本、草图和文本大纲都是不错的展现形式。
具体哪种方式取决于团队的选择,以及想要打造哪一类 AR 应用。一般而言,建议编写一份带有注释的设计文档,方便团队成员及用户快速理解你的想法。
概念解析:设计文档(Design Document)在这里指的是想要构建的应用或体验的完整大纲。它应涵盖一份调查清单,详细说明了开发者期待用户发出的所有互动。同时,能够将应用体验具象化,呈现展示界面,阐释在现实空间中放置虚拟对象的方法。
参考示例
在编写这份文档时,开发者应采纳声音设计师、3D 模型专家和团队内其他专业人员的意见。确保文档中包含所有计划使用的元素和 3D 资源。在用户开启体验到停止使用的这段时间内,所有的互动都应有详细的规划。即使团队中只有一位成员,也能从这个具有“前瞻性”的神操作中获益。
第六步:组建团队,实现愿景
千军万马总好过单打独斗。在开始界定 ARCore 的体验并进行规划时,总会需要高手帮助你实现愿景。在预算允许的情况下,聘请专业人员会更加省时省力。这里给你一些参考。
软件开发者
熟练运用计算机知识、有编程经验的软件开发者,可以帮助你细化一些宽泛的概念并实现具体的构思。不过,顶尖的计算机专家往往收费比较高,所以还要按照预算合理选择。
3D 设计师
如果在 Poly 中不能找到所需的资源,也没有能力从头开始设计模型,专业的 3D 设计师是团队必要的人才储备。这样,不仅可以为自己的内容搭建独有的资源,而且能够在打造 AR 体验中不断进行调整。
纹理设计师
独特的纹理如同 3D 模型的皮肤,而纹理设计师可以为 3D 设计师的成果添砖加瓦。
如果你对 AR 领域有兴趣,想要乘上未来科技的新浪潮、打造属于自己的 AR 应用,相信读完这篇文章你能获得一些思路和想法。如果你对文中提到的工具仍然存在疑惑,请期待下一讲内容。我们将手把手教你如何利用 ARCore 来优化 AR 体验。
如需 ARCore 入门课程系列视频教学,请前往中国大学 MOOC 官网搜索【Google ARCore 入门开发课程】。点击“阅读原文”也可进入学习哦。
延伸阅读:
【ARCore 开发入门课程系列】解密 AR 增强现实
【ARCore 开发入门课程系列】AR 核心概念及技术解析
【ARCore 开发入门课程系列】AR 技术让想象力成为“现实”,距离还有多远?
【ARCore 开发入门课程系列】六步带你着手打造优秀的 AR 应用相关推荐
- UWP开发入门(十六)——常见的内存泄漏的原因
原文:UWP开发入门(十六)--常见的内存泄漏的原因 本篇借鉴了同事翔哥的劳动成果,在巨人的肩膀上把稿子又念了一遍. 内存泄漏的概念我这里就不说了,之前<UWP开发入门(十三)--用Diagno ...
- 【Arduino】开发入门教程【六】数据类型转换函数
Arduino数据类型转换函数有 char() : 将任意类型的值转换成char类型; byte(): 将任意类型的值转换成byte类型; int(): 将任意类型的值转换成int类型; long ...
- 云计算是什么意思?新手怎么学云计算开发入门课程
云计算是什么意思?云计算就是将处理数据这个步骤放在网络的远程端进行,因为手机.平板和个人电脑等个人设备的数据处理性能(CPU.内存.硬盘和GPU等)是非常有限的,而让用户购买十几万甚至上百万的高性能服 ...
- 区块链DAPP开发入门课程(PHP版)
1.前言及环境部署 1.1 课程说明 为什么有这个课程? 入门区块链开发已有些时日,走过的坑实在是太多了,对于像我这种从事互联网软件开发多事的老兵来说,上手都有些吃力,可想而知对于新手来说就更难了,尤 ...
- 【D类】编程开发视频课程系列
一.PHP课程集 1.1 PHP100 经典 试看下载:http://pan.baidu.com/ ...
- 小飞鱼 通达OA二次开发网络课程 系列视频课程在CSDN发布
小飞鱼通达OA二次开发网络课程 (上传完毕) http://edu.csdn.net/course/detail/4479 小飞鱼通达OA二次开发程序设计基础 http://edu.csdn.net ...
- 腾讯GAD的游戏开发入门课程
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u012999985/article/details/79118198 进入游戏行业两年多了,处于一边 ...
- C++入门课程系列:基础知识篇(1)
C++是一种静态数据类型语言. • 在C++语言中,变量是计算机编程的一个重要概念,它是一个存储值的字母或名称 • 有几种基本类型的变量: string ("一组词"). char ...
- 【转】WPF入门教程系列六——布局介绍与Canvas(一)
从这篇文章开始,我们将对WPF中的界面如何布局做一个较简单的介绍,大家都知道:UI是做好一个软件很重要的因素,如果没有一个漂亮的UI,功能做的再好也无法吸引用户使用,而且没有漂亮的界面,那么普通用户会 ...
最新文章
- 初识CISCO_DHCP Server
- centos6.x安装mysql5.6及启动多实例
- Insertion Sort List
- OpenMap教程第2部分–使用MapHandler构建基本地图应用程序–第1部分
- python数据分析笔记中panda(2)
- YMP框架学习笔记(二)------基于YMP框架搭建WEB应用程序
- 关于数据权限的几个问题
- Android学习小Demo(11)一个显示行线的自定义EditText
- win7计算机用户配置文件存储路径,Win7用户配置文件夹位置怎么修改?
- Backend Qt5Agg is interactive backend. Turning interactive mode on.
- 计算机组成原理总概括(转)
- IEC104 规约详细解读(一) 协议结构
- Dialog确认按钮不dismiss
- 使用端到端深度学习模型完成PPI任务两篇论文笔记
- 苹果电脑上不错的几款计时软件
- 国内半导体企业进军市场拉开序幕
- MacM1 AndroidStudio 自带模拟器安装不上apk
- 程序员分析:99%的创业公司都不值得加入
- 一份Hive面试题及答案
- 理解 PHP 8 的 JIT
热门文章
- 关于mp3 tag的一些补充(关于tag的编码方式)
- 监控RecyclerView有效曝光数据
- Python开发工具PyCharm使用教程:如何调试python应用程序
- 腾讯音乐娱乐集团与索尼音乐续签长期版权合作协议
- 软件项目管理考点整理(Software Project Management)
- ubuntu 下开启背光键盘灯
- jQuery实现Ajax异步请求的三种方式
- 长城台式微型计算机开不了机,台式电脑开不了机怎么办?六个秒招教你排查电脑无法开机的故障所在...
- linux利用whereis,which查找文件
- whereis 查找不到软件安装位置解决办法