ARController 0.1.2

ARController 0.1.2

测试已测试
语种语言 SwiftSwift
许可证 MIT
发布上次发布2017年11月
SwiftSwift 版本4.0
SPM支持 SPM

Michael Vorontsov 维护。



  • Michael Vorontsov

ARController

目标是提供一个类似于 ViewController 的 AR 和 Scene kit 机制。通常,多个应用程序由数个连续的阶段或场景组成。
每个场景在相同的环境、会话和对象中进行,但它们之间的交互、用户操作和 UI 可能会有所不同。

概述

例如,在第一个场景中,用户可以定义表面,在第二个场景中布局对象,在第三个场景中启动和控制它们之间的交互。

目标是定义一组控制器,用来处理 3D 世界的行为。

视图控制器托管 ARSNView 并可以设置主要功能,如相机分辨率、帧率等。

它控制场景控制器,并向它们注入场景视图。

场景控制器托管场景并在其中管理节点图。

由于基本功能和场景视图本身由父视图控制器控制,因此在场景之间的过渡中没有中断。

场景控制器负责处理用户手势,将二维屏幕坐标转换为三维场景世界,创建、删除和动画节点。

重要的节点可以由节点控制器控制。一个交互的例子是拖放。场景控制器负责处理平移手势,但节点控制器负责允许将对象拖放到受控节点并将它们移除。

通过一组面向协议的扩展和基类实现所描述的功能。

大多数场景控制器都可以通过遵守协议并获取它们的扩展来构建。

入门

ARKit 可在任何 iOS 11 设备上使用,但要实现高质量 AR 体验,需要配备 A9 或更高处理器的设备。

示例

基于 Apple ARKit 示例的示例应用程序。它包括 3 个阶段:
1. 平面布局 - 点击旁边的按钮继续
2. 对象放置 - 用户可以将几个对象放置到场景中并与之交互。请注意 ChipStacks - 它们随机放置了一定数量的筹码。用户可以通过拖放将筹码在堆栈之间移动。只有另一个筹码堆栈可以接受拖放的筹码。放置 3 个筹码堆栈继续。请观察如何芯片跟随手指。将对象(悬停)拖放到另一个堆栈上方,并观察顶部的透明芯片。
3. 对象交互。将筹码拖放到堆栈之间。

组件

节点

平面

描述水平平面的对象。平面可以通过让场景控制器符合 PlaneConstructing 协议(扩展将自动完成大部分工作)来自动放置。

飞机从用户默认设置、遮挡平面或调试视觉中读取设置密钥。

VirtualObject

用于放置交互对象的基元。将其设置为NodeController以控制它。

协议

这是一种基于协议的扩展,通过组合协议提供功能。

NodeControlling

标记NodeController

NodeConrollable

标记节点控制对象的主题。

SimpleObjectTracking

用于简单对象跟踪。与PanGestureRecognisable结合,为对象提供跟踪平移手势和转发,以便在对象之间拖放,但在3D环境中不跟随拖动的对象。

SceneObjectTracking

强大的功能,可以将屏幕2D坐标转换为基于当前帧的3D AR坐标,添加和移动对象等。与PanGestureRecognisable结合,为3D世界中拖动对象提供跟踪平移手势,包括拖放。

Plane Constructing

允许根据AR渲染构建和更新平面。

PanGestureRecognisable

提供一系列方法来处理平移手势以与对象(拖放)交互。
当前Swift无法使用非Obj-C操作处理程序创建手势识别器。使用processPanGestureAction方法和手势识别器来处理拖放。

工具

一组帮助器和扩展,用于增强碰撞检测、2D到3D世界过渡等。

TextManager

方便的类和接口集合,用于报告错误、用户消息等。

SceneHelpers

一组帮助类,例如FocusSquare,它在AR视图中绘制一个方框轮廓,使用户了解ARKit世界跟踪的状态。方框的大小会改变以反映估计的场景深度,并通过“锁定”动画在开启和关闭状态之间切换,以指示ARKit是否检测到适合放置对象的平面。

反馈

欢迎任何反馈。

版权所有(C) 2017 Michael Vorontsov