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 世界坐标系统响应的。 视图会自动移动他的 »

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

配置 ARSession,使用 SceneKit 或 SpriteKit 显示 AR 内容。 当你使用 ARSCNView 或者 ARSKView 类时,ARKit 会自动管理创一个 AR 体验最基本的要求:从相机中获取实时画面作为背景,并将你提供的 2D 或者 3D 图层内容渲染在上面,从而达到一个内容就是存在于现实世界中的错觉。根据你要实现的 »

ARKit 文档(3)-- ARWorldTrackingSessionConfiguration

一个可以追踪设备方向和位置的配置,还可以检测现实世界在设备相机画面中的平面。 所有的 AR configuration 都建立了设备所处的现实世界与可建立AR模型的虚拟3D坐标空间的对应关系。当你的 APP 将虚拟内容和摄像头中出现的实时画面显示在一起时,用户就会产生一种虚拟内容就是存在于现实世界中的错觉。 创建并维护一个这样的对应关系需要追踪设备的运动。ARWorldTrackingSessionConfiguration 类可以在6个自由角度上(six degrees of freedom, 6DOF)追踪设备的移动, 也就是3个旋转轴(roll: 绕着垂直于手机屏幕的轴旋转,yaw: 绕着手机的向上方向旋转,pitch: 改变手机的俯仰) »

ARKit 文档(2)-- ARSessionConfiguration

一个只追踪设备方向的基础配置 所有的 AR configuration 都建立了设备所处的现实世界与可建立AR模型的虚拟3D坐标空间的对应关系。当你的 APP 将虚拟内容和摄像头中出现的实时画面显示在一起时,用户就会产生一种虚拟内容就是存在于现实世界中的错觉。 创建并维护一个这样的对应关系需要追踪设备的运动。ARSessionConfiguration 类在3个自由角度上(three degrees of freedom, 3DOF)追踪设备的移动, 也就是3个旋转轴(roll: 绕着垂直于手机屏幕的轴旋转,yaw: 绕着手机的向上方向旋转,pitch: 改变手机的俯仰)。 这是创建一个基本的 »

ARKit 文档(1)-- ARSession

一个单例,管理增强现实体验所需的设备相机和运动处理。 一个 ARSession 对象协调着你所维护的 ARKit 执行的主要进程,从而创造增强的现实体验。这些进程包括从设备的运动传感器中读取数据,控制设备的相机,对相机中捕获到的图像进行分析。session 会综合所有的结果去建立用户所在的现实世界与可建立AR模型的内容空间之间的联系。 每个用 ARKit 建立的 AR 体验都需要一个 ARSession 对象。如果你是使用 ARSCNView 或 ARSKView 来快速建立你 AR »

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

理解 ARKit 的概念,特性和创建优秀 AR 体验的最佳实践 满足一个 AR 体验的基本要求就是 创建 和 追踪 用户所在的现实世界 与 可建立模型的内容空间 之间的对应关系的能力,这也是 ARKit 所定义的特性。当你的 APP 将虚拟内容和摄像头中出现的实时画面显示在一起时,用户就会产生一种虚拟内容就是存在于现实世界中的错觉,这就是所谓的增强现实。 世界追踪技术的原理 为了创造一种在现实世界与虚拟空间之间的联系, »

Associated Objects 小记

在一个 viewController 的生命周期内,只执行一次某段代码,怎么做? 第一种方法是最常见也是最简单的方法,加标记位。 还有没有更优雅的办法呢?面向 Google 编程,得到这个答案: void (^excuteOnce)() = ^{ if (objc_getAssociatedObject(self, _cmd)) { return; } objc_setAssociatedObject(self, _cmd, @"Launched", OBJC_ »

记一个selectedBackgroundView的坑

今天在解 bug 的时候遇到了一个非常奇怪的问题,单击 cell 进行选中的时候,cell 中的一条用 UIView 实现的横线 seperateLineView 消失了。 看了一圈所有跟这个 seperateLineView 相关的代码,却看不出任何可能改动到包括 frame ,alpha ,hidden 的地方。这个时候就想起了关门打狗。 命名一个新的 UIView 的子视图 TestView : @interface »

[译]用 Swift 协议扩展和泛型来实现复用

作为一个iOS开发者,最常用的任务就是通过自定义cell的子类,来实现UITableView或者UICollectionView的自定义。并且 UITableView 和 UICollectionView 在注册自定义cell子类这一块都有非常类似的API: public func registerClass(cellClass: AnyClass?, forCellWithReuseIdentifier identifier: String) public func registerNib(nib: UINib?, forCellWithReuseIdentifier identifier: String) 对于注册cell的自定义最常用的解决办法就是,声明一个reuseIdentifier的常量, »

我们来谈谈贝塞尔曲线

最近在做项目的时候,需要用到一个动画,非常简单的动画,简单到就是直接对一个View做平移... 然而虽然动画简单,但是却很不自然,尝试了UIView Animation提供的各类参数,都无法达到想要的动画效果。这时候,我的脑子里突然想起一个词... “贝塞尔曲线”.... 这个词经常看到,但却从没有去了解过,这次就趁着有求于它的雅兴,好好做个入门了解好了。 首先,什么是贝塞尔曲线? 显而易见的是,贝塞尔曲线,应该就是是一个叫贝塞尔的人发明的曲线吧,然而历史剧本却不是这么写的。贝塞尔曲线所依据的最原始的数学公式,是早在1912年就广为人知的伯恩斯坦多项式。OK,now, »

断点调试Autolayout

对于 iOS 和 OS X 开发者来说,Autolayout已经逐渐变成一个至关重要的开发工具。它让多屏幕适配变得小菜一碟(peasy),但是有些时候它还是会把我们搞疯掉,因为它总是会出现那些啰嗦又没啥用处的错误警告。 就像这样: Unable to simultaneously satisfy constraints. Probably at least one of the constraints in the »

Ghost博客折腾之旅

实习了刚好一个月了,可是回过头去却发现过去的那个月里似乎并没有留下什么。其实我知道,不是没有留下,而是没有记录。于是就萌生了写博客的念头。 工欲善其事,必先利其器。 第一篇博文就讲讲怎么样搭建一个自己的独立博客。 我使用的是DigitalOcean + Ubuntu 14.04 + Ghost 1.首先到DigitalOcean上申请一个VPS,5美元一个月的就够了。最好还是选择 San Francisco 节点,比较稳定,怎么申请不做赘述。 这里有个小福利,上 Github »