构建了新的本地 MarkDown 工具
MWeb + 七牛图床
拿这篇文章测试一下
这篇文章是 ARKit \ Session 602 的一些整理。【基于OC】
转自我的 Blog: Danny's Dream
这应该是这届 WWDC 发布的最酷的几个功能之一了。也是最吸引我的几个功能之一,所以在看完预览介绍之后,就直接看了这个视频。
上来展示了两个应用场景,一个是幼儿教育的视频,能把童话故事展示到床上。还有一个是宜家的家具展示,可以把宜家的家具放到你家中,并且尺寸还是真实的大小。
支持的设备
- A9及及以上的处理器 【6s 及 以上设备,估计是需要较高的运算,我用的测试设备是 se ,跑起来手机热量及耗电感人】
- iOS 11
AR技术的主要技术点
追踪
追踪手机本身的变化,包括角度,空间位置等。
场景理解
- 平面探测 【AR物体,需要展示的界面】
- Hit-testing 【当没有规则平面的时候,进行的操作,类似于点击直接的hit-test,判断图像中的模块是否为平面】
- 光影推测 【相当酷的一个功能,为了能让 AR 渲染出来的更加逼真,ARKit 会先去判断当前的光影结构,并渲染在物体画面上】
渲染
顾名思义,就是怎么把 3D 的物体以一种立体的模式渲染到平面图像上,提供了 SceneKit,SpriteKit,Metal 等三种渲染方式,当然你也可以通过 Unity ,Unreal 等引擎做渲染。这一步的开放,意味着开发的成本更低。
主要的结构如下:
代码介绍
画面捕捉
画面通过摄像头来获取,通过 AVFoundation 和 CoreMotion,所以 AR 应用要获取摄像头的权限。
ARSession
ARKit 中最主要的类,它的用法和 NSUrlSession 的模式很像,应该是相似的设计思想。
首先构造 ARSessionConfiguration ,它和 NSURLSessionTask 一样是抽象的接口
实现分为以下:
- ARWorldTrackingSessionConfiguration 提供 6 个维度空间的设备追踪参数,一旦 Session pause 了,不能恢复追踪。
ARWorldTrackingSessionConfiguration 提供 isSupported 来判断当前设备是否支持 AR。
开始
// Create a session configuration
ARWorldTrackingSessionConfiguration *configuration = [ARWorldTrackingSessionConfiguration new];
// Run the view's session
[self.session runWithConfiguration:configuration];
通过 ARSession 的 run 方法来开始追踪。
停止
当不再使用的时候,如 viewWillDisappear 的时候,执行 pause 方法停止追踪。
// Pause the view's session
[self.session pause];
恢复
需要恢复的时候调用要重新 run 一个 Configuration 。
重置
在需要重置的时候,调用如下方法
[self.session runWithConfiguration:configuration options:ARSessionRunOptionResetTracking]
ARSessionDelegate
ARSession 提供的代理方法
@protocol ARSessionDelegate <ARSessionObserver>
@optional
/**
当一个新的 frame 绘制的时触发
*/
- (void)session:(ARSession *)session didUpdateFrame:(ARFrame *)frame;
/**
当一个新的 ARAnchor 加到 Session 的时触发
*/
- (void)session:(ARSession *)session didAddAnchors:(NSArray<ARAnchor*>*)anchors;
/**
当 ARAnchor 刷新的时候触发
*/
- (void)session:(ARSession *)session didUpdateAnchors:(NSArray<ARAnchor*>*)anchors;
/**
当 ARAnchor 被移除的时候触发
*/
- (void)session:(ARSession *)session didRemoveAnchors:(NSArray<ARAnchor*>*)anchors;
@end
关键参数介绍
ARFrame
Scense understanding 场景的理解
Plane detection
Hit-testing
Light estimate 渲染