Tag: arkit

使用ARKit和Swift创建交互式Domino游戏

在下面的教程中,我将向您展示如何使用Swift和ARKit制作有趣的Domino游戏。 我们将我们的项目命名为ARDominoes ,选择Swift作为语言,选择SceneKit作为Content Technology。 我们选择的增强现实应用模板带有一些预先编写的代码,这些代码可以为我们设置场景,并且几乎可以使用。 我们只需要更改一行代码。 请注意,本教程的所有代码都将在ViewController类中编写。 在viewDidLoad ,需要更改的行改为let scene = SCNScene() let scene = SCNScene(named: “art.scnassets/ship.scn”)! 因为我们只想要一个空的场景而不是太空飞船! 我们要做的第一件事是添加plane detection 到我们的场景。 简单地说,“平面检测”是在现实世界中找到任何水平(或垂直)平面。 首先,让我们创建一个空字典,以便保留对ARKit检测到的平面的引用。 将以下行添加到类的顶部: 好吧,命中测试正在起作用,但是现在我们遇到了一个新问题:多米诺骨牌!!! (不要担心多米诺骨牌都面对相同的方向,我们稍后会解决)。 当用户在屏幕上移动手指时,将调用平移手势。 由于这是连续运动,因此该方法每秒被调用多次。 我们需要找出一种在每个多米诺骨牌之间留一些距离的方法。 为此,我们必须保存先前放置的多米诺骨牌的位置,然后计算其与命中测试当前位置的距离。 如果该距离大于或等于某个最小距离,则将放置新的多米诺骨牌,否则,我们将退出该函数并重复该过程,直到达到最小距离为止。 创建一个新变量并将其添加到类的顶部。 这将存储我们最近放置的多米诺骨牌的位置: 由于首次创建多米诺时没有旋转值,因此它们都面向相同的方向。 为了弄清楚每个多米诺骨牌应该面对的方向,我们必须做一些数学运算。 从上图可以看到,我们的当前状况类似于左图,每个多米诺骨牌朝向相同的方向。 我们希望使其看起来像右侧的图,以便正确放置每个放置的新多米诺骨牌。 为此,我们必须计算先前的多米诺骨牌位置和当前位置之间的角度,并相应地旋转新的多米诺骨牌。 我们可以使用arcTan公式获得两个多米诺骨牌之间的角度。 此公式计算相对于轴(在本例中为X轴)的两点之间的角度。 将以下函数添加到您的类中: 现在,我们的多米诺骨牌旋转得很好。 现在我们已经很好地设置了多米诺骨牌,是时候让它们变得互动了。 SceneKit物理引擎实际上非常易于使用。 您只需要让SceneKit知道要对物理应用哪些对象,然后SceneKit就可以完成其余工作。 在我们的案例中,我们想告诉SceneKit我们的多米诺骨牌应该彼此碰撞并且与地板碰撞。 为此,我们必须在节点上添加所谓的“ 物理体 ”。 在节点上添加物理实体会告诉SceneKit在物理模拟中包括该节点。 要在SceneKit中创建物理物体,我们必须为其指定type和shape 。 有三种不同类型的物理实体: 静态 :不受力或碰撞影响且无法移动的物理物体。 […]

在2018年构建增强现实应用程序:技术不成熟

我使用ARKit 2.0和Swift开发适用于iOS的AR应用程序。 在 第1部分中, 我探讨了在2018年开发增强现实应用程序的实际问题。这就是我对即将到来的移动AR未来的想法。 上周,我讨论了2018年开发,测试和使用基于iOS和ARKit构建的AR应用程序的一些日常基本问题。这些问题范围很广(您不能坐下来测试AR应用程序,也不能在黑暗中,也没有对几何体的某种记忆)(对于共享的AR体验进行测试是复杂而笨拙的)。 这些实际问题可能会在产品生命周期的不同阶段导致重大问题,但其中许多问题与支持该早期版本的ARKit和iOS上的移动增强现实的技术有着内在的联系。 当Apple在1-5年内向支持ARKit的下一代传感器和基础技术转移时,其中的一些故障(无法在弱光下工作以及必须扫描区域进行必要的移动)可能会消失。 但是我遇到了更多有趣的问题,这些问题说明了当前状态下增强现实开发的粗糙边缘。 这些缺点并不是底层硬件的故障,而是iOS AR工具和开发的新影响。 我预计这些缺陷和差距将在未来1-2年内由Apple通过软件和ARKit 3.0 / 4.0的发布或由第三方工具,库和产品解决: 低保真持久性 一般来说,ARKit 1.0的明显遗漏之一是,一旦关闭应用程序,放置,扫描或创建的所有AR对象都将消失。 AR应用程序只是一个会话事务。 ARKit 2.0引入了Persistent AR Experiences,这意味着您现在可以保存花费十分钟创建的客厅的新布局和设计,并在下个月重新打开该确切的设计。 持久性似乎应该是桌面赌注,并且一开始就存在,这样人们就不会失去进度或位置,但这是我们使用移动AR软件的早期程度的另一个指标。 但是,即使在持久性方面使用Apple的第一个刺探,也有许多不足之处。 ARKit的核心功能是扫描您周围的世界并找到飞机。 这些平面可以是地面,桌子,台面或墙壁。 一旦识别出这些平面,ARKit便可以将3D对象放置在这些平面上或3D空间中,或AR应用程序功能所需要的任何其他功能。 然后,理想情况下,持久性将确切地记住这些平面的位置,因此当您在餐桌中间放置一个虚拟花瓶时,关闭该应用程序,然后重新打开该应用程序,该花瓶正好位于您离开的位置。 花朵没有漂浮在桌子上方6英寸处,并且距离桌子中心的偏移量也不是3英寸:这正是您将其留在了那里。 实际上这还没有发生。 我已经发布了一些演示代码,这些代码可以可视化检测到的平面,然后允许您在同一会话中重新加载场景,以比较持久性的准确性,也可以在此处演示该演示的视频演示。 该应用程序只是一个技术演示,旨在突出显示一般的平面检测和内置持久性的准确性(或缺乏准确性)。 虽然持久性精度对于在建筑物内进行寻径来说可能不错(例如,“遵循杂货店地板上的AR箭头以查找Mountain Dew”或“遵循路径以在活动空间中找到特定的会议室”),测试它不够精确,无法持久保存我家的3D表示。 扫描并重新加载房间后,有时甚至只是绕圈走了几圈而没有重新加载,有时虚拟墙将被脚踩掉,或者虚拟架子会从实际架子的实际位置偏移6英寸。 这不是在应用程序中使用持久性的决定性因素,但在设计产品及其功能时需要考虑到这一重大限制。 我怀疑在接下来的一两年内,持久性准确性将大大提高。 我遇到了一些初创公司,它们使用在当前硬件上运行的自定义软件来扫描和持久保存AR对象,其保真度要比ARKit高得多,因此Apple和Google在改进软件本身或招募有能力的人方面都不会落后。 能够准确地将对象或位置准确地扫描并重新加载到最接近的英寸(然后是毫米)的能力,并不会给普通公众留下深刻的印象,但是基于这些进步而构建的应用程序,产品和公司却可以。 缺乏标准AR UI元素 构建只存在于您的手机上且无需与服务器对话的应用程序的准系统框架就很容易,它无需从社交网络或其他任何地方获取图片。 如果您想创建2019年全球最大的独立计时器应用程序或非云同步日记应用程序,则可以立即开始学习iOS开发并在下周准备原型。 制作简单应用程序如此容易的一个重要原因是,Apple提供了基本的UI构建块来拼凑您的产品。 Apple提供了基础,因此您可以在1秒钟内向应用程序添加按钮。 或将以有组织的方式显示一些数据的表。 它们还提供了一些模块,可轻松实现从相机胶卷中检索图片,在地图上发现自己或在社交网络中发布内容的功能。 并非所有这些构建块都在2008年App Store的第一天就出现了-随着移动平台的成熟,这些年来已经添加了这些构建块。 虽然ARKit提供了快速访问惊人技术的途径,但是开发人员现在只能使用的是该基本技术,而在此之上几乎没有构建块。 苹果公司的人机界面指南针对所有不同类型的UI / UX及其相应的“执行”和“不执行”提供了76页的指南。 增强现实是这些指南中的单个页面。 […]

黑色星期五促销! 所有课程只需$ 10

大家好, 在这个美好的假期里,你过得怎么样? 11月和12月是我最喜欢的两个月。 家人和朋友聚集在篝火旁,谈论他们在观看有关Udemy的精彩课程后学到的知识。 好! 也许那只是我的家人。 我真的希望您在假期过得愉快。 为了庆祝感恩节假期,我将开展为期一周的黑色星期五促销活动。 您只要花10美元 ,就可以得到我所有的课程。 那是正常价格的95% 。 查看以下精彩课程列表: 从零开始成为Swift开发人员 掌握适用于iOS的ARKit(在门户网站上添加了新部分) 精通iOS版Core ML 使用Java Spring Boot掌握微服务 使用蒸气2的服务器端Swift 使用Kitura掌握服务器端Swift iOS精益控制器的完整指南 使用Chrome开发者工具掌握Web和移动调试 再次感谢您支持我的课程,并与您的家人和朋友度过了愉快的时光, 穆罕默德·阿扎姆(Mohammad Azam)

使用ARKit进行图像跟踪

在其他众多功能中,ARKit 2.0引入了图像跟踪功能。 当您拥有动态图像锚点时,它非常适合用例,并且可以在用户体验依赖于运动(例如增强型游戏)或艺术和时尚等应用中使用。 在这篇小文章中,我将从开发人员的角度概述ARKit中的图像跟踪,并提供一些示例代码。 要启用图像跟踪,您需要将ARSesion配置设置为ARImageTrackingConfiguration 。 ARImageTrackingConfiguration是为独立图像跟踪创建的新型会话配置。 如果您在AR应用程序中仅使用图像检测功能,则更可取。 在下面的示例中,我将cat gif放置在跟踪图像的顶部。 如您所见,图像位置更新非常流畅。 还需要向会话配置中添加一组ARReferenceImage并运行它。 Creating ARImageTrackingConfiguration ARWorldConfiguration仍然不会太频繁地更新图像位置,这意味着您不能将图像跟踪与其他ARKit功能(如平面检测)一起使用。 通过使用线性插值和ARWorldConfiguration位置更新来重新创建图像运动的坐标,可以伪造图像跟踪。 实际上,我对此主题有大量帖子,请查看。 ARKit 2.0还支持多图像跟踪。 目前,您最多可以跟踪2张图片,但是在以后的版本中,数量肯定会增加。 configuration.maximumNumberOfTrackedImages = 2 这是对ARKit 2.0图像跟踪可能性的快速回顾。 现在,它真的很容易实现,并且就像一个魅力。 🖖

是! 我正在写关于ARKit的书!

更新 :这本书现在可用! 在这里获取! 那是在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

在2018年构建增强现实应用程序:新生的生态系统

我使用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

ARKit 2.0中的逼真的反射和环境纹理

反思是我们日常环境的重要组成部分。 自然,对于现实的增强现实体验,虚拟对象也应该包含它。 使用ARKit 2.0,开发人员可以使用自动生成的环境纹理进行逼真的反射。 “在3D资产渲染中,环境纹理是基于图像的照明算法的基础,在该算法中,表面可以真实地反射来自周围环境的光。 ARKit可以在AR会话期间使用相机图像生成环境纹理,从而使SceneKit或自定义渲染引擎能够为您的AR体验中的虚拟对象提供逼真的基于图像的照明。” -Apple文件 。 环境纹理以立方体贴图的形式收集场景信息; 以后将该纹理用作反射探针。 因为在现实的用例中不可能有一个完整的多维数据集贴图(基本上,要完成多维数据集贴图,用户必须完成360度全景图),所以ARKit通过机器学习来构建多维数据集贴图纹理的缺失部分。 让我们看一下反射对象的一个​​小演示。 如您所见,该球体反映了放置在桌子上的现实世界中的物体,在我看来,它最终真棒🤩 对于此演示,我创建了一个球体和一个反射材料。 金属性和粗糙度是任何基于物理的渲染材料的两个基本成分。 您可以查看本文以获取有关SceneKit中PBR照明的更多信息。 要为AR会话启用环境纹理贴图生成,我们要做的就是设置ARSession配置的environmentTexturing属性: 就是关于ARKit 2.0中的环境纹理和反射。 您可以找到前面显示的反射球体的源代码。 希望您从这篇小文章中学到新知识!

如何保存和加载AR世界地图数据以创建持久的AR体验

保存并加载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 2.0重新整合对象

即时消息,2.0版的合作伙伴,侦查对象的合作伙伴,大批人。 类似的形式,个人身份,形象研究。 普通居民的市长差事入门 。 苹果,ARKit扫描仪,原型和多用途笔记本,ARKit扫描仪以及其他产品。 Lopodéisver en el siguiente视频。 与普通的希西莫斯骗局相似。 Tenemos queañadirlo siguiente a laconfiguración。 configuration.detectionObjects = ARReferenceObject.referenceObjects(inGroupNamed:“ AR资源”,包:无)! 是的,是由单身执行者,是从地下工程公司到新的建筑商。 是的,没有罪名的罪犯,是因犯罪而实施的罪名,因犯罪嫌疑人被解雇。 func renderer(_ renderer:SCNSceneRenderer,didAdd节点:SCNNode,锚点:ARAnchor){如果让objectAnchor =锚点为? ARObjectAnchor {debugPrint(“ DETECTADO-> \(objectAnchor.name ??”“)”)}} Y listo,发现和处理Podemosañadiren el node lo que queramos y necesitemos。 Tenemos todos los datos de ese objeto,desde su punto Central,med idas e incluso los“ feature points” […]