IT大咖说

AR,离我们并不遥远

2018-06-27  本文已影响2人  IT大咖说

内容来源:2017年5月13日,ThoughtWorks AR/VR高级研发工程师陈成在“2017技术雷达峰会|洞察构建未来的技术和趋势”进行《AR,离我们并不遥远》演讲分享。IT大咖说(ID:itdakashuo)作为独家视频合作方,经主办方和讲者审阅授权发布。

阅读字数:2388 用时:4分钟

嘉宾演讲视频及PPT:http://t.cn/RrK3hSz

摘要

AR,增强现实,这项技术离我们并不遥远。从AR游戏到AR红包,我们已经开始体验到这项技术的魅力,而AR在商业方面也已经开始崭露头角。这场演讲将从团队构成、迭代流程、设备、开发工具、技术、以及项目各环节的注意点和优化等方面,为您带来一场基于Unity平台打造AR商业应用的旅程。

头脑风暴

真实的情境

AR项目的头脑风暴一定要在真实情境中去做,因为AR应用是基于现实基于情境的。

只有在真实使用的情境中才能发掘信息,去进行需求收集、用户访谈、用户流程、创意产生等等的这一系列流程。

设备

根据场景需求,基于设备和设备所能提供的API选择设备。

我们的应用可以是2C,供消费者自己使用;可以是2B,在商业环境中给工作人员用;也可能是2B2C,需要工作人员指导消费者在商业场里景使用。

设备可以大致分为手机AR和头戴式AR两大类。

手机AR是用手机摄像头捕捉到真实世界的景象,并在上面叠加虚拟的物品呈现出的AR。

头戴式AR是一个穿戴设备。比如微软推出的HoloLens设备,他们和各行业企业合作推出了很多AR范例应用。

考虑设备能力

内容要由合适的设备来承载和展现。

渲染能力:设备是否具备我们需要的场景复杂度的需求;

续航时间:产品是短时间的应用还是长时间的应用,使用频率是怎样的;

网络能力:是否需要联网;

在室内还是室外;

场景的规模有多大……

这些都是我们需要考虑的方面,为优化做准备。

原型

纸盒原型

我们用一些纸盒、乐高或者是真实的物品代替,在真实的3D空间、实际场景中做实验,检测我们的原型设计是否可用有效,用户使用是否方便。

交互设计

设计师与程序员合作,使用几何模型(而不是高精度模型)进行开发实验。

这个阶段还要进行交互范式探索。

最后产出故事板,借助故事板来描述3D的情景。

设定优化目标

为场景和设备设定合适的优化目标和指标,要考虑的是帧率、内存消耗、耗电量和设备温度等等。

高保真设计

设计工具

高保真设计会用到一些设计工具,比如用3DS Max、Maya、Blender进行模型的制作和动画,Substance用来做材质纹理,等等。

制作适合设备的素材

素材中在场景中渲染出来后看不见的面,可以去掉,降低渲染的损耗。

控制点和面的数量,超过限制性能会降低很多。

拆分大的素材,没被看见的部分就不用渲染。

开发

Unity

我们的开发平台选用Unity 3D引擎。它的出身是一个游戏引擎,在当前AR、VR飞速发展的环境下,它已经一个通用的3D开发平台,可以适配到超过30个平台做构建,在AR、VR方面,Unity占的份额非常高。

设备API丨开源工具库

开发是基于设备API去做的,利用开源工具库丰富我们可以提供的其它功能。

用户输入输出

输入一般会用到注视和手势。在手机VR上的视角中心有一个点,这个点会跟随用户头部的移动而移动。从AR技术实现上,我们会在用户的视角中间打一个光束,和它交叉的点就是光标所在的位置。利用那个点去跟所选取到的虚拟物品进行交互,交互的方法就是用手势,如果是基于手机上的AR app,我们会用屏幕点击来进行。

输出方面物体的渲染交给Unity去做,构建虚拟场景,然后把虚拟的物品渲染出来。除了视觉上的物体渲染,还需要有听觉上的感受。空间声音就是很重要的一方面。空间声音就是声音具有空间感,使用户体验感受更加真实。

环境空间感知

这是AR区别于VR的地方,它会和真实世界结合起来,把虚拟世界变为现实世界。分为空间建模、空间分析理解以及图像和物体识别。

空间建模:如图可见,用户所在空间被扫描叠加了一层建模的样子,是通过设备传感器所做到的。建模可以被渲染出来,它的渲染和物理部分是分开的。图中渲染后用不同颜色表现出距离信息。建模包含了物理信息,它有一个碰撞机,能让虚拟物品叠加上去。

空间分析理解:建模后拿到模型,经过空间分析理解可以知道哪里是地面、哪里是墙、哪里是天花板。

图像和物体识别:图像和物体识别可以用第三方服务做到,比如Vuforia,开源的ARToolkit,等等。识别出来后再进行叠加处理。

AI:AI服务完全可以融入AR应用中,为AR增添色彩。例如微软、谷歌、IBM的服务,都可以通过接口的方式把数据传输给它们处理,再拿回来进行使用。这样AR的服务就可以做到语音识别和对话,UI不再是一个对话列表,而是可以真的有一个虚拟人在和用户进行交流。

共享协作:根据场景需求,与相同或不同设备协同合作。可以与其它设备做到同步的交互,也可以头戴设备与平板结合做演示,远程控制用户的体验。

代码管理与协作开发:Git是我们常用的。Github for Unity是直接放在Unity里的一个插件,进行图形化的管理。Unity也推出了服务Collaborate。

Unity和代码优化:首先要做Unity player settings和quality settings,不同设备需要不同的设置。根据应用内容设置摄像机的clipping plane,避免过多渲染。设置stabilization plane,添加spatial anchor,增加稳定性。放置物体在合适的位置,观看舒适度更高。把spatial mapping的精度降低到Low。写着色器,或者使用HoloToolKit之中的着色器。使用draw call batching和instancing,一次性渲染多个对象。使用纯GPU绘制大量的物体。

测试

Unity Test Runner

Unity Test Runner是Unity集成的工具。Edit mode用于做unit test,play mde可做integration test。要注意Undo或在新场景中测试。

Unity 中预览

可以在Unity中直接进行预览。在editor中有一些预设的空间模型可以预览,也可以远程连到你的设备。

监视数据

帧率一定要保证在60帧或者以上,如果低于60帧可能会产生抖动或者不稳定,用户会感到晕眩。

HoloLens上内存如果超过900兆会被直接关掉,也是我们需要关注的问题。

耗电量取决于应用的强度和帧率。

设备温度要关注的是环境处于室内还是室外,还有使用时间等因素都和温度有着密不可分的关系。这对用户的舒适度会有很大影响,尤其是头戴式AR设备,如果设备温度过高,用户体验会很差。

本地构建

部署到模拟器,再部署到设备上进行使用。

CI/CD

用Jenkins启动Unity命令行工具,可直接使用Unity的接口。可以用Unity的Unity Cloud Build服务,构建手机应用。

迭代循环

迭代循环的流程是头脑风暴-原型设计-高保真设计-开发-测试-部署,最重要的是优化。

我今天的演讲就到这里,谢谢大家。

上一篇下一篇

猜你喜欢

热点阅读