ios增强现实开发,iOS高级开发
iPhone8上的AR功能到底是什么样的呢
苹果在WWDC 2017的发布会推出了针对iOS 11的ARkit,正式宣布迈向增强现实(AR)领域的第一步。
成都创新互联公司专注于企业成都营销网站建设、网站重做改版、玉屏网站定制设计、自适应品牌网站建设、H5建站、商城网站制作、集团公司官网建设、成都外贸网站建设公司、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为玉屏等各大城市提供网站开发制作服务。
这是苹果推出开发增强现实(AR)应用的基础平台,包含大量硬件和操作系统的算法以及一整套原生态开发工具包(SDK)。意味着开发者可以直接在苹果iPhone和iPad上开发增强现实(AR) 游戏、营销、购物、教育、装修等应用。
在开发者大会的演示中,苹果只是演示了一个简单的放置茶杯的Demo。对于ARkit的可能性,则留给了开发者。
9月12日,苹果在秋季新品iPhone发布会上展示了一批ARkit开发者的作品。
iPhone 8、iPhone 8 Plus和iPhone X都使用了新款陀螺仪和通过A11 Bionic生物芯片进行校准的摄像头来提升增强现实(AR)效果。这也是苹果第一次在硬件层面支持该功能。
增强现实(AR)的视觉效果更加逼真,苹果演示细节丰富的机器人在篮球场上进行格斗。或者当夜晚星空密布,使用手机在实际的天空中查看星象。
同样是在空无一物的桌子上演示,这一次苹果让团队办公地点位于上海的Directive Games展示了最新的增强现实(AR)游戏《The Machines》。
手机屏幕上,桌面变成了像星际争霸一样的战场,玩家可以指挥机器军队进行进攻,也可以用第一视角进行瞄准射击。
由于芯片升级带来的画质提升,新的游戏在桌面上的效果更加清晰,细节更加丰富。通过摄像头的距离移动来缩放游戏画面更加流畅。
我们用iPhone 8 Plus对比了7 Plus以及6s Plus。6S以上的手机只要升级到iOS 11后就可以使用基于ARKit开发的应用。
我们选择了5款苹果在App Store中推荐的应用,这其中包括苹果在推出ARKit时宣布和宜家合作开发的增强现实(AR)应用IKEA Place,可以测量房间距离的工具应用Plnar以及iOS 11发布后由网易游戏开发的首批增强现实(AR)游戏悠梦 。
捕捉现实空间中的表面信息,比如桌面、地面,让虚拟物体在视觉上和现实世界产生联系是苹果ARKit主要提升的部分。
无论是测量工具Plnar还是在现实空间中放置家具的IKEA Place都需要先识别地面后才能开启功能。但识别桌面和地面的成功率就是最先遇到的问题。
在我们的测试中,花纹比较少或者颜色较浅的地面识别率会明显低一些。如果在较暗的环境下,几乎很难识别出来,Plnar会不断提醒你增强周围的光亮,而且识别时间会很长,这和ARKit需要从图像中识别更多的信息有关。
昏暗的环境下读取地面的时间增长
在正常光照情况下,iPhone 8 Plus的识别速度比7 Plus以及6s Plus明显更快。除了A11芯片带来的提升之外,iPhone 8感光元件进光量相比iPhone 7多了83% 也是关键。
一旦识别成功后,Plnar和IKEA Place的效果都很流畅。你可以用Plnar标记出要测量边线的两端,距离会自动出现在线条上,和实际用尺子测量出来的误差在1 cm以内。测量完整个房间后还可以生成3D的视图。
而宜家的IKEA Place里提供了目前宜家热销的家具商品模型。你可以选择合适的家具摆放在制定的位置,家具会从空中落到检测到的地面上。
从实际的效果来看,家具和地面结合的效果很自然。无论是椅子腿还是沙发和实际地面几乎完全接触,没有太大的漂移,加上模拟光影的效果,如果只是想粗略看一下这个家具在实际中的样子,效果是可以接受的。
同样是放置家具,Housecraft的模型还还原了物体表面的效果,譬如选择沙发后可以看到布材沙发的褶皱,在视觉上要比更加逼真。
在7 Plus上,模型动画效果已经有一点帧数下降的现象,整体使用还比较流畅,但是6s Plus就明显出现了轻微的卡顿,载入模型的等待时间也偏长。
在游戏上,除了苹果在发布会上展示的The Machines,Stack AR和悠梦都是比较出色的增强现实(AR)游戏。
Stack是垒积木的小游戏,随着积木越搭越高,可以放置积木的面积也随之减少。失败后,应用会自动从现实的地面上升起一座同等比例的积木塔,你可以从各种角度欣赏你的作品。
悠梦的整体画面风格,以及解密模式都和纪念碑谷很像。在应用内,需要识别出展开场景的平面,整个世界会在桌面上铺开。
和以往通过手指滑动屏幕拉近场景不同,你只能通过移动摄像头来查看整个场景中隐藏的线索。
场景的模型并没有苹果发布会上展示的The Machines那么精细,但无论是围着悬崖飞翔的海鸟还是旋转的灯塔,都让整个场景有一种不同于普通游戏的真实感。
虽然增强现实(AR)游戏的效果的确让人感觉新鲜,但和VR一样,在新鲜感过去之后,每次开始游戏前都需要扫描桌面变成一件很繁琐的事情。
而同样出现在三台手机上的问题都是发热,区别只是发热快慢的问题。iPhone 8大约在玩悠梦十几分钟后摄像头和芯片位置就会变得很烫。而7 Plus和6s Plus几分钟之内温度就开始升高。
就目前体验来说,增强现实(AR)这种交互方式的改变是很新鲜的,显示的效果也明显得到了更大的提升。但实用性的问题始终没有解决。
库克曾在采访中表示增强现实(AR)会彻底改变传统的购买体验。在IKEA Place中,每一款家具都标注了价格,可以在线下单。但是购买家具并不是频繁的需求,而且逛宜家商场也是挺有乐趣的事情。
无论是苹果在发布会上演示ARkit的Demo,还是在App Store中推荐的应用,这些在苹果看来最好的增强现实(AR)功能在实际生活中是否真的有用?
也许新鲜感过去后,你依然还是会选择游戏更多的PS4、XBOX,躺在沙发上玩。增强现实(AR)功能是否能成为库克心中颠覆传统应用体验的变革,并留在手机中融入到用户日常生活中,通过技术挖掘出更加实用的功能才是重要的。
iOS设备的态度增强现实问题,怎么解决
iOS11Beta1更新了什么在WWDC17上,iOS11新增了ApplePay个人间转账、Siri声音更自然和智能、控制中心设计大改、地图和导航更新、AppStore迎来全新变革。iOS11中,苹果增加了对AR增强现实的支持,开发者可以推出更有创意的游戏。当然本次iOS11
iOS增强现实(ARKit)简单介绍
跟踪是ARKit的核心组件之一,其提供了设备在物理世界中的位置与方向信息,并对物体进行跟踪,如人脸。
场景理解通过学习更多关于环境的属性,以对水平平面进行检测,如地面或桌面;iOS 11.3开始还支持检测垂直平面。这些在场景中平面可用于放置虚拟物体。此外,场景理解还会了解当前环境的光照情况,以提供光照信息用于在虚拟场景中反映真实环境,避免过亮或过暗。
通过ARKit可以很容易地集成你所选的渲染引擎。ARKit可通过SceneKit和SpriteKit渲染。Xcode中还提供了Metal模板,方便快速地开始你的增强现实体验(augmented reality experience)项目。此外,Unity和Unreal也已经集成ARKit完整的功能集到他们主流的游戏引擎中,因此你可以通过这些引擎开始使用ARKit。
AR技术叫做 虚拟增强现实技术 ,也就是在相机捕捉到的现实世界的图像中显示一个虚拟的 3D 模型。
这一过程可以分为两个步骤:
下图是一个ARKit 与 SceneKit 框架的关系图,通过下图可以看出:
ARSCNView 与 ARCamera 两者之间并没有直接的关系,它们之间是通过AR会话,也就是ARKit框架中非常重量级的一个类ARSession来搭建沟通桥梁的
要想运行一个 ARSession 会话,你必须要指定一个称之为会话追踪配置的对象: ARSessionConfiguration , ARSessionConfiguration 的主要目的就是负责追踪相机在3D世界中的位置以及一些特征场景的捕捉(例如平面捕捉),这个类本身比较简单却作用巨大
ARSessionConfiguration 是一个父类,为了更好的看到增强现实的效果,苹果官方建议我们使用它的子类 ARWorldTrackingSessionConfiguration ,该类只支持A9芯片之后的机型,也就是iPhone6s之后的机型
ARWorldTrackingConfiguration (会话追踪配置)的作用是跟踪设备的方向和位置,以及检测设备摄像头看到的现实世界的表面。
它的内部实现了一系列非常庞大的算法计算以及调用了你的 iPhone 必要的传感器来检测手机的移动及旋转甚至是翻滚。
当 ARWorldTrackingConfiguration 计算出相机在 3D 世界中的位置时,它本身并不持有这个位置数据,而是将其计算出的位置数据交给 ARSession 去管理,而相机的位置数据对应的类就是 ARFrame 。 ARSession 类有一个属性叫做 currentFrame ,维护的就是 ARFrame 这个对象。
ARCamera 只负责捕捉图像,不参与数据的处理。它属于3D场景中的一个环节,每一个3D Scene都会有一个Camera,它决定了我们看物体的视野
他们三者之间的关系看起来如下图:
ARCamera 在 3D 世界的位置看起来是这样的:
首先,ARKit 利用摄像头拍摄现实场景的画面,然后 SceneKit 用来建立虚拟世界。
建立好了以后,ARKit 负责将现实世界和虚拟世界的信息融合,并渲染出一个 AR 世界。
在渲染的同时,ARKit 要负责以下三件事:
由此可见,ARKit 主要做的事是:捕捉现实世界信息、将现实和虚拟世界混合渲染、并且时刻处理新的信息或者进行互动。
效果:
ARConfiguration :提供 3DOF 追踪
ARWorldTrackingConfiguration :提供 6DOF 追踪
对于 3DOF 追踪,我们旋转设备时可以看到虚拟的飞机视角有所变化;但当平移时,我们可以看到飞机是随着设备进行移动的。
对于 6DOF 追踪,我们旋转设备时可以看到虚拟的飞机视角有所变化(这点与 3DOF 追踪没有区别);平移时,我们可以看到飞机的不同位置,例如向上平移看到了飞机的上表面,围着飞机平移可以看到飞机的四周,而 3DOF 没有提供这种平移的追踪。
可以通过 [ARWorldTrackingConfiguration isSupported] 判断设备是否支持 ARWorldTrackingConfiguration 。
Hit-testing 是为了获取当前捕捉到的图像中某点击位置有关的信息(包括平面、特征点、ARAnchor 等)。
[图片上传失败...(image-ba8a3e-1554264132836)]
当点击屏幕时,ARKit 会发射一个射线,假设屏幕平面是三维坐标系中的 xy 平面,那么该射线会沿着 z 轴方向射向屏幕里面,这就是一次 Hit-testing 过程。此次过程会将射线遇到的所有有用信息返回,返回结果以离屏幕距离进行排序,离屏幕最近的排在最前面。
ARHitTestResultTypeFeaturePoint :表示此次 Hit-testing 过程希望返回当前图像中 Hit-testing 射线经过的 3D 特征点。
ARHitTestResultTypeEstimatedHorizontalPlane :表示此次 Hit-testing 过程希望返回当前图像中 Hit-testing 射线经过的预估平面。预估平面表示 ARKit 当前检测到一个可能是平面的信息,但当前尚未确定是平面,所以 ARKit 还没有为此预估平面添加 ARPlaneAnchor。
ARHitTestResultTypeEstimatedVerticalPlane :同上,区别仅是预估竖面。
ARHitTestResultTypeExistingPlane :表示此次 Hit-testing 过程希望返回当前图像中 Hit-testing 射线经过的无限大小的平面。
ARHitTestResultTypeExistingPlaneUsingExtent :表示此次 Hit-testing 过程希望返回当前图像中 Hit-testing 射线经过的有大小范围的平面。
ARHitTestResultTypeExistingPlaneUsingGeometry :表示此次 Hit-testing 过程希望返回当前图像中 Hit-testing 射线经过的有大小范围和形状的平面。
当前文章:ios增强现实开发,iOS高级开发
网站网址:http://pwwzsj.com/article/dsssgic.html