ARKit印象

去年秋天,苹果公司通过在iOS 11更新中发布了名为ARKit的框架,回应了围绕增强现实已有一段时间的宣传。 开发人员一直在等待它,因为它很容易实现平易近人的集成摄像头和运动功能以将2D和3D内容添加到设备摄像头实时视图的方式,任何可以开发iOS应用程序的人现在都可以基本上开始开发AR应用程序了。 。 这增加了在AppStore中发现的AR应用程序的数量,这是很容易理解的。

最近,我获得了一个在工作中学习ARKit的机会,并且由于我以前没有3D编程的经验,我很高兴分享一些学习经验的话,以鼓励更多的新手通过演示如何参加3D编程。很简单。


关于生命的(最大)事情是,它往往会每天带给您很多意想不到的东西。 从今年年初开始,我开始在Siili Solutions(一家国际和现代的全方位服务技术公司)工作,该公司以其对员工技能发展的兴趣和支持而闻名。 但是实际上,这对我来说是一个很大的惊喜。 在我对Oulu的办公室和人们变得有点熟悉之后的头几天,我立刻就提供了使用ARKit学习3D编程的可能性。 我很激动。

这些年来,我注意到在学习新事物时,尽可能早地将理论与实践结合起来,可以给我最好的成绩。 有了ARKit,我决定使用相同的方法。 在半小时内,我们与一些同事提出了研究应用程序的想法,我们的站点经理希望我将工具(从新员工开始选择所需的工具)带到2018年。新员工选择工具后,便有可能看到新工作站的外观。 是时候让我包好袖子了。


我通过观看WWDC ’17关于ARKit的演示开始了这项任务,以了解它。 我以前从没看过任何WWDC演示,结果发现它们很有趣。 但是要当心,它们会变得非常昂贵(让我们看看我的新老板在问机票并从芬兰飞往加利福尼亚参加下一次活动时会说些什么)。 无论如何,这些演示文稿也非常有用,这些演示文稿中使用的可下载示例成为我学习中最重要的事情。

由于我们的虚拟工作站应该放置在真实世界中,因此第一件事就是弄清楚如何使应用程序了解真实世界的外观。 我以为,在现实打击我之前,这将是一件神奇的事情。 ARKit没有任何超能力,但是它仍然可以做一些非常酷的事情。

视频中显示,我需要启用平面检测以获取有关物理世界的信息。 顾名思义,目前只能检测平面,换句话说就是可以放置虚拟物品的表面。 在第一个版本中,这些平面只能是水平的,但是在新的Beta版本中它们已经包括了垂直平面。 因此,当打开平面检测功能时,ARKit所做的就是分析来自捕获的每个相机帧的特征点。 然后将这些特征点组合到锚点上,这些锚点用于跟踪设备在现实世界中的位置,方向和运动。


既然该应用程序(和我)已开始了解环境,现在该开始使用虚拟内容了。 我们办公室里有几位3D美术师,所以我寻求帮助来创建3D模型,而且我很快就有了用于桌子,电话和键盘的模型,可以开始使用XCode的场景编辑器进行游戏。

在我放弃对模型不必做任何事情的想法之后,事情变得非常简单。 从一开始从3DS Max导出模型时就有一些问题。 由于某种原因,直到从.obj切换到.dae之前,我们无法使粗糙纹理正常工作,但是我不确定是由于文件格式还是其他原因,因为3D行话来自一只耳朵然后从另一个出去 在编辑器中需要做的是,如果文件路径错误,则添加一个闪电环境,以手动设置纹理。

我还注意到,可以与编辑器中的物理机构一起工作,并最终浪费了大量时间来尝试使其工作,但不幸的是,这对我来说是死胡同。 出于某种原因,如果我将它们添加到编辑器或代码中,则它们与物理实体无关。 有时,当在编辑器中设置它时,根本没有包含该主体,有时,该形状不是应该的形状。 放置项目时具有此功能会很不错,因此,如果您知道如何使它工作(或者您发现我们的模型有问题),请告诉我!

现在我们已经可以使用模型并将其导入XCode,是时候将它们添加到现实世界了。 为此,我需要弄清的第一件事是如何获取要在现实世界中放置物品的地方的3D坐标。 通过遍历示例代码,我发现了有关命中测试的信息。 将虚拟平面添加到场景中之后,将在其上启用点击测试,以便我们可以使用设备屏幕上的2D坐标来获取添加平面上的对应3D坐标。 事实证明,命中测试对于从场景中查找已添加的虚拟内容也非常有用,这在进行交互时是必需的。

最后,是时候弄清楚手势是如何工作的,如何在没有物理的情况下将对象放置在桌子上,当然还有如何制作动画了。 事实证明,将物体放在桌子上非常简单,我们只需要在桌子足够靠近时提起物品,然后继续根据我们的手指位置进行命中测试。 但是当涉及到多个对象时,我需要对旋转和移动手势进行一些思考。 有了动画,没有什么特别的,并且在扩展SCNNode类之后,我使它们的工作方式与UIView.animation几乎相同。


除了Pokemon Go和Snapchat的面部过滤器外,还没有其他公认的AR突破,因此,看看新的创新将是一件非常有趣的事情。 该技术具有很大的潜力,所以让我们希望,未来将为我们带来应用,这些应用将以有意义的方式改变我们的日常生活。

该项目的源代码可以在以下位置找到

杰西·西波拉(Jesse Sipola)/ AugmentedOffice

manbetx客户端打不开企业版

gitlab.siilicloud.com

其他有趣的教育链接:

ARKit简介:iOS增强现实– WWDC 2017 –视频– Apple Developer

ARKit为开发适用于iPhone和iPad的增强现实(AR)应用程序提供了一个前沿平台。 被介绍…

developer.apple.com

在增强现实中处理3D交互和UI控件

增强现实(AR)为用户提供了与应用程序中的真实和虚拟3D内容进行交互的新方法。 然而…

developer.apple.com

markdaws / arkit-by-example

arkit-by-example – Apple ARKit示例应用程序

github.com

Interesting Posts