Mecanim 发表于 2021-12-3 12:53

UnityAR系列(一)——AR介绍

大家新年好。本期开始,我会给大家带来UnityAR系列的文章。
先放一张最早用于民用娱乐的AR软件之一——任天堂3DS自带的AR卡片玩法。


关于AR的资料网上已经是俯拾即是。但鉴于这个新开的坑是想做成一个系列,为了严谨起见,本篇会给大家介绍AR的基础概念和用途,以及Unity中几个主要的AR方案。
在之后的文章,我们会通过一些具体的项目及官方示例,分别为大家介绍Unity中几种AR插件的主要功能及用法。
<hr/>AR

AR体验的基本需求,是在用户所处的现实世界空间与可视化建模内容的虚拟空间之间创建对应关系的能力。当应用程序显示虚拟内容与实时摄像头图像,用户会感受到现实的增强:产生虚拟内容是真实世界的一部分的感觉。
其将真实世界信息和虚拟世界信息“无缝”集成的新技术,是把原本在现实世界的一定时间空间范围内很难体验到的实体信息(视觉信息,声音,味道,触觉等),通过电脑等科学技术,模拟仿真后再叠加,将虚拟的信息应用到真实世界,被人类感官所感知,从而达到超越现实的感官体验。真实的环境和虚拟的物体实时地叠加到了同一个画面或空间同时存在。


AR技术,不仅展现了真实世界的信息,而且将虚拟的信息同时显示出来,两种信息相互补充、叠加。在视觉化的增强现实中,用户利用头盔显示器,把真实世界与电脑图形多重合成在一起,便可以看到真实的世界围绕着它。
AR技术包含了多媒体、三维建模、实时视频显示及控制、多传感器溶合、实时跟踪及注册、场景融合等新技术与新手段。增强现实提供了在一般情况下,不同于人类可以感知的信息。
主要特点

[*]真实世界和虚拟世界的信息集成;
[*]具有实时交互性;
[*]是在三维尺度空间中增添定位虚拟物体。
AR技术可广泛应用到军事、医疗、建筑、教育、工程、影视、娱乐等领域。应用领域
AR技术不仅在与VR技术相类似的应用领域,诸如尖端武器、飞行器的研制与开发、数据模型的可视化、虚拟训练、娱乐与艺术等领域具有广泛的应用,而且由于其具有能够对真实环境进行增强显示输出的特性,在医疗研究与解剖训练、精密仪器制造和维修、军用飞机导航、工程设计和远程机器人控制等领域,具有比VR技术更加明显的优势。

[*]医疗领域:医生可以利用增强现实技术,进行手术部位的精确定位。



[*]教育领域:可通过增强现实,能够突破场地、设备、环境等客观条件的限制,提供更直观和形象的教学场景。
[*]军事领域:部队可以利用增强现实技术,进行方位的识别,获得实时所在地点的地理数据等重要军事数据。
[*]古迹复原和数字化文化遗产保护:文化古迹的信息以增强现实的方式提供给参观者,用户不仅可以通过HMD看到古迹的文字解说,还能看到遗址上残缺部分的虚拟重构。




[*]视频通讯领域:使用增强现实和人脸跟踪技术,在通话及视频的同时在通话者的面部实时叠加一些虚拟物体,在很大程度上提高了视频对话的趣味性。



[*]影视领域:通过增强现实技术可以在影视中实时的将辅助信息叠加到画面中,使得观众可以得到更多的信息。
[*]娱乐、游戏领域:增强现实游戏可以让不同地点的玩家,共同进入一个真实的场景。或者使游戏场景与现实场景叠加达到更多娱乐的目的。



[*]旅游、展览领域:人们在浏览、参观的同时,通过增强现实技术将接收到途经建筑的相关资料,观看展品的相关数据。
工作原理
移动式增强现实系统的早期原型增强现实的基本理念是将图像、声音和其他感官增强功能实时添加到真实世界的环境中。听起来十分简单。而且,电视网络通过使用图像实现上述目的不是已经有数十年的历史了吗?的确是这样,但是电视网络所做的只是显示不能随着摄像机移动而进行调整的静态图像。增强现实远比电视广播中见到的任何技术都要先进,尽管增强现实的早期版本一开始是出现在通过电视播放的比赛和橄榄球比赛中,例如Racef/x和添加的第一次进攻线,它们都是由SporTVision创造的。这些系统只能显示从一个视角所能看到的图像。下一代增强现实系统将显示能从所有观看者的视角看到的图像。
在各类大学和高新技术企业中,增强现实还处于研发的初级阶段。最终,可能到这个十年结束的时候,我们将看到第一批大量投放市场的增强现实系统。有研究者将其称为“21世纪的随身听”。增强现实要努力实现的不仅是将图像实时添加到真实的环境中,而且还要更改这些图像以适应用户的头部及眼睛的转动,以便图像始终在用户视角范围内。下面是使增强现实系统正常工作所需的三个组件:

[*]头戴式显示器
[*]跟踪系统
[*]移动计算能力
增强现实的开发人员的目标是将这三个组件集成到一个单元中,放置在用带子绑定的设备中,该设备能以无线方式将信息转播到类似于普通眼镜的显示器上。
设备及组件
如今国内外已经有很多厂商在研发AR技术而比较出色的,应当属于apple、google和微软和高通。
Google的glass和微软的HoloLens应该算是真正意义实现ar的设备,是当今最好的ar设备之二,据传,apple也在开发自己的ar眼睛设备。



HoloLens



glass


组件方面,apple的arkit、google的arcore和高通的vuforia也将会是未来的潮流。

UnityAR
在unity中有数种ar插件,如apple的ARkit、google的 ARcore及高通vuforia等,这也是我们常用的三种UnityAR插件。
在Unity2018版本中,还集成了可跨平台的AR Foundation。
<hr/>ARkit

ARKit是苹果在2017年WWDC推出的AR开发平台,现在已更新至ARkit2。开发人员可以使用这套工具iPhone和iPad创建增强现实应用程序。
在unity中,可以通过Asset Store下载ARkit插件

[*]VIO 视觉惯性测距(Visual-inertial Odometry)
为了在真实空间和虚拟空间之间创建对应关系,ARKit使用一种称为视觉惯性测距的技术。该过程会将iOS设备的运动感应硬件捕捉的信息(CoreMotion)与设备相机可见的场景的计算机视觉分析相结合。
[*]ARKit的场景理解系统和光照估计(Scene understanding and Lighting Estimation)
1.平面寻找:使用稀疏点云提取和创建平面
PrefabsGeneratePlanes 和UnityARGeneratePlane.cs 可以生成平面。该脚本监听平面并检测更新,再为检测到的每个平面创建一个新平面的实例。


2.碰撞检测:针对点云和平面射线碰撞检测
ARKit SDK分析相机视图中的内容,并根据可识别的功能和估计的深度确定点数。碰撞结果按照与设备的距离进行排序。平面优先于feature point


3.光照估计:估计当前摄像机的环境光值,以便用真实世界的光照亮数字物体
ARKit SDK提供了对当前摄像机视图ambient light(环境光)的估计。通过将ARKit值在UnityARAmbient.cs中统一转换为更合适的强度来调整场景中单位光的亮度(通常为Directional Light)。这允许应用程序用真实世界的光来照亮场景中的对象。



[*]设置场景
UnityARkit基本设置由三个脚本组成:
1.ARCameraManager.cs :设置MainCamera的local position
在使用中不需要手动设置摄像机的位置,该脚本将自动设置摄像机的相应方向和位置


2.UnityARVideo.cs :从设备摄像机读取视频
确保将相机的清除颜色设置为alpha = 0


3.UnityARCameraNearFar.cs :更新Far和Near
注意:


[*]如果需要碰撞检测速度更快,而不是更高的精度,可以使用Feature points,而不是平面检测。
[*]获得所需结果后,禁用平面检测。平面检测需要的计算量更大。因为放置在场景中的对象不需要一直做平面检测,所以在获得结果以后可以禁用平面检测。
[*]允许在应用中重置ARKit会话m_session.RunWithConfigAndOption(config, option),option可以重置上次会话。
[*]使用shadowPlanePrefab在平面和现实世界中投射阴影,在AR应用程序中可以有更好的效果
[*]使用真实世界大小。Unity中的1个单位表示一米,在放置对象和创作内容时需要考虑到这一点。
<hr/>ARcore

ARCore是谷歌推出用来在Android上搭建增强现实应用程序的软件平台,类似苹果的ARKit。我们在里面使用了三项关键技术来整合虚拟内容和现实世界:

[*]运动跟踪技术让手机能够通过传感器和相机,感知并追踪自身在环境中的相对位置;
[*]环境理解技术让手机可以侦测到水平面,如地表或餐桌;
[*]光照强度估测技术使用手机的环境光传感器可以估量当前环境的光照情况。
简单来说的话,ARCore 其实只做两件事:

[*]在移动设备移动时追踪它们的位置;
[*]逐渐用自己的方式对现实世界进行理解。
<hr/>AR Foundation

在 apple的ARKit与google的ARCore两大AR平台出现之后,不少开发者陷入两难之中,毕竟要开发兼容两大平台的应用确实更费时费力。为了缓解这一问题, Unity为手机AR推出跨平台开发工具——AR Foundation。

Unity表示,“我们一直站在手持式AR开发的前沿,我们从一开始就支持ARCore和ARKit。但借助AR Foundation及其利用的软件架构,我们现在可以为开发者提供一个支持ARCore,ARKit和未来平台核心功能的通用API。”

AR Foundation已经通过Package Manager集成至Unity,所以你可以轻松将其集成至你的新项目之中。Unity专注于为AR Foundation增加对新功能和平台的支持。同时,他们将继续支持特定于平台,开发者希望在现有项目中使用的插件。



AR Foundation已经通过Package Manager集成至Unity

AR Foundation的初始版本将为大多数AR应用的核心功能提供支持:

[*]平整表面检测
[*]表示为点云的深度数据
[*]高效的pass-thru渲染
[*]有助于将虚拟对象锚定到物理世界的参考点
[*]估计平均色温和亮度
[*]追踪物理空间中的设备位置和方向
[*]在AR中正确缩放内容的实用程序
[*]针对平面和深度数据的光线投射
[*]支持轻量级渲染工作管线
[*]支持ARkit的ARWorldMap及面部识别
[*]AR Foundation将继续增加对新平台功能和实用程序的支持,同时保持向后兼容性。


AR Foundation的目标是要提供一个独立于平台的脚本API与MonoBehaviours,方便开发者创建依赖于ARCore和ARKit共有核心功能的应用程序,让开发者只要进行一次开发工作,就能把应用程序部署到iOS和Android两种装置上,而不需要任何额外修改。但AR Foundation目前尚未支持ARKit和ARCore的所有功能,因此当开发者的应用程序相依于AR Foundation中尚未包含的特定功能,则还需单独使用特定的SDK。
<hr/>Vuforia
Vuforia是与高通公司的合作产品,致力于虚拟现实的技术。VR和AR的结合在Android端和iOS端表现效果相当不错,并且可以通过终端自带的摄像头进行虚拟现实,同时支持VR和AR的交互工作,达到体验不输给传感器的效果。
Unity2017.3平台开始全面支持Vuforia 7。通过Unity编辑器,开发人员可以直接将各种各样的实物、环境与 3D 图像混合,从而开发出跨平台的AR应用


Vudoria也是当今AR行业使用较广的方案。
<hr/>之后的文章中,我们将会通过一些案例,来介绍Vuforia及AR Foundation的用法。

文中部分定义来源于维基百科,部分图片来源于网络。

FeastSC 发表于 2021-12-3 13:02

前排支持一下

redhat9i 发表于 2021-12-3 13:03

谢谢

xiaozongpeng 发表于 2021-12-3 13:09

这个系列很不错,希望坚持下去啊

DungDaj 发表于 2021-12-3 13:16

支持!!!

Ylisar 发表于 2021-12-3 13:25

KaaPexei 发表于 2021-12-3 13:26

[大笑][大笑]
页: [1]
查看完整版本: UnityAR系列(一)——AR介绍