要做ARKit 开发我们需要最新版的 Xcode9 目前只有 bate 版本,所以我们要到苹果的开发者网站去下载https://developer.apple.com/develop/然后我们还需要一台 A9 晶片包含或是以上的设备目前市面上的有:iPhoneSE,iPhone6s,iPhone6sPlus,iPhone7,iPhone7Plus
这几台设备可以支援
都准备好了之后我们就开始吧!
在创建项目的时候我们选择要创建 ARApp
今天我們要做的是一個 3D 的效果,所以用 SeneKit來搭建我們的項目
一进来发现他已经帮我们写好了大量的代码!
但是几乎都很少见~这些是什么意思呢?
#import "ViewController.h"
@interface ViewController () <ARSCNViewDelegate>
//ARKit框架中用于3D显示的预览视图
@property (nonatomic, strong) IBOutlet ARSCNView *sceneView;
@end
首先在开头的地方,他创建了一个用于展示 3D 效果的视图
並且遵守了一個代理 ARSCNViewDelegate
往下走 我們可以看到
- (void)viewDidLoad {
[super viewDidLoad];
// Set the view's delegate
//设置代理
self.sceneView.delegate = self;
// Show statistics such as fps and timing information
//ARKit统计信息
self.sceneView.showsStatistics = YES;
// Create a new scene
//使用模型创建节点(scn格式文件是一个基于3D建模的文件,使用3DMax软件可以创建,这里系统有一个默认的3D飞机)
SCNScene *scene = [SCNScene sceneNamed:@"art.scnassets/ship.scn"];
// Set the scene to the view
//设置ARKit的场景为SceneKit的当前场景(SCNScene是Scenekit中的场景,类似于UIView)
self.sceneView.scene = scene;
}
在 viewDidLoad 里面设置了代理,之后进行了信息统计,在这个地方将我们的 AR效果给展示出来,并且使用模型创建了节点。
接下来我们将需要的模型导入进去,然后将场景设置为 SceneKit
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
// Create a session configuration
//创建一个追踪设备配置(ARWorldTrackingSessionConfiguration主要负责传感器追踪手机的移动和旋转)
ARWorldTrackingSessionConfiguration *configuration = [ARWorldTrackingSessionConfiguration new];
// Run the view's session
// 开始启动ARSession会话(启动AR)
[self.sceneView.session runWithConfiguration:configuration];
}
在 viewWillAppear 方法中 ,帮我们创建了一个追踪设备的配置,来检
测我们手机的移动跟旋转,并且启动我们的 AR
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
// Pause the view's session
// 暂停ARSession会话
[self.sceneView.session pause];
}
最后在这个 viewWillDisappear 中 在画面将要消失的时候暂停了我们的AR效果。
apple 果然是贯彻使用者至上的准则,在一开始的时候就给我们这样方便的环境。
看到最后感觉怎么样?如果想学习更多更详细的ios的知识,想成为大神?那下面这个福利你一定不能错过。
实战效果
,