测试已测试 | ✗ |
语种语言 | SwiftSwift |
许可证 | MIT |
发布上次发布 | 2017年11月 |
SwiftSwift 版本 | 4.0 |
SPM支持 SPM | ✗ |
由 Michael Vorontsov 维护。
目标是提供一个类似于 ViewController 的 AR 和 Scene kit 机制。通常,多个应用程序由数个连续的阶段或场景组成。
每个场景在相同的环境、会话和对象中进行,但它们之间的交互、用户操作和 UI 可能会有所不同。
例如,在第一个场景中,用户可以定义表面,在第二个场景中布局对象,在第三个场景中启动和控制它们之间的交互。
目标是定义一组控制器,用来处理 3D 世界的行为。
视图控制器托管 ARSNView 并可以设置主要功能,如相机分辨率、帧率等。
它控制场景控制器,并向它们注入场景视图。
场景控制器托管场景并在其中管理节点图。
由于基本功能和场景视图本身由父视图控制器控制,因此在场景之间的过渡中没有中断。
场景控制器负责处理用户手势,将二维屏幕坐标转换为三维场景世界,创建、删除和动画节点。
重要的节点可以由节点控制器控制。一个交互的例子是拖放。场景控制器负责处理平移手势,但节点控制器负责允许将对象拖放到受控节点并将它们移除。
通过一组面向协议的扩展和基类实现所描述的功能。
大多数场景控制器都可以通过遵守协议并获取它们的扩展来构建。
ARKit 可在任何 iOS 11 设备上使用,但要实现高质量 AR 体验,需要配备 A9 或更高处理器的设备。
基于 Apple ARKit 示例的示例应用程序。它包括 3 个阶段:
1. 平面布局 - 点击旁边的按钮继续
2. 对象放置 - 用户可以将几个对象放置到场景中并与之交互。请注意 ChipStacks - 它们随机放置了一定数量的筹码。用户可以通过拖放将筹码在堆栈之间移动。只有另一个筹码堆栈可以接受拖放的筹码。放置 3 个筹码堆栈继续。请观察如何芯片跟随手指。将对象(悬停)拖放到另一个堆栈上方,并观察顶部的透明芯片。
3. 对象交互。将筹码拖放到堆栈之间。
描述水平平面的对象。平面可以通过让场景控制器符合 PlaneConstructing 协议(扩展将自动完成大部分工作)来自动放置。
飞机从用户默认设置、遮挡平面或调试视觉中读取设置密钥。
用于放置交互对象的基元。将其设置为NodeController以控制它。
这是一种基于协议的扩展,通过组合协议提供功能。
标记NodeController
标记节点控制对象的主题。
用于简单对象跟踪。与PanGestureRecognisable结合,为对象提供跟踪平移手势和转发,以便在对象之间拖放,但在3D环境中不跟随拖动的对象。
强大的功能,可以将屏幕2D坐标转换为基于当前帧的3D AR坐标,添加和移动对象等。与PanGestureRecognisable结合,为3D世界中拖动对象提供跟踪平移手势,包括拖放。
允许根据AR渲染构建和更新平面。
提供一系列方法来处理平移手势以与对象(拖放)交互。
当前Swift无法使用非Obj-C操作处理程序创建手势识别器。使用processPanGestureAction方法和手势识别器来处理拖放。
一组帮助器和扩展,用于增强碰撞检测、2D到3D世界过渡等。
方便的类和接口集合,用于报告错误、用户消息等。
一组帮助类,例如FocusSquare
,它在AR视图中绘制一个方框轮廓,使用户了解ARKit世界跟踪的状态。方框的大小会改变以反映估计的场景深度,并通过“锁定”动画在开启和关闭状态之间切换,以指示ARKit是否检测到适合放置对象的平面。
欢迎任何反馈。
版权所有(C) 2017 Michael Vorontsov