Tag: arkit

你好ARKit

在进入增强现实的奇妙世界之前,让我们确保已具备所有先决条件。 Xcode 9(测试版或更高版本) :ARKit在Xcode 9(测试版)或更高版本上可用。 因此,请确保下载最新版本的Xcode 9。 物理设备 :您将需要一个物理设备来测试您的ARKit应用程序。 建议测试设备至少包含A9处理器,这意味着iPhone 6S或更高版本或最新的iPad。 iOS 11(测试版或更高版本) :由于ARKit是iOS 11 SDK的一部分,因此要求您的设备运行iOS 11 beta或更高版本。 根据您的Internet连接,下载和安装所有内容可能需要10分钟到45天的时间。 我在开玩笑,最多30天🙂 现在,您已经下载并安装了所有必备软件,并准备好尝试使用iOS版ARKit构建增强现实应用程序。 在本章的最后,您将了解实现ARKit应用程序的基本概念。 启动Xcode 9并创建一个新项目。 您会注意到Xcode 9带有一个专门为ARKit应用程序设计的新项目模板, 如图1所示。 图1:Xcode 9中的增强现实项目模板 选择“ 增强现实应用程序 ”模板后,按“ 下一步 ”按钮。 这将带您到项目选项屏幕,该屏幕允许您配置项目的不同属性。 对我们而言,最重要的选择是“ Content Technology ”,它允许开发人员使用SpriteKit,SceneKit或Metal框架创建ARKit应用程序。 图2:对多种内容技术的支持 确保选择SceneKit,因为本书中的大多数示例都使用SceneKit作为内容技术。 接下来,为您的项目指定一个位置,最后按“创建”按钮使ARKit项目生效。 您只有片刻的时间见证了增强现实的魔力。 运行该应用程序,并确保您的物理iPhone已插入并已连接。 图3显示了运行中的ARKit默认应用程序。 您的花园可能没有我的花园绿🙂 图3:运行中的ARKit默认应用 休斯顿! 我们有ARKit! 本章是我的《 iOS开发者的ARKit》一书的一部分。 立即获取该书,并开始构建出色的增强现实应用程序。 祝贺您运行了第一个ARKit应用程序。 在下一节中,我们将了解制作默认ARKit项目所涉及的代码。 了解项目: […]

ARKit简介—视觉集成

该系列的这一部分将关于将Vision(Apple的计算机视觉和机器学习框架)与ARKit一起使用。 影像追踪 世界地图 物体扫描 视觉整合 金属和反射性表面(即将推出) 借助ARKit,您可以将Vision与AR实时集成,以产生无缝有效的用户体验。 什么是视觉? 视觉本身就是一个计算机视觉框架,该框架使用ML模型根据预先训练的数据对手机的摄像头进行分类。 例如,您可以添加一堆不同电气组件(如电动机或电阻器)的照片,给它们MLImageClassifier标签,然后训练MLImageClassifier模型来识别那些组件。 我今天希望教给您的是如何将Vision与AR结合在一起,以便您可以使用ARKit实时提供有关Vision发现的发现和结果的反馈。 例如,假设我想制作一个应用程序来标识我的吐司面包的来源( 例如WWDC )。 我将能够制作经过训练的ML模型,以识别不同的吐司,并通过Vision进行设置,然后在匹配后使用AR在Toast顶部放置一个Toast图标: 我们项目中需要做的第一件事是创建MLImageClassifier 。 创建图像分类器: 拍摄不同项目的照片。 这些可以是不同类型的工具,不同类型的水果,甚至不同品牌的流行音乐-无论您想要什么。 将同一类型的项目分组到一个文件夹中,该文件夹的名称为事物本身。 例如,如果您要比较不同类型的水果(例如:香蕉和苹果),则可以将香蕉的所有照片放入名为“ Banana”的文件夹中,并将苹果的所有照片放入名为“ Apple”的文件夹中 打开Xcode Playrounds并输入以下代码: 导入 CreateMLUI 让 builder = MLImageClassifierBuilder() builder.showInLiveView() 4.打开实时视图并运行游乐场。 您应该看到以下内容: 5.将所有文件夹放在一个大文件夹中,然后将该文件夹放到框中,然后它将训练模型。 6.测试您是否有测试集。 如果有更多图像(也已排序),则可以测试模型的准确性。 7.将模型导出为.mlmodel 接下来需要做的是使用ML模型设置Vision框架。 您将需要创建一个分类请求对象。 输入以下代码,在第一行中用模型名称替换“ Model()”,然后是“()”: 私人 惰性 var分类请求:VNCoreMLRequest = { do { let model = try VNCoreMLModel […]

ARKit怎么了? #9 —手势控制,USDZ生成器,电影预览IRL

这是有关ARKit的每周新闻,您可以在 WhatsUpARKit.com上 订阅 最近,我遇到了几个开发人员,他们致力于以下令人兴奋的AR应用程序。 与ARKit相关的初创公司不断向开发者发布Beta版邀请。 我们还将很快看到在带有iOS 12的AppStore上发布的新ARKit 2.0应用程序。 享受第九期 奥斯卡@osfalmer twitter.com 在Apple工作的David Lui(@lDavixl)表示,您现在可以通过嵌入usdz文件轻松地将AR内容集成到Apple文章中! 这是有关此文件的Apple文档。 manomotion.com ManoMotion是一家初创公司,致力于使用非常精确的手部跟踪来控制AR体验,包括ARKit。 他们最近向开发人员开放了Beta版,您可以在其网站上订阅她。 您还应该查看由日本开发人员@lileaLab制作的带有此链接的演示。 twitter.com Warren Moore @warrenm发现,ARKit Quick Look Gallery现在包含一个链接,用于下载包含独立USD(v18.09)库和驱动它们的Python脚本的软件包。 ZIP文件位于https://developer.apple.com/arkit/gallery/的底部 twitter.com Jacobo Koenig(@jacobokoenig)创建了一个概念,可以直接在剧院上映电影预览。 twitter.com Alberto Taiuti(@albtaiuti)和Jordan Campbell(@jordanNZ_AR)正在构建一个应用程序,可让您在当前所在的地图上放置所选的任何3D环境。 酷演示! twitter.com Cabbibo(@Cabbibo)创建了一个与AR和卡片互动的示例。 他/她还对其背后的XR反射做了完整的论述。 同样,您可以查看Cameron Horst的工作。 6天 6D.ai AR Cloud初创公司最近通过SceneKit&Swift支持更新了其Beta版,您可以在其网站6D.ai上进入Beta版。 twitter.com 最近发现了这个非常有趣的概念应用程序,在播放歌曲时可以在您的脸上产生惊人的效果。 这是开发人员的网站kitasenjudesign.com,并提供下载免费应用程序的链接-下载。 玫瑰色 Rosie通过冒险的难题和活跃的游戏向您的孩子介绍机器人技术和编程。 适用于iPhone的有趣且具有教育意义的AR应用程序。 在此处免费下载。 遇到了他们的开发者Florian Maushart @FloMaushart之一,强烈建议也跟随他! twitter.com Daniel(@ […]

AR之旅

作为我在Galvanize课程中的一部分,学生在我们的第3季度项目中面临挑战,要有雄心壮志。 多么雄心勃勃? 不能发布产品是可以接受的,因为经验中最有价值的部分是尝试新事物,先潜水,拥抱学习新概念的过程,而不管结果如何。 考虑到这一点,我将记录我们团队在使用ARKit构建iOS增强现实应用程序方面的进展。 目标是建立一个类似于Jenga的游戏,在该游戏中,用户从AR塔中取出积木,然后将它们堆叠在塔上,直到塔翻倒,可怕地羞辱了最后一步的可怜灵魂。 当天的首要任务 大致了解Swift的语法 熟悉Xcode作为IDE 查找具有类似功能的应用程序的一些示例 今天发生的惊人的事情 我真正地接受了我零经验开始项目的感觉 。 我没有在Swift中工作,也没有进行任何移动应用程序开发,因此尝试全新的东西既令人恐惧,又令人兴奋。 对Swift语法有一个大致了解-我从Swift的伦敦应用程序啤酒厂的Angela Yu那里找到了一个很棒的Udemy课程,其中包括关于ARKit的部分。 在阅读了最初的视频之后,我对这种语言感到更加自在(部分由于在课程中学习Java作为选修课)。

使用ARKit在增强现实中显示视频

首先,我要做的是浏览Pinterest来检索此特定打印件。 接下来,我裁剪了将要检测并覆盖实际视频的图像。 最后,我们将在检测到的图像上播放视频。 现在您已经创建了一个项目,让我们在资产文件夹Assets.xcassets创建一个新的AR资源组。 添加裁剪后的图像(我的图像被命名为black )并为其设置尺寸。 尺寸是我们实际的 在我们打印的照片上裁剪图像尺寸。 根据我的测量,我打印的照片约为14x15cm。 键入宽度0.14米后,Xcode会自动生成高度。 接下来,拖放将用于播放检测到的图像的视频文件。 确保在添加视频时,将其添加到我们的项目目标中。 添加代码 删除ViewController.swift所有代码,并将其替换为上面的代码。 我们在这里所做的是设置AR配置以跟踪图像并设置应用程序应跟踪的图像 。 接下来,我们将使用一种委托方法将视频添加到检测到的图像上。 当要向场景中添加节点时,委托方法会通知我们。 该节点将为空,因此我们可以自定义。 但是在我们输入新代码之前,这将是逻辑流程: 首先检测我们的应用何时在锚中添加了新节点 检查我们的锚点是否匹配ARImageAnchor ,如果匹配,则表示检测到我们的图像 创建一个包含我们的视频文件的视频节点,并将其添加到视频场景中。 调整所有必要的位置 创建一个与检测到的图像具有相同方向和大小的新平面 将我们的视频节点添加到飞机上 创建一个包含该平面的新节点 将此新节点添加为子节点 这就是我们最终的结果。 让我们运行该应用程序并查看结果! 真好! 我们的AR应用程序正在按预期运行! 但是,有一个小问题。 原始的《 Daily Prophet新闻具有循环效果,因此让我们将视频循环显示在图像上。 循环播放视频 编辑我们的代码如上。 我们已更改的是: 我们使用AVPlayer播放项目 使用AVPlayer初始化我们的video node 添加观察者,以便当播放器完成其当前项目时,重置视频并再次播放 继续运行该应用程序! 最终输出应该与我们要实现的输出非常相似!

AR之旅-第2部分

因此,在经过非常紧张的前两个晚上之后,老实说,我对我们参与该项目的机会感觉好多了。 头一天晚上都花大量时间研究Swift,以使用语法,数据结构和控制流。 鉴于我在选修期间从事Java和Go的工作,因此转向强类型和面向对象的语言并不是外国的经验,以我的愚见,对于任何有Javascript背景的人来说,这都是相对容易的选择。 第二天晚上和第二天,我们更多地关注我们项目(Jenga游戏的AR版本)-苹果的ARKit。 值得庆幸的是,这里有大量的资源,我目前正在一门Swift通用课程上取得进展,该课程包括ARKit和ML Core以及ARKit专用课程。 今天发生的惊人的事情 构建有效的AR演示应用程序-当前,我们有两个不同的应用程序,它们显示了ARKit的大部分主要功能。 一种是允许您在场景中放置骰子,并根据点击或电话震动来模拟滚动,第二种是测量距离(如上所示)。 尚未完全为Appstore做好准备,但感觉像是要承受很大的负担。 找到了一个与创建的对象进行用户交互的演示-我当前的技术关注点是如何启用移动AR Jenga块所需的手指跟踪。 值得庆幸的是,我遇到了有关Toptal的精彩教程,看起来就像我们所需要的。 它也应该允许我们尝试自己的跟踪,而不必转向Vuforia或ManoMotion。 是在德克萨斯中央食品银行(Central Texas Foodbank)自愿参加的-是的,它与该项目完全无关,但这是一个很好的机会,可以停止思考下周我们需要做的一切,并回馈社区。 对我来说,专注于这个项目同等重要,对我来说一点一点地断开电源并以回馈的方式表示感谢也对我来说同样重要。 下一步是什么 完成关于Udemy的第二个ARKit课程-巩固基本概念并更熟悉API,以至于它不再像看教程那样多,而是更多地利用我们学到的技能 获得用户与创建的对象进行交互的有效演示 玩弄物理学-这是我其他队友的重点,但我仍然想对此有所体会 感谢阅读本文的任何人! 如果您处于与开始进入iOS和Swift或ARKit相似的职位,我将乐于接受任何反馈或意见,并愿意(尝试)回答您可能遇到的任何问题!

玩ARKit SDK

这是关于如何将OpenStreetMap地图视图导出到ARKit的3d模型中的超短教程。 我将尝试使其尽可能简单和快捷地🙂 从https://developer.apple.com/arkit/下载ARKitExample 打开http://www.openstreetmap.org/并导出您感兴趣的区域,如下图所示(请原谅我的波兰语)。 输出文件将具有.osm格式(http://wiki.openstreetmap.org/wiki/OSM_XML)。 值得注意的是,所选区域不能太大(我试图使用几平方公里的区域,并且Blender和iPhone都存在渲染纹理问题,但我会尽力弄清楚并更新本文)。 3.下载OSM2World Java应用程序,该应用程序将.osm文件转换为.obj模型和.obj.mtl纹理文件(http://osm2world.org/download/)。 打开先前导出的.osm文件并导出到.obj 4.下载Blender(https://www.blender.org/download/)并打开.obj文件(obj.mtl将自动导入,不用担心)。 值得一提的是,您可以从模型中移除灯光,因为在SceneKit中添加和管理灯光更加容易。 接下来只是导出(文件->导出)模型,选择Collada格式(.dae),这是SceneKit首选的格式。 5.用新创建的.dae文件替换ARKitExample中的一种模型,然后使用它。 如有任何问题,请随时在Twitter https://twitter.com/tbaranowicz上ping我

ARKit CocoaPod —门户

我相信ARKit开发人员生态系统中目前最大的遗漏是可重用代码。 通常,iOS开发使用了许多令人赞叹的Pod,但还没有专门用于ARKit的Pod。 这是我在这篇文章中将要解释的CocoaPod,请随时报告问题,分叉并做出贡献! maxxfrazer / SceneKit-PortalMask 清理类以在SceneKit中创建一个门户,以在ARKit中使用。 – maxxfrazer / SceneKit-PortalMask github.com 当我在增强现实领域开始我的职业生涯时,我主要使用类似于Vuforia的工具基于标记的AR。 很多客户都希望有一种趋势,而我可以看到这是ARKit中一种趋势。 想法是遮盖跟踪图像本身之外的所有内容,但允许您通过图像所在的孔查看。 这是使用此Pod可以实现的两个简单示例,其中一个仅包含几行代码: 这是一个代码示例,用于创建类似于左侧示例的内容。 仅向Portal馈送physicalSize ,它在对象周围创建掩码。 func renderer(_ renderer:SCNSceneRenderer,didAdd节点:SCNNode,锚点:ARAnchor){ 如果让imageAnchor =锚定为? ARImageAnchor { 让nodeRotated = SCNNode() // ARImageAnchors上的节点需要旋转-90度 nodeRotated.eulerAngles.x = -.pi / 2让imageSize = imageAnchor.referenceImage.physicalSize //接下来的两行添加门户 让门户= PortalMask(frameSize:imageSize) nodeRotated.addChildNode(portal) //接下来的5行会在图像区域内添加一个多维数据集 让width = imageAnchor.referenceImage.physicalSize.width let boxNode = SCNNode(几何:SCNBox(宽度:宽度,高度:宽度,长度:宽度,倒角半径:0)) //将方框推到标记后面 boxNode.position.z = -boxNode.width nodeRotated.addChildNode(boxNode)node.addChild(nodeRotated) […]

AR @ wehkamp

我在WWDC 2017 作为我个人的背景故事,当时我在VWO 4中,至少可以说我度过了美好的一年。 自从我4岁开始学习以来,学校一直是我生活中的“问题”,而此时,我的“水桶即将溢出”。 我感觉不舒服,从字面上想起每天上学和变得不快乐的事实,我已经厌倦了。 让我前进的一件事是编程。 我于2015年开始进行iOS开发,几个月后发布了我的第一个应用程序,直到今天,我仍然每天都在学习新知识。 WWDC是我一生中最酷的一周之一,遇到了很多新人,他们都和我iOS开发一样感兴趣。 我开始感觉好些,但回到家后,我又回到了以前的“学校疾病”中。 在这一点上,我和父母决定放慢脚步。 我开始更多地待在家里,在那里我可以学习iOS开发并跟随我的热情。 然后,夏天来了,在暑假里,我盛开了,我再次感到高兴,得到了一份假期工作,赚了些钱,总之,一切都很好。 我以良好的希望开始了我的新学年(VWO 5),历时约2天。 两周之内,我在家比在学校多,一个月之内,我再也没有去学校了。 在这段时间里,我们与学校举行了多次关于“现在做什么”的会议,我再也不能去学校了,但是一直都呆在家里也不好。 长话短说,最后,我问是否可以作为iOS开发人员开始实习来扩展我的知识,而不仅仅是一直坐在家里。 学校对此还可以,我联系了该地区的几家公司。 其中之一就是wehkamp。 大约6个月后,即2017年12月,在几次会议之后,我正式开始在wehkamp担任iOS实习生,每周工作2天。 因为这是我想出的实习生,并且不是我的学业所必需的,所以我没有要完成的任务或要做的任务。 Wehkamp和我有完全的自由决定在那做什么。 由于其他方面的优先考虑而搁置了一段时间的项目是AR。 所以我们决定要做的是,我将开始使用AR来创建所谓的POC(概念证明)。 在wehkamp,我们拥有自己的生活产品系列,因此决定在AR中展示这些产品非常好。 确定了我们想要的东西之后,我就可以开始做/尝试事情了。 从简单地能够检测到表面开始,到从网络动态加载模型并重新映射纹理结束。 因此,让我们进一步深入。 开始时,我们必须弄清楚基本内容。 我有大约3天的ARKit使用经验,而这仅仅是超级基础。 我也几乎没有使用ARKits基础的SceneKit的经验。 因此,对于第一部分,我经常查看Apples文档和示例代码。 这样,我就能获得一个预加载的模型来旋转和移动,这在当时真是太神奇了! 转换次数 因此,对于我们的最终应用程序,我们需要的不仅仅是4个预加载模型,因此我们需要第三方参与为我们创建模型。 效果很好,但是我们遇到了一个问题。 这些文件以DAE文件(数字资产交换)的形式提供,这是一种流行的3d建模格式。 这里的问题是这些文件不适合移动设备,我们不得不将它们转换为SCN文件,SceneKit Node文件,这是Apple的格式,可与移动设备一起使用。 存储 我们的下一个障碍是模型的存储位置。 我们有了模型,现在我们需要将它们存储在某个地方,由于多种原因,将它们全部存储在设备上似乎不是一个好主意,最明显的一个就是存储空间。 因此,我们决定将它们在线存储,并且很好地解决了一个主要问题,我们将如何获取模型并将其显示在电话上? 为了解决这个问题,我们创建了一些功能,可以从服务器下载模型并进行渲染。 这花了一段时间才能弄清楚,但最终我们使它起作用。 然后,下一个问题出现了,或者实际上没有出现,这就是问题所在。 在将模型从DAE转换为SCN文件的过程中,所有纹理文件路径都被弄乱了,因此纹理将一直指向../现在指向我的Mac上的绝对位置。 在手机上渲染模型时,在该位置未找到任何内容,因为好吧,这不是我的Mac,因此该位置不存在。 我希望其他人也有这个问题,所以我可以将粘贴复制到解决方案中并完成。 但是事实并非如此……所以我们最终要做的是编写一个自定义的重映射函数,该函数将每个纹理文件从其怪异的URL映射到设备上的正确URL。 灯光 所以现在我们在房间里有了一个带纹理的3D模型,可以移动它,但是仍然有一些问题。 首先,一切看起来都像是一个充气的,反光的塑料模型。 简而言之,它们很丑! […]

制造业中的ARKit

在今年的RWDevcon上,我探讨了iOS框架的新方面。 本文是我在乔伊·德维拉(Joey DeVilla)关于增强现实(AR)的研讨会上学到的内容的回顾:其背后的历史,框架的简要介绍以及我对制造业中AR的未来的看法。 享受🙂 剧透警报,AR是神奇宝贝Go发明的! 第一个增强现实设备是1968年由Ivan Sutherland发明的。 在Woz组装Apple I电脑之前的3年。 Sutherland是哈佛的计算机科学家,他还率先开发了计算机图形和人机交互。 他与两个哈佛同学一起建造的第一个原型是如此笨重,由于重量巨大,必须将其悬挂在天花板上。 汤姆·考德尔(Tom Caudel,1990年在波音公司)紧随萨瑟兰(Satherland)的脚步。 他着手更换20英尺长的固定板,以使用工人可能会戴在头上的系统组装线束。 不幸的是,由于硬件限制,例如电池大小,处理能力和网络限制,他的系统没有投入生产。 工人四处走动时,跟踪系统的响应能力不足。 迪士尼于2011年在时代广场上使用该技术庆祝了米奇83岁生日。游客可以与角色共舞,并且他们的互动被投影在大屏幕上 当结合这两个系统时,ARKit可以计算深度信息,平面并增强所记录的2D图像中的深度错觉。 这是通过比较多个帧并将其与从设备惯性系统经过的距离相关联来完成的。 这称为立体或立体成像。 图像识别 图像检测大大改善了AR的用例。 它可以用作触发功能的输入机制。 例如,在Perficien Digital Labs的视频中,当检测到相应的站点时,公交车的时间表和路线就会提示给用户。 为了获得最佳结果,最佳实践包括… 图像检测在平面上效果最好。 例如,瓶子上的酒标(非平面图像)以及墙壁上的画都不会被检测到。 需要准确定义源图像的物理尺寸。 该信息用于计算参考图像与设备之间的距离。 捕获的场景需要点亮:fire-emoji:(双关语意)。 不良的照明条件,光泽或反射会干扰或阻止检测。 波音,美国宇航局和博世等公司正在AR上投入大量资金,以提高制造效率并改善对员工的培训。 例如,组装波音747和767喷气式飞机的工人正在使用免提眼镜来获取实时交互式3D接线图。 据报道,生产率提高了40%。 这项名为Project Juggernaut的工作始于2013年,当时一位工程师使用Google Glass的第一生产单元制造了原型。 用例是在没有技术人员输入的情况下实时获取正确的信息。 在工作人员视野中显示的信息减少了将信息与对象关联所需的时间。 德国跨国公司Bosch(全面披露:他也是Poka的投资者)开发了自己的AR框架和应用程序:通用增强现实平台(CAP)。 CAP是一种多功能解决方案,可显示书面信息的视频片段,图片,带有音频片段的安全说明,3D数据,电路图,技术方案。 制造业中AR的这些示例只是对AR,图像识别以及为支持这些新框架而构建的硬件的可能性进行了初步探讨。 有了Google和Apple,它们都在Android和iOS上发布了自己的AR框架,这为希望使用增强现实构建软件的开发人员降低了进入门槛。 在不久的将来,随着增强现实眼镜的商品化,我们将看到这种技术在中小型企业中得到广泛采用。 当被问及“一年之内,您怎么可能完成第一款交互式图形程序,第一款非过程编程语言,第一款面向对象的软件系统?”萨瑟兰回答:“嗯,我不知道这很难吗? ”。 作为软件工程师,我们需要开始进行原型设计,构建,犯错误,再次尝试并查看有效的方法。 我相信这就是大量采用新技术的原因! 参考文献 波音(1990) “增强现实”一词是1990年在波音公司由汤姆·考德尔(Tom Caudell)提出的。 他和他的同事David […]