更新 :这本书现在可用! 在这里获取! 那是在2017年6月5日,Apple刚刚在WWDC 2017上发布了iOS的ARKit。如果我说我感到惊讶,我不会撒谎,因为我期望最近几年会使用增强现实框架,特别是在苹果收购Metaio时。 那天晚上晚些时候,我坐在破烂的汽车旅馆里,用疯狂的慢速wifi下载了Xcode 9 beta和iOS 11 beta。 让我谈谈汽车旅馆。 有时您可能会在高速公路上行驶时,看到汽车旅馆就在高速公路上,您会想,到底谁会住在那。 好吧,那是我住过的同一家酒店。 无论如何,几个小时后,大约在凌晨2:00,我能够在iPhone 6S上运行我的第一个ARKit应用程序。 我充满了喜悦。 我的房间里有一架太空船,我可以从不同的方向看太空船。 我爱它! 🙂 在接下来的几天里,我尝试了ARKit,并且喜欢整个框架及其提供的经验。 作为一名教育家和讲师,我开始研究有关Udemy的ARKit课程。 我很自豪地说我的课程立即成为热门课程,并且是Udemy上最畅销的课程之一。 您可以在这里查看课程。 现在,该课程的初始版本已经完成,我可以专注于这本书。 我决定自行在Gumroad上出版这本书。 这将使我能够灵活地更快地更新本书。 我将遵循精益发布模式,该模式将允许我每周发布一个或多个章节。 第一章将在下周提供。 这是本书的粗略概述(请注意,这可能会发生变化): 先决条件 你好ARKit 几何,材料和节点 载入模型 检测飞机 物理和碰撞检测 光 基于物理的渲染 好消息是您可以立即预订该书🙂使用以下链接进行预订。 为iOS开发者预购ARKit 您也可以在Gumroad上关注我,以获取有关这本书的最新消息。 https://gumroad.com/azamsharp/关注 您还可以在Twitter上关注我Mohammad Azam 非常感谢您,希望您喜欢这本书。 Azam
我使用ARKit 2.0和Swift开发适用于iOS的AR应用程序。 在 第1部分中, 我探讨了2018年开发增强现实应用程序的实际问题,在 第2 部分中,我回顾了限制当前iOS AR应用程序的一些技术限制。 这就是我对移动AR的未来展望。 第3部分:新生的生态系统 使用本地SDK(即Apple的ARKit或Google的ARCore)开发移动AR应用程序的能力已经存在大约18个月了。 回顾围绕移动AR开发的实际问题和更多技术问题,在发布了一些AR产品并认识到野外可用的工具,库和示例不足之后,空间的新颖性变得更加清晰。 鉴于与移动AR相关的一切都处于起步阶段,这不足为奇。 但是,经历将多种增强现实产品推向市场的过程,对于新创业公司或老牌运营商而言,都存在一些有趣的机会,他们可以针对这种新的开发模式来创建工具和产品。 这是我遇到的最明显的差距: 原型AR交互 似乎经过了十年的稳固发展,直到能够为移动应用程序提供强大的原型设计和线框图的工具。 我更喜欢在纸上画草图,然后直接跳入Xcode以使用实际代码“原型化”,但是在过去的几个月中,我也大量使用了Sketch,Figma和Invision。 还有另外二十种工具可用于促进构想,构思草图,对其进行框架化,设计应用程序的早期版本以及将像素完美的可点击原型组合在一起以进行“标准”移动产品的早期测试的阶段。 但是引人注目的AR产品结合了用户交互,用户独特的环境和动画/移动UI的组合来增强现实。 设计精美,构想精美的AR交互屏幕截图仍然是:静态屏幕截图。 屏幕截图无法传达响应用户输入的3D元素的精确动画。 屏幕截图也无法传达AR元素淡入地平线,检测到新平面或识别对象/位置时所需的过渡和行为。 所需要的是位于运动设计,图形设计,交互设计和用户体验设计的交集处的一些工具,可通过创建/导入3D模型来进行AR产品设计和AR交互设计,以轻松进行调整,参数化动画设计和常规原型制作。 由于我没有从事娱乐行业,所以我可能会遥遥领先,但是该行业的预可视化方法与AR产品原型之间可能存在一些相似之处。 previz公司进入AR市场可能会有一些捷径或机会。 另一个有用的模拟可能类似于Lens Studio提供的预览效果-我正在设想的假设性AR工具可能会受益于提供大量的模拟环境,这些环境可以评估进行中的AR交互在各种情况下的工作方式。 就目前而言,由于移动AR是一个新兴的利基市场,我不希望在2-5年内发布专用的AR消费类硬件并且市场急剧扩大之前,不会真正看到并测试这种产品。 AR记录 正如我之前多次抱怨的那样:测试AR产品非常困难。 我不认为在不久的将来会出现用于AR测试的逼真的渲染和有用的模拟环境。 因此,与此同时,我们必须寻找并依靠与模拟无关的改进的AR日志记录和测试工具。 在构建遗留代码或测试新功能时,有几次不正确的数学运算让我很想知道:我到底在看什么? 由于当今的原生ARKit开发是完全不可视的,而AR本质上是可视的,因此将单个代码元素偏离90º或以1为单位,并在相机后面渲染对象,或者意外地围绕其旋转是相对容易的。相机或其他不需要的地方。 Unity和Unreal本质上是视觉开发工具包,因此更适合显示“实时”场景的3D正交地图。 这些实时场景有助于以可探索的方式实时显示所有相机,物体,灯光等。 当您移动相机(即手机)时,映射的表示在Unity / Unreal场景中移动。 Xcode的视觉效果要差得多,可以在ARKit数据,场景,相机等的可视化中使用一些帮助。 这样的工具还可以记录与AR会话相关的其他数据,以促进更快的开发和调试。 我的希望是Reveal增加了与AR相关的功能,或者非常有前途的,刚刚起步的项目ARlog / ARInspector继续发展,因此,下次我面对复杂的ARKit项目的开发时,我可以选择。 我相信生态系统的这种演变将带来更好的体验,从而以更快的速度进入更多人的手中。 3D模型创建 最后,我们对ARKit开发的最深了解是:难以获得适合在您的应用程序中使用的3D模型。 由于AR从根本上讲就是3D体验,这意味着可靠的3D模型将在绝大多数AR体验中发挥某些作用。 尽管Apple和Xcode提供了一些基本的几何图形(例如,盒子,平面和球体),但要在本地ARKit应用程序中修改,编辑和放置这些几何图形却非常困难且费力。 与这两个开发平台相比,Unity和Unreal在Xcode本地开发方面提供了半步改进。 但是从我所看到的一切来看,如果您想要创建一个模型或角色,而不仅仅是彩色框(即,除了最可笑的“字符/模型设计”之外的其他任何东西),您就需要去其他地方并利用其他软件产品。 而且,一旦在其他地方生成了模型,就没什么好说的,无法正确格式化,导入和放置模型。 我来自具有Pro / […]
通过使用强大的技术来使您的视觉娱乐。 增强现实技术是一种如此有用的技术,它与您周围的整个世界都在发挥作用。iOS引入了ARKit框架,以消除虚拟世界与现实世界之间的界线。 ARKit可与iOS设备的相机配合使用,在环境中扫描图像和对象,并在真实空间中放置3D模型并使其适合放置。ARKit主要在AR应用程序的幕后进行三项基本工作:跟踪,场景理解和渲染。 ARKit的核心是让您将对象拖放到环境中,并使用触摸屏对其进行操作。 在WWDC 2018上,Apple宣布了ARKit 2.0版中的许多改进。 这些改进中的第一个改进是USDZ,这是由Apple和迪士尼的Pixar为ARKit开发的一种新文件格式,可简化创建和共享增强现实内容的过程。 Adobe的Creative Cloud软件套件将本地支持新格式,以允许与Photoshop等通用程序兼容。 ARKit 2的新增功能– WWDC 2018 –视频– Apple Developer ARKit 2使开发生动的增强现实体验变得容易,并使应用程序可以在……中与现实世界进行交互。 developer.apple.com 俗话说,探索越多,对它的迷恋就越多。这在增强现实中发生了。由宜家家具应用程序开发。几天后我就通过了。感谢Google !!! 这款家具应用程序是根据“购买前将其带回家”的概念实施的。您确实很喜欢家具,但是不确定是否适合居住区域。没问题,ARKit可以提供解决方案。确定水平面,一旦检测到我们将插入家具(椅子),我们可以通过捏和缩放来缩放它。如果椅子不动,这有什么用,是的,我们将使用手势旋转椅子并移动它并使其适合环境 让我们看看该应用程序是如何工作的。 在探索ARKit框架之前,建议先了解一下SceneKit。在Xcode中选择“增强型”应用程序时,默认的内容技术是SceneKit。要了解更多信息, 场景工具箱·objc.io objc.io出版有关iOS和OS X开发的高级技术和实践的书籍 www.objc.io 在Xcode中,默认情况下,我们将看到ship.scn。 如果您不太确定这是如何工作的,请使用默认代码运行该应用,然后您可以在相机视图中看到太空飞船。我们的项目中不需要ship.scn。只需继续将其删除即可现在,我们需要我们的家具模型,某种椅子,桌子或沙发。 专业人士的3D模型:: TurboSquid 在我们庞大的汽车,人物,纹理,建筑模型等在线目录中,可以为您的项目找到3D模型。 www.turbosquid.com TurboSquid提供了惊人的3D对象,您可以免费下载它们。(我选择了.dae collada格式的椅子)。将图像放入您的项目中。 项目设置完成。现在,有趣的部分开始了。编码时间!!! 首先,放置物体需要检测平面,在这种情况下它应该是水平的。平面检测是使用didAdd委托方法和’ ARPlaneAnchor ‘完成的。到SceneView。 获取触摸识别器的位置,使用hitTest在捕获的图像中搜索与SceneView相对应的真实对象,并将椅子模型添加到SCNScene。 如果您的椅子没有正确放置在平面上,请尝试将椅子的视角更改为正面,然后使用Xcode节点检查器转换编辑器。 而已 !!! 看起来很简单。运行项目,现在可以将椅子模型放置在平面上。使用进度指示器让用户知道是否检测到了平面这是使用ARKit将3D对象模型添加到水平面的基本部分和SceneKit。尝试使用其他手势添加旋转,移动,放大和缩小。 参考文献: ARKit教程:了解和实现3D对象 具有出色的视觉元素可以为您的应用赋予独特的个性。 在本教程中,我们将研究3D对象… www.appcoda.com ARKit:将3D对象添加到场景中 在第一部分和第二部分中,我们介绍了如何开始使用ARKit,以及如何检测您周围的平面。 有什么好处… arvindravi.com
新的伟大而轰动的应用程序Pokemon Go完美地重新定义了我们的社区,因为完全陌生的人联手追踪并捕获了虚构的怪物! Pokemon Go是否能解决旧时代冒险方式与新一代数字设备缺乏活动之间的巨大鸿沟? 我们认为可能确实如此。 不可否认,Niantic制作的《 Pokemon Go》已经在一夜之间取得了成功。 在短短几天内,它为Nintendo的市值增加了90亿美元 ,几乎超过了日常活跃用户中最受欢迎的Twitter,这不是很有趣吗? 似乎每个人都无话可说。 口袋妖怪围棋突然间像飓风一样进入我们的生活,无论是对于粉丝还是反对者。 但是,完成诸如Pokemon Go之类的大型项目需要极高的预算 。 在制作应用程序之前要牢记的重要一点是绝对知道其实际成本。 如果您需要增强现实应用程序的最佳报价,请务必注意,专门从事此技术领域的团队很少,因此您必须非常小心为项目雇用的人员。 神奇宝贝Go吸引了众多观众,其中之一就是其对增强现实(AR)和地理位置(GPS)的熟练使用。 《PokémonGo》从字面上将原始游戏的想法变为现实; 您必须继续寻找虚拟的神奇宝贝。 通过使用增强现实,Pokemon Go通过将所有真心粉丝变成Pokemon培训师,确实设法使这个世界栩栩如生! 从表面上看,游戏应用程序的开发与正常的移动应用程序开发完全不同,并且需要考虑许多细节和细微差别。 首先,最好弄清楚PokémonGo手机游戏的区别是什么; 创意,独特的方法,技术,游戏引擎和位置意识。 在创建诸如PokémonGo之类的移动应用程序时,应注意所有这些。 如何开发自己的Pokemon Go-像App 估计:神奇宝贝Go-like应用开发费用 正如我们之前强调的那样,制作好的增强现实应用程序既不容易也不便宜。 专门从事增强现实技术的专业人员并不多,可能是因为正确开发此类应用程序需要花费大量时间和金钱。 您将意识到此项目非常昂贵且耗时。 尽管如此,创建一个不太复杂但又不那么令人兴奋的应用程序可能是一个不错的选择。 无论如何,您永远都不知道为什么一个或另一个应用程序会迅速流行起来,因此,如果您有一个好主意,请立即将其变为现实。 因此,让我们快速总结上述所有内容,找出可能的技巧,以及创建PokémonGo移动应用程序的低端模拟所需的总金额。 增强现实 以《PokémonGo》为例,该公司通过Ingress自行开发了这项技术,这是一项非常漫长且昂贵的工作。 但是,根据您自己的情况,可以使用像Microsoft RA或Unity这样已经开发的技术。 对于出色的增强现实工作,最简单的Unity驱动游戏肯定会花费至少50,000美元。 设计 在有效地设计应用程序时,还必须重复花费大量的精力和金钱来开发应用程序。 尽管设计可以忽略不计,但如果我们希望获得良好的结果以免破坏数字等,开发人员必须在相同的时间范围内进行开发,并且预算至少为50,000美元。 同样,您可以设计更简单的产品,成本最高可达40,000美元。 不要忘记! 这些费用将全部包括游戏设计(但是,不要指望精美的图形)和质量保证。 应用程式内购买,位置识别和增强现实集成等所有其他功能将总计增加您的费用。 后端 这是《 Pokemon Go》实际上在欧洲面临的主要问题之一,其原因是它被迫推迟了发布时间,而后端问题是: 设计,配置文件,地理位置,交互等。这是开发此类应用程序的基本组成部分,如果要使其完全腾飞而没有任何障碍,必须至少投资50,000美元。 应用商店优化与营销策略 开发像PokémonGo这样的应用程序的旅程并没有就此结束。 成功开发该应用程序之后,现在您需要使其广为人知,吸引用户并同时通过其获利。 […]
反思是我们日常环境的重要组成部分。 自然,对于现实的增强现实体验,虚拟对象也应该包含它。 使用ARKit 2.0,开发人员可以使用自动生成的环境纹理进行逼真的反射。 “在3D资产渲染中,环境纹理是基于图像的照明算法的基础,在该算法中,表面可以真实地反射来自周围环境的光。 ARKit可以在AR会话期间使用相机图像生成环境纹理,从而使SceneKit或自定义渲染引擎能够为您的AR体验中的虚拟对象提供逼真的基于图像的照明。” -Apple文件 。 环境纹理以立方体贴图的形式收集场景信息; 以后将该纹理用作反射探针。 因为在现实的用例中不可能有一个完整的多维数据集贴图(基本上,要完成多维数据集贴图,用户必须完成360度全景图),所以ARKit通过机器学习来构建多维数据集贴图纹理的缺失部分。 让我们看一下反射对象的一个小演示。 如您所见,该球体反映了放置在桌子上的现实世界中的物体,在我看来,它最终真棒🤩 对于此演示,我创建了一个球体和一个反射材料。 金属性和粗糙度是任何基于物理的渲染材料的两个基本成分。 您可以查看本文以获取有关SceneKit中PBR照明的更多信息。 要为AR会话启用环境纹理贴图生成,我们要做的就是设置ARSession配置的environmentTexturing属性: 就是关于ARKit 2.0中的环境纹理和反射。 您可以找到前面显示的反射球体的源代码。 希望您从这篇小文章中学到新知识!
保存并加载ARKit世界地图数据,以允许用户返回相同现实环境中的以前的AR体验。 本教程要求您对ARKit有基本的了解。 如果您不熟悉ARKit,建议您阅读 AppCoda 和 RayWenderlich的 这些教程 。 iOS 12上的ARKit 2.0提供了在会话之间持续提供AR体验并可以在以后恢复的可能性。 用户可以在桌子上启动一个AR拼图,然后以相同的状态稍后再使用它,也可以在几天之内解决室内装饰项目而无需重新开始。 通过在此处下载入门项目开始教程。 入门项目具有预构建的UI元素和操作方法,因此我们可以专注于使用ARKit的世界地图持久性的核心元素。 在Xcode 10的帮助下,在运行iOS 12并支持ARKit的iOS设备上构建并运行下载的入门项目。 应提示您允许在应用程序中访问相机,请点按确定。 一次,允许摄像机访问,ARKit借助特征点映射可见区域,点击屏幕上的任意位置以在该点添加球体节点。 因此,现在我们可以借助UITapGestureRecognizer将3D对象添加到真实表面。 现在,让我们跳到教程的主要部分,以保存世界地图。 什么是ARWorldMap? ARWorldMap对象包含ARKit用于在现实世界中定位用户设备的所有空间映射信息的快照。 ARWorldMap对象表示物理世界中的映射空间。 我们可以将ARWorldMap对象存档到Data对象中,并将其保存在设备的本地目录中。 如果要加载地图,请进入设备的本地目录,在该目录中保存了世界地图Data对象以将其取消存档。 您可能已经在入门项目中注意到,直到完全映射可见区域后,才启用保存按钮。 ARKit提供了一个worldMappingStatus值,该值指示当前是否是捕获世界地图的好时机(或者最好等到ARKit绘制更多的本地环境时再捕获)。 我们使用worldMappingStatus提供视觉反馈,并选择何时使saveButton可用。 首先,我们首先声明一个URL类型的变量,该变量为我们提供了用于写入和读取世界地图数据的文档目录路径。 将属性添加到ViewController类: 现在,将以下代码复制到func saveButtonAction(_ sender: Any)方法中。 这样您的方法看起来像这样: 因此,基本上,当我们点击saveButton ,将调用getCurrentWorldMap(completionHandler:)从正在运行的ARSession捕获地图,然后使用NSKeyedArchiver将其序列化为Data对象并将其写入本地存储。 我们使用.atomic选项进行写入,因为这样可以保证文件是否完全写入您的设备。 现在,将以下代码复制到func loadButtonAction(_ sender: Any)方法中,使其看起来像这样: 在这里,我们检查本地存储中是否存在世界地图文件,如果该文件存在并且可以反序列化为ARWorldMap对象,那么我们告诉ARWorldTrackingConfiguration通过使用该地图创建并运行ARWorldTrackingConfiguration来尝试恢复在该世界地图中捕获的会话。作为initialWorldMap 。 然后,ARKit尝试重新定位到新的世界地图-也就是说,将接收到的空间映射信息与它对本地环境的感知进行协调。 如果用户移至他们在上一个会话期间访问过的本地环境区域,则此过程更有可能成功。 现在让我们尝试测试我们构建的应用程序。 在设备上构建并运行该应用程序,然后在绘制区域后,在现实世界中添加一些3D球体,然后点击“ Save按钮以Save地图。 收到“地图已保存”警报后,请点击“ Reset按钮以还原AR世界地图,或者也可以通过从应用程序抽屉中关闭该应用程序来完成。 如果您完全关闭了该应用程序,请重新启动该应用程序,然后点击“ Load ,然后移至保存该应用程序的同一区域。 […]
苹果公司的ARKit不断发展,使开发人员能够比以往更深入地吸引用户。 通过吉尔·斯科特(Jill Scott) 随着各行各业的公司寻求与受众互动的新方式,productOps的我们正在使用增强现实技术,将移动应用程序从信息内容提升为体验内容。 借助ARKit,Apple提供了强大的SDK,可为iPhone构建AR体验。 它允许开发人员使用iPhone相机在3D空间中放置和操纵对象。 该博客快速浏览了ARKit,其引人入胜的功能,令人印象深刻的视觉效果以及广泛适用的工具包。 随着ARKit 2的发布,开发人员可以使用更多功能,包括持久性体验,共享体验,对象检测和跟踪。 我制作了一个快速而肮脏的Pokemon Go样机,以演示将交互功能实现到移动设备中的简便性。 熟悉Swift会有所帮助,但无需任何经验即可继续学习! 什么是AR和ARKit? AR对开发人员意味着什么? 让我们从Wikipedia定义开始: 增强现实 ( AR )是在现实世界环境中的互动体验,其中驻留在现实世界中的对象被计算机生成的感知信息“增强”。 您可能已经熟悉了流行的AR应用程序Pokemon Go! 您举起手机的摄像头,可以在屏幕上看到周围的环境,但是添加了一点点小动物就可以“捕捉”。 稍后,我们将返回此示例,作为我们的AR教程的基础。 AR可以分为两种类型的体验: 建设性和破坏性 。 前者为环境添加了元素,而后者则将其带走。 作为一个基本示例,想象一个室内设计应用程序。 富有建设性的AR体验将使您看到您的空间中新沙发的外观,而破坏性的体验将使您看到没有旧的大学craiglist沙发的空间。 我们为什么要关心移动AR? 重点是什么? 为什么要为移动用户集成AR体验? 吸引人。 它以许多其他应用程序功能无法实现的方式集成到用户的生活中。 用户在一个新的层次上与产品或想法进行交互,并查看其如何适应他们周围的世界。 它是先进的。 尽管集成起来相对简单,但结果在技术上令人瞩目。 有帮助 请参阅《汤姆指南》的这篇文章,以了解如何使用AR来创建从学习语言到探索博物馆再到选择化妆的真正有用的工具。 我们的应用 对于一个教程,我们将创建我亲切地称为“ Janky Pokemon”的东西。 这是Pokemon Go类应用的快速又肮脏的娱乐。 它不会支持应用程序商店,但是它将演示建立基本的AR体验是多么简单。 我们将从小处着手。 让我们设置项目并在屏幕上显示一个对象。 项目设置:第一步 首先创建一个情节提要,然后将一个AR场景视图添加到视图控制器中: 现在创建一个新的视图控制器,添加导入,遵循ARKit委托协议,并创建一个连接到场景视图的IBOutlet: 在viewDidLoad中设置场景视图并在viewWillAppear中运行它: 如果我们离开视图,我们想暂停会话: 现在让我们创建一个函数来向环境添加一个简单的盒子: 现在,只需在viewDidLoad中调用该函数并运行即可。 […]
我喜欢Unity,并且绝对喜欢通过Vuforia集成构建AR体验。 但是最近,在尝试部署到新近更新的iPhone进行测试时,我遇到了一个问题。 当我打开我的应用程序时,出现了Unity启动屏幕,并且控制台清楚地表明一切都按预期运行,但是屏幕全黑! 现在,有如此多的应用程序和平台协同工作,以将Unity项目构建和部署到您选择的平台上-留下了很多潜在的兼容性元凶。 主要版本冲突可能是您的OS,Unity,X-Code与要部署到的平台的OS之间的任何组合。 我将讨论我的特定问题以及解决该问题所采取的步骤。 问题 如前所述,由于某些原因,Vuforia ARCamera组件未拿起设备上的摄像头,导致整个屏幕变黑。 我在线检查了已知的兼容性问题,发现X-Code 9.3和iOS 11.3引起了该问题。 但是,这还不是我的祸患。 由于黑屏错误 ,我无法使用9.3进行部署,并且无法回滚到X-Code 9.2,因为它根本不会为11.3编译! 随之而来的是面对技术Catch 22时经常出现的恐惧和厌恶感。我喜欢称其为tisswtfw或: 这太蠢了,该死!! 为什么?! 但是我们是开发人员,我们继续前进。 因此,当我茫然地凝视着屏幕时,让愤怒和困惑迷惑了我几分钟,然后我回到寻找问题的答案的位置。 解决方案 经过艰苦的挖掘工作以找到正确的解决方案之后,当您最终找到它时,您会感觉可以亲吻作者。 但是由于他可能不会喜欢来自陌生人的这种亲切感,因此应将奇尔顿·韦伯(Chilton Webb)视为我的杰出救星。 密钥隐藏在X-Code 9.3目录的深处,然后需要移植到9.2。 假设您已经在计算机上安装了最新版本的X-Code,则需要转到Apple Developer Portal下载部分(由于OSX应用商店通常很糟糕,所以我建议通常使用此代码),然后找到X-安装代码9.2。 确保您为早期版本命名了不同的名称,以便将其移至应用程序目录时不会覆盖9.3。 然后,当您同时获得两个版本时,您将需要右键单击9.3并选择如何打包内容 。 导航: 目录/开发人员/平台/iPhoneOS.platform/DeviceSupport 找到名为11.3 (15E217)的文件夹并将其复制。 然后,您需要将9.2版本的X-Code打开到同一目录(DeviceSupport),然后粘贴到该文件夹中。 现在,在Unity中,您可以将构建目标版本更改为9.2。 它将成功地构建到iOS 11.3,而不会出现9.3带来的黑屏问题。 辉煌!
苹果的ARKit API使每个iOS开发人员都可以使用令人兴奋的增强现实世界,但是您从哪里开始呢? 与我们一起进行增强现实之旅,构建AR太阳系,并学习如何制作您的第一个ARKit应用程序。 这篇文章来自ARKit的多部分系列,我们讨论AR的设计,构建演示应用程序,探索和测试ARKit的许多功能。 我们之前曾写过关于 为AR应用程序设计3D模型的文章 。 介绍 AR是神奇的应用程序(如神奇宝贝Go,Snapchat的动画表情符号和Instagram的3D贴纸)背后的核心技术。 苹果在2017年WWDC上宣布了ARKit,已经产生了一些令人印象深刻的软件,结合了有趣和实用的应用程序,为每个人提供了一些东西。 我们希望有机会尝试使用它,看看我们可以用它构建什么令人难以置信的东西。 在过去的一年中,Novoda一直在研究ARKit的功能,了解我们可以构建的内容以及该技术的局限性,我们用它来构建内容有很多乐趣,并希望分享一些发现。 他们说,将房屋设置为帽子是测试位置的最佳方法 在本演示中,我们将使用在本系列的设计部分中创建的自定义3D模型。 即使您无法创建自己的自定义模型,也可以使用Apple提供的简单AR多维数据集或从SketchUp或Google的Poly下载模型 首先要了解的是AR如何通过设备相机感知世界:它将AR相机输入转换成由平面,光源,虚拟相机和特征点组成的场景。 ARKit识别场景图像中的显着特征,跟踪这些特征在视频帧中的位置差异,并将该信息与运动感应数据进行比较。 结果是设备位置和运动的高精度模型,该模型还可以分析和理解场景的内容。 如果您想进行更深入的分析,我强烈建议您阅读此页面Apple的About Augmented Reality或在ARKit上观看他们的WWDC 2017演讲。 我还建议您观看WWDC 2018的《了解ARKit跟踪和检测》演讲以及ARKit2视频。 带有平面和光源的模型在Xcode上的外观。 这将被添加到AR场景中 通过此世界跟踪和平面检测,ARKit可以创建特征点 ,ARKit中使用了特征点将模型放置在场景中,并将模型锚定在其“周围”环境中。 如Apple所述: 这些点代表在相机图像中检测到的显着特征。 它们在3D世界坐标空间中的位置被推断为ARKit执行的图像分析的一部分,以便准确跟踪设备的位置,方向和运动。 总而言之,这些点从摄像机的角度松散地与实际对象的轮廓相关。 使用ARView和ARSCNView 为了构建AR应用程序,我们遵循了一系列教程AppCode ARKit简介,带有3D对象的AppCoda ARKit,由示例创建的带有ARKit和MarkDaws AR的Pusher构建AR,以及Apple提供的有关AR类的文档。 由于Apple和其他教程已经介绍了大多数基本设置,因此我们不会在此处发布所有代码,而仅介绍我们在此过程中发现的一些逻辑,问题和解决方案。 与此项目相关的所有源代码以及以下所有与此项目相关的文章都可以在我们的GitHub上找到。 创建ARKit项目时首先要做出的决定是使用标准的单视图应用模板还是Apple提供的AR模板。 我们都尝试过这两种方法,但在简单的应用程序/演示中几乎没有什么区别。 AR模板设置为使用情节ARSCNView ,并具有带有飞机模型的预配置ARSCNView 。 如果您喜欢在编写自己的代码之前先试用工作代码,我们建议您使用AR模板,尤其是它带有一些清晰的解释性注释。 另外,如果您希望控制每段代码,那么从头开始显然更好。 在此演示中,我们使用了模板和情节提要,但是即使您从头开始创建项目,您也应该能够继续进行。 每个AR应用程序都需要一些关键点: 您将需要ARSCNView 。 大多数人将其实例命名为sceneView 。 这是所有AR魔术发生的地方。 您可以将其设置为占据整个屏幕或仅作为UI的一部分。 您需要实现ARSCNViewDelegate协议,该协议包括用于将模型呈现到View中的方法。 […]
应用中的标题卡。 对于HoloLens, ARnold面临的最大挑战之一是无法在场景之间切换。 我们想讲一个故事,故事发生在狗的整个生命过程中,但是当全息图始终出现在您面前时(如果不做俗气的“五年后”的声音,过度)。 我们通过让每个场景淡入和淡出部分解决了HoloLens中的此问题,但从未真正满意。 在适用于iOS的ARnold中,您会注意到,在每个场景之后,我们都剪切了一张标题卡片,其样式类似于经典的儿童读物。 在这些削减中,玩家可以像其他任何非AR应用程序一样放手休息并读取卡。 这也帮助我们解决了移植应用程序时遇到的问题,即iPhone扬声器很少听到旁白旁白。 现在,您可以边听边读旁白。 但是,除了这些差异之外,我们在为HoloLens移植到ARKit进行开发时学到的大多数技术和技巧。 但是,我不一定认为从长远来看移动AR的开发是一个好主意。 当然,在未来几年中,VR / AR行业收入的大部分将流向移动AR开发人员。 但是这里有太多限制,我们已经感觉到我们已经达到了可以在智能手机的相机视图上显示哪些故事的极限。 我认为,从ARKit / ARCore项目中获得的任何知识都不会对下一代基于HMD的AR产生太大影响。 如果您不同意我的意见,请在下面的评论中告诉我-我很乐意就此进行讨论。 适用于iOS的ARnold适用于运行iOS 11的iPhone和iPad。如果您有兴趣撰写有关我们的信息(😍),请点击此处。 感谢FutureTense团队:Chinmay Chinara,Aakash Shanbhag和Kacey Weiniger。 也非常感谢我们的两个新成员,iOS开发专家Suraya Shivji和Jamie Haberman,他们设计了整个应用程序中所有令人惊叹的可爱图形和图像。