AR,离咱们并不遥远


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

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


摘要

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

嘉宾演讲视频和PPT地址: t.cn/RCZJKAI

头脑风暴

真实的情境

AR项目的头脑风暴必定要在真实情境中去作,由于AR应用是基于现实基于情境的。程序员

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

设备

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

咱们的应用能够是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服务,构建手机应用。

迭代循环

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

我今天的演讲就到这里,谢谢你们。

相关文章
相关标签/搜索