www.mg4355.com_mg娱乐游戏4355|平台官网

宝马让你用,从哪里冒出来的ARCore

2020-01-17 14:04

汽车行业如今对 VR、AR 技术的运用,无疑是走在相当前面的。而在这次的 CES 上,宝马正式宣布,将会使用基于 Google Tango AR 技术开发的 BMW i Visualizer 软件,让到访车店的顾客可以通过扩增实境的方式来预览 i3 或 i8。在整个过程中,你可以自定义各种元素,甚至可以把头「伸」进虚拟的车里,看看不同的内饰效果(当然啰,坐是不能坐的)。值得一提的是,宝马打算在今年晚些时候把相关应用上架 Google Play,届时哪怕不去车店,用户应该也有机会预览自己感兴趣的车款。不过要达到这样的效果,前提是你必须有一款支持 Tango 的设备喔。

Google 最早是在 2014 年的时候以 Project Tango 为出发点(后来改名 Tango)进入 AR 的世界,然而由于需要相当专门的相机组件,因此真正推出的产品并不多,除了联想的 Phab2 Pro 和华硕 ZenFone AR 之外,好像就没有什么大的产品面世了。今年稍早的时候,Google 则是发布了 ARCore 平台与苹果 ARKit 相抗衡,不须要专门的零件,用普通相机就可以达到 AR 的效果。显然 Google 认为 ARCore 已经成熟到足够接受的程度,因此今天宣布了将从明年 3 月 1 日起,结束对 Tango 的支持,完成了 Tango 的阶段性任务。Tango 虽然说效果极佳,但无论是硬件成本还是软件的运算需求都很高,对于推广 AR 来说其实是阻力大于助力的。如今 Google 全力专注在 ARCore 上,应该有更大的机会让 AR 真正热门起来吧?

一、ARCore的横空出世


前几天的谷歌开发人员日,技术专家Tom Slater连线在波兰克拉科夫的ICE会议中心,在YouTube直播中荣重推出了ARCore。

苹果今年6月份发布的ARkit,对于开发者和用户都极度友好,它通过iPhone现有的摄像头与陀螺仪就能实现绝大多数AR体验。相比之下,Tango还需要红外深度感知传感器的配合。ARCore的发布,普遍被认为这是谷歌对象ARKit的一次反击。

一、AR、ARKit、Tango的简介

We're turning down support for Tango on March 1, 2018. Thank you to our incredible community of developers who made such progress with Tango over the last three years. We look forward to continuing the journey with you on ARCore.

— Tango (@projecttango) December 15, 2017

二、Tango会被Google抛弃吗


在过去三年里,Google一直在开发基于Tango技术的移动AR技术,联想和华硕还为其打造了适配的手机产品Phab 2 Pro和ZenFone AR。

硬件方面: Tango拥有红外深度感知传感器,确实具备比较完整的AR能力。
软件方面: 同样在Tracking中只依赖于单目的算法,目前的ARCore也确实继承了一部分Tango的架构或者思路,甚至有部分人认为ARCore只是注释掉了Tango 底层算法中深度相机那部分,事实肯定没这么简单。

所以不认为Tango会被放弃,只是不会做为主力的产品而转为底层的能力服务Google的其他业务。

而ARCore则是建立在这项工作之上的。但是它没有任何额外的硬件,这意味着它可以在Android生态系统中扩展,为现有和未来的Android手机带来了增强现实功能,开发者现在就可以开始尝试使用它了。

从今天开始使用Pixel和三星的S8,运行7.0 Nougat和以上的数百万设备上,就可以运行ARCore。在预览的最后,谷歌的目标是1亿台设备。谷歌与三星(Samsung)、华为(Huawei)、LG(LG)、华硕(ASUS)等制造商合作,为质量和高性能提供一致的标准。

1.1 何为AR(增强现实)?何为VR(虚拟现实)?

增强现实技术是一种实时地计算摄影机影像的位置及角度并加上相应图像、视频、3D模型的技术,这种技术的目标是在屏幕上把虚拟世界套在现实世界并进行互动。这种技术1990年提出。随着随身电子产品CPU运算能力的提升,预期增强现实的用途将会越来越广。

虚拟现实技术是一种可以创建和体验虚拟世界的计算机仿真系统,它利用计算机生成一种模拟环境,是一种多源信息融合的、交互式的三维动态视景和实体行为的系统仿真使用户沉浸到该环境中。

虚拟现实发展阶段

虚拟现实技术演变发展史大体上可以分为四个阶段:

有声形动态的模拟是蕴涵虚拟现实思想的第一阶段(1963年以前);

虚拟现实萌芽为第二阶段(1963 -1972 );

虚拟现实概念的产生和理论初步形成为第三阶段(1973 -1989 );

虚拟现实理论进一步的完善和应用为第四阶段(1990 -2004 );

飞入寻常百姓家(2016-);

三、和ARKit比划比划


ARCore和ARKit两者工作原理的大致相同,都允许开发人员使用现有手机的单个摄像头来感知并跟踪手机相对于世界的位置,并能调整虚拟物体与现实世界的匹配程度。都能与Java/OpenGL,Unity和Unreal配合使用,不需要其他特制硬件就可以在手机系统上运行。

但是ARKit应用程序在任何具有A9处理器的iOS 11系统上都可以运行,以为着任何iPhone 6S、iPad Pro或者更高版本都能运行。但是对于Android来说,由于不同厂商的手机型号会有兼容性问题和摄像头的不同,很大程度上限制的ARCore在Android上的推广。

此外Google还将AR引入Web,认为其实“AR未来关键组成部分”。并发布了两个实验性的浏览器—以AR为重点的Chrominum浏览器版本:一个在Android基础上可以使用ARCore;另一个基于iOS,可以使用ARKit。这样Web开发人员使用AR,用浏览器也能使用上AR功能。

另一方面,由于硬件环境和算法架构的不同,两者肯定在体验和细微的功能上会有所区别,比如图像的分辨率、刷新率,或者光源感知算法的效果以及尺度收敛的速度和精度等。基于VIO架构的ARKit更加侧重于定位本身,比较轻量,在小范围场景内使用不会有明显的飘移感。基于原Tango架构的ARCore在定位之外,会比较注重三维重建的部分,输出的3D点至少也是半稠密的。

整体看ARKit使用更加流畅,帧率也较高,对于用户来说体验是非常好的。ARCore在未来的想象力会更大一些,代价是计算量也会更大一些,所以流畅性会有所欠缺,帧率也低于ARKit,不过定位的精度可能会优于ARKit,并且具备重定位的功能。

1.2 科技巨头在AR的布局?

移动领域,典型代表Google的Tango技术与Apple的ARKit技术

何为Tango?

Tango是Google的一个AR增强现实项目,配合其独特的移动设备和SDK可以方便的在应用中使用AR技术。

Google Project Tango.

何为ARKit?

ARKit是Apple 2017 WWDC大会上,Apple宣布在iOS 11中带来了全新的增强现实组件ARKit,该应用适用于iPhone和iPad平台,力求帮助iPhone成为全球最大的AR平台。

四、ARCore到底有什么本事


ARCore主要做了以下三件事情,使得ARCore可以使虚拟的内容放置在真实的表面上,与真实世界相关联:

图片 1

ARCore

  1. 运动跟踪
    ARCore从摄像头捕获的图片中探测视觉上不同的特征点和IMU传感器数据,来了解手机移动时相对于周围世界的位置,计算其位置的变化。基于ARCore提供的摄像头的位置和方向(Pose),渲染的虚拟图像可以和摄像头获得的图像重叠,保持其准确位置,从而使得虚拟内容看起来是真实的世界的一部分。

  2. 环境理解
    ARCore通过探测特征点和平面,不断提高对真实世界环境的认识。通过寻找出现在某水平面上的特征点集群,如桌子,让你的应用可以使用这些表面作为你的应用画板。ARCore还确定每个画板的边界,这样你的应用就可以使用这些信息将虚拟对象放在平面上。但是由于ARCore使用特征点来检测,对于没有纹理的平面,如镜面无法正确的检测。

  3. 光学评估
    ARCore探测环境光,通过光学算法叠加到虚拟画像上,使得开发者能够与周围环境相匹配的方式来点亮虚拟物体。两个世界的阴影相匹配,使得虚拟对象外观看起来更逼真。


1.新技术,新未来!尽在1024工场。时刻关注最前沿技术资讯,发布最棒技术博文!(甭客气!尽情的扫描或者长按!)

图片 2

1024工场服务号

2.完整和持续更新的《使用Android打开AR的开发大门—ARCore》文档,欢迎大家阅读!
https://www.kancloud.cn/p3243986735/arcore\_develop/457951

图片 3

这里写图片描述

二、Apple ARkit和Google Tango的原理和优劣

2.1、ARKit与Tango的实现原理

Google Tango在AR领域的硬件上的方式简单粗暴,利用堆硬件来实现AR技术需要的各个条件。

Tango手机与普通手机相比,新增一颗鱼眼镜头和一颗红外传感器,这两个原件是实现 Tango 核心技术的关键,Tango核心技术包含运动追踪、深度感知和区域学习。

图片 4

运动追踪:鱼眼摄像头的作用为了让拍摄场景配合上用户位置、视野的移动,即动作追踪。当设备在移动的过程中,超广角鱼眼相机不断地一帧一帧进行拍摄,然后手机会对每一帧里的“特征点”相对位置进行分析,计算出鱼眼相机、也就是手机移动的距离、速度和方向。

深度感知深度感知即是距离感知。通过红外线传感器和双摄立体视觉都能够测出目标点和我们手机之间的距离。并且为了让整个空间的“绘制”能在手机中进行,Tango手机中的“深度感知”其实也需要前面提到的鱼眼摄像头来提供特征点,只通过这些特征点来对实际环境进行动态建模,大大减少了手机计算的压力。

区域学习:尽管鱼眼超广角视野很广,但是仍然没有办法获取整个空间的信息。所以Tango手机在不断检测新场景的过程中,一旦检测到这个场景中有和之前某个场景中的深度和特征点匹配的点,就会将两个场景结合,最后经过一段时间的学习,所有新场景都会被Tango手机记住并且构成一整套空间。(另外一种解释:移动追踪只会反馈移动设备当前的坐标信息、对于设备“看”到的东西没有任何记忆,区域学习使移动设备能够看到和记住物理空间的关键视觉特征,比如边缘,角落等。区域学习会把看到的保存起来,下次再次“看”到的时候会进行匹配,利用这些数据修正误差(漂移修正),使得轨迹追踪、定位更加准确。

Tango设备:

1.Tango平板(2014)

图片 5

谷歌Project Tango平板摄像头模块与Kinect很像。双镜头加景深传感器配置,其中一颗镜头400万像素,可提供高感光度拍摄及更快的速度;另一颗则是170度的广角鱼眼镜头,主要追踪物体的动态行为。

谷歌Project Tango平板170度广角鱼眼镜头,可追踪物体运动轨迹,不过其没有标识型号。

2.联想Tango手机(2016)

更多Tango知识点可参考:

Google Project Tango资料简介(一)

带你认识Google屌炸天的AR项目——Project Tango

Apple ARKit,和Google堆硬件的做法完全不同,ARkit可以让所有搭载 iOS 11 的iPhone或ipad设备具备AR能力。Apple的伟大之处在于,iPhone单摄可以做到运动追踪(摄像头没有鱼眼那么广,对于优化的要求很高),但对于深度感知就毫无办法,原因是单摄只能获取平面影像信息。但苹果仍然实现了深度感知功能,令人遗憾的是,在Apple 2017 WWDC大会上并没有介绍其实现原理。

图片 6

2、优缺点比较

依目前的ARkit来看,搭载双摄的iPhone是很有希望实现和Tango手机类似体验的。但目前通过单摄终究是有限制的,ARkit只能进行简单的平面和边界的识别,比如像Pokemon Go或者是在桌面上渲染出一些物体这样的功能,如果要它像Tango手机那样完成整个环境的三维重建就做不到了,比如用于虚拟装修这样复杂的应用。

与Tango相比,ARkit的缺点在于无法用于复杂场景和功能,优点是单摄手机就能实现AR功能,完全不需要其他硬件来进行配合,这也是为什么苹果能够自信地说ARkit是全世界最大的AR平台。

三、ARKit初体验

3-1简单的AR场景

一个最简单地AR场景实现所需要的技术以及步骤包含如下

(1).多媒体捕捉现实图像:如摄像头

(2).三维建模:3D立体模型

(3).传感器追踪:主要追踪现实世界动态物体的六轴变化,这六轴分别是X、Y、Z轴位移及旋转。其中位移三轴决定物体的方位和大小,旋转三周决定物体显示的区域。下图能够比较好的展示XYZ轴位移及旋转。

图片 7

图片 8

图片 9

pitch是围绕X轴旋转,也叫做俯仰角;yaw是围绕Y轴旋转,也叫偏航角;roll是围绕Z轴旋转,也叫翻滚角

具体请参考:pitch yaw roll是什么

(4).坐标识别及转换:3D模型显示在现实图像中不是单纯的frame坐标点,而是一个三维的矩阵坐标。这基本上也是学习AR最难的部分,好在ARKit帮助我们大大简化了这一过程。

(5).除此之外,AR还可以与虚拟物体进行一些交互。

图片 10

3-2-ARKit概述及特点介绍

1.ARKit是2017年6月6日,苹果发布iOS11系统所新增框架,它能够帮助我们以最简单快捷的方式实现AR技术功能。

2.ARKit框架提供了两种AR技术,一种是基于3D场景(SceneKit)实现的增强现实,一种是基于2D场景(SpriteKit)实现的增强现实

一般主流都是基于3D实现AR技术,ARKit不仅支持3D游戏引擎SceneKit还支持2D游戏引擎SpriktKit,这一点出乎笔者意料之外

3.要想显示AR效果,必须要依赖于苹果的游戏引擎框架(3D引擎SceneKit,2D引擎SpriktKit),主要原因是游戏引擎才可以加载物体模型。

虽然ARKit框架中视图对象继承于UIView,但是由于目前ARKit框架本身只包含相机追踪,不能直接加载物体模型,所以只能依赖于游戏引擎加载ARKit

4.误区解读:ARKit虽然是iOS11新出的框架,但并不是所有的iOS11系统都可以使用,而是必须要是处理器A9及以上才能够使用,苹果从iPhone6s开始使用A9处理器,也就是iPhone6及以前的机型无法使用ARKit

5.开发环境介绍

1.Xcode版本:Xcode9及以上

2.iOS系统:iOS11及以上

3.iOS设备:处理器A9及以上(6S机型及以上)

4.MacOS系统:10.12.4及以上(安装Xcode9对Mac系统版本有要求)

目前只有Bete版本,链接地址:https://developer.apple.com/download/

3-3-IOS开发一些基本知识

平时所看到App界面,是用viewController实现的,类似于Android的Activity

其生命周期如下图所示:

图片 11

当你alloc并init了一个ViewController时,这个ViewController应该是还没有创建view的。ViewController的view是使用了lazyInit方式创建,就是说你调用的view属性的getter:[self view]。在getter里会先判断view是否创建,如果没有创建,那么会调用loadView来创建view。loadView完成时会继续调用viewDidLoad。loadView和viewDidLoad的一个区别就是:loadView时还没有view。而viewDidLoad时view以及创建好了。

当view被添加其他view中之前时,会调用viewWillAppear,而之后会调用viewDidAppear。

当view从其他view中移出之前时,会调用viewWillDisAppear,而之后会调用viewDidDisappear。

当view不在使用,而且是disappeared,受到内存警告时,那么viewController会将view释放并将其指向nil。

3-3-ARKit初体验之3D效果

1.3-ARKit初体验之3D效果

1.打开Xcode9bete版本,新建一个工程,选择Augmented Reality APP(Xcode9新增),点击next

图片 12

2.在包含技术选项中选择SceneKit

图片 13

3.此时,Xcode会自动为我们生成一段极其简洁的AR代码

图片 14

4.ARKit工作原理及流程请参考

ARKit工作原理及流程介绍