ARKit,SceneKit和如何控制世界

在本系列的第1部分中,我们经历了一个工作流程,在该工作流程中,我们处理了3D模型,使用Xcode创建了AR项目,开始了AR会话并将模型放入了增强场景。

在本文中,我们将开始使用各种SceneKit方法将模型付诸实践,并开始与我们世界中的对象进行交互。

可以在https://github.com/AbovegroundDan/ARTutorial_Part2上找到此文章的项目。

SceneKit提供了一组可应用于节点的操作。 这些动作可用于设置运动,旋转,缩放和其他节点属性的动画。 可以将它们分组以同时运行,按顺序依次运行,然后重复或颠倒。 完整列表可以在https://developer.apple.com/documentation/scenekit/scnaction中找到

我们将继续修改当前项目,并开始向我们的对象添加一些操作。 让我们从向球体添加旋转开始。

HoverScene中的addSphere方法之后,添加以下方法:

让我们在球体上添加一些麻烦。 让我们也将其上下浮动。 我们将添加一个悬停动作,一个悬停动作,对这两个动作进行排序,然后将它们与我们现有的旋转动作组合在一起。 这是addAnimation方法的外观:

让我们为场景添加一些交互性。 让我们设定一个目标来开始场景,方法是让用户将球体放置在世界上,然后点按以激活它们。 由于我们的代码变得更加复杂,是时候开始抽象化处理场景对象的方式了。 在我们的项目中创建一个名为“对象”的新组。 在此文件夹中,我们将创建一个新的Swift文件,名为SceneObject.swift。

我们将创建一个派生自SCNNode的基类SceneObject。

我们一直在使用SceneKit做很多事情,但是仅了解ARKit可以做的一些事情。 作为快速了解更多ARKit功能的先导,让我们通过使球体“注视”相机为场景增添一点乐趣。 我们已经钩住了渲染器的updateAtTime方法,并且那里也有对相机的引用。 因此,让我们开始向Sphere类添加一个方法,以使其朝着特定方向发展。 球的“眼睛”已经面向负Z,这是对象的向前方向。 我们要做的是创建一个方法,该方法采用一个向量来标记我们的“眼睛”将要面对的空间中的一点。

请继续关注以获取更多ARKit乐趣!

AbovegroundDan / ARTutorial_Part2

通过在GitHub上创建一个帐户来为ARTutorial_Part2开发做出贡献。

github.com