ARKit 文档(6)-- ARSKView

一个通过将 SpriteKit 2D 内容显示在相机画面上,从而实现 AR 体验的视图。 使用 ARSKView 类可以创建一个将一个 2D 元素放置在相机中显示的真实世界的3D 空间中的增强现实体验。当你运行视图提供的 ARSession 对象时: 视图会自动渲染设备相机中的实时画面当做场景的背景。 当你实现 ARSKViewDelegate 中的方法去关联 Spritekit 内容与真实世界的位置信息时,视图会自动对这些 SpriteKit Nodes 进行缩放和旋转操作,来保证它们在现实世界中显示时候是永远朝向设备相机的。…

ARKit 文档(5)-- ARSCNView

一个通过将 SceneKit 3D 内容显示在相机画面上,从而实现 AR 体验的视图。 ARSCNView 类通过在现实显示世界的相机画面中渲染虚拟 3D 内容,提供一个非常简单的方式来创建增强现实体验。 当你运行 view 提供的 ARSession 对象时: 视图会自动渲染设备相机中的实时画面当做场景的背景。 SceneKit 场景视图的世界坐标系统是直接与 session configuration 管理的 AR 世界坐标系统响应的。 视图会自动移动他的 SceneKit 相机去匹配设备在真实世界中的移动。 由于 ARKit 会自动将SceneKit空间与真实世界相匹配,所以要放置一个虚拟物品让它显示在真实世界的位置上,只需要给它设置一个合适的 SceneKit 坐标即可。(更多请见 Providing 3D Virtual Content with SceneKit)。 你并不需要使用 ARAnchor 类去追踪你添加在场景中的物体的坐标,但是你还是需要实现 ARSCNViewDelegate 中的方法,这样你才可以在 ARKit…

ARKit 文档(4)-- 构建一个基础的 AR 体验

配置 ARSession,使用 SceneKit 或 SpriteKit 显示 AR 内容。 当你使用 ARSCNView 或者 ARSKView 类时,ARKit 会自动管理创一个 AR 体验最基本的要求:从相机中获取实时画面作为背景,并将你提供的 2D 或者 3D 图层内容渲染在上面,从而达到一个内容就是存在于现实世界中的错觉。根据你要实现的 AR 体验类型(2D 或 3D),选择一个视图类进行处理,并提供你要显示的内容所需要的位置和模型。 如果要创建一个你自己的显示视图作为替代,请见 Displaying an AR Experience with Metal。 配置并运行 AR Session 不管是 ARSCNView 还是 ARSKView 类,都包含了一个…

ARKit 文档(3)-- ARWorldTrackingSessionConfiguration

一个可以追踪设备方向和位置的配置,还可以检测现实世界在设备相机画面中的平面。 所有的 AR configuration 都建立了设备所处的现实世界与可建立AR模型的虚拟3D坐标空间的对应关系。当你的 APP 将虚拟内容和摄像头中出现的实时画面显示在一起时,用户就会产生一种虚拟内容就是存在于现实世界中的错觉。 创建并维护一个这样的对应关系需要追踪设备的运动。ARWorldTrackingSessionConfiguration 类可以在6个自由角度上(six degrees of freedom, 6DOF)追踪设备的移动, 也就是3个旋转轴(roll: 绕着垂直于手机屏幕的轴旋转,yaw: 绕着手机的向上方向旋转,pitch: 改变手机的俯仰), 3个平移轴(在 x, y, z 上的移动)。 这个水平的追踪可以创建一个身临其境的 AR 体验:不管用户是旋转设备从上下左右看,还是走到设备的前后左右面去看,这个虚拟物体都会像现实世界的一部分一样显示在同一个位置上。 如果设置了 planeDetection 参数,ARKit 会分析出真实世界场景中的平面,只要检测到平面,ARKit 就会自动的给 session 添加一个 ARPlaneAnchor。…

ARKit 文档(2)-- ARSessionConfiguration

一个只追踪设备方向的基础配置 所有的 AR configuration 都建立了设备所处的现实世界与可建立AR模型的虚拟3D坐标空间的对应关系。当你的 APP 将虚拟内容和摄像头中出现的实时画面显示在一起时,用户就会产生一种虚拟内容就是存在于现实世界中的错觉。 创建并维护一个这样的对应关系需要追踪设备的运动。ARSessionConfiguration 类在3个自由角度上(three degrees of freedom, 3DOF)追踪设备的移动, 也就是3个旋转轴(roll: 绕着垂直于手机屏幕的轴旋转,yaw: 绕着手机的向上方向旋转,pitch: 改变手机的俯仰)。 这是创建一个基本的 AR 体验所需的最基本的运动追踪水平:即使用户旋转设备去朝上看,朝下看,或者朝左右两边看,这个虚拟物体可以作为现实世界的一部分显示在现实世界中。然而,这个 configuration 无法追踪设备的移动:一些非同寻常的改变设备位置的操作会使得虚拟内容在现实世界中产生漂移,从而打破了 AR 的错觉。例如用户无法走到虚拟物体的背后去看它的背面。 虽然 ARSessionConfiguration 类只能创造有限的 AR 体验,但可以在任何支持 ARKit 的设备上使用。如果想在某些设备上提升更好的…

ARKit 文档(1)-- ARSession

一个单例,管理增强现实体验所需的设备相机和运动处理。 一个 ARSession 对象协调着你所维护的 ARKit 执行的主要进程,从而创造增强的现实体验。这些进程包括从设备的运动传感器中读取数据,控制设备的相机,对相机中捕获到的图像进行分析。session 会综合所有的结果去建立用户所在的现实世界与可建立AR模型的内容空间之间的联系。 每个用 ARKit 建立的 AR 体验都需要一个 ARSession 对象。如果你是使用 ARSCNView 或 ARSKView 来快速建立你 AR 体验中显示虚拟内容的部分。那么相应的视图对象已经拥有了一个 ARSession 实例。如果你是自己构造 AR 内容的渲染部分,那么你就需要实例化一个 ARSession 对象并维护它。 运行一个 session 需要一个 session configuration(一个ARSessionConfiguration 类的实例或它的子类ARWorldTrackingSessionConfiguration)。这些类决定了 ARKit 如何跟踪设备相对于现实世界的位置和运动,从而影响了你构造的 AR 体验的类别。…

ARKit 文档(0)-- ARKit原理及最佳实践

理解 ARKit 的概念,特性和创建优秀 AR 体验的最佳实践 满足一个 AR 体验的基本要求就是 创建 和 追踪 用户所在的现实世界 与 可建立模型的内容空间 之间的对应关系的能力,这也是 ARKit 所定义的特性。当你的 APP 将虚拟内容和摄像头中出现的实时画面显示在一起时,用户就会产生一种虚拟内容就是存在于现实世界中的错觉,这就是所谓的增强现实。 世界追踪技术的原理 为了创造一种在现实世界与虚拟空间之间的联系,ARKit 使用了一种叫做 visual-inertial odometry(视觉惯性测距) 的技术。它将会结合 iOS 设备的运动传感器和相机中对可见场景的计算机视觉分析进行处理。ARKit 会识别图像场景中显著的特征,并从视频帧中追踪这些特征的差异位置,最后与传感器数据进行比较,最后得到一个设备的位置和运动状态的高精度模型。 世界追踪技术 还会分析和理解场景中的内容。使用 hit-testing 方法(见 ARHitTestResult 类)寻找真实世界中与相机画面中的点对应的平面。如果你设置了…