空间中放置了一架飞船,这是一个最基础的ARkit世界,首先了解几个基本的概念:
ARKit与SceneKit
ARkit负责相机捕捉现实世界图像,SceneKit负责在图像中显示3D模型
ARSCNView
基础视图容器类,用于显示AR内容,继承于SCNView,SCNView继承与UIView。
ARSession
每一个ARSCNView包含一个ARSession,用于管理底层设备,是底层数据与AR视图之间的桥梁。
SCNScene
3D场景,包含几何模型,灯光相机和其他属性。
ARWorldTrackingSessionConfiguration
追踪相机捕捉平地。
代码:
#import "ARKitBaseViewController.h"
@interface ARKitBaseViewController ()<ARSCNViewDelegate>{
IBOutlet ARSCNView *sceneView;
}
@end
@implementation ARKitBaseViewController
- (void)viewDidLoad {
[super viewDidLoad];
// 创建一个场景
SCNScene *scene = [SCNScene sceneNamed:@"art.scnassets/ship.scn"];
// 把场景赋值给sceneView
sceneView.scene = scene;
}
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
// 创建一个 session configuration
ARWorldTrackingConfiguration *configuration = [ARWorldTrackingConfiguration new];
// 运行 session
[sceneView.session runWithConfiguration:configuration];
// 显示特征点(屏幕中的黄点)
sceneView.debugOptions = ARSCNDebugOptionShowFeaturePoints;
}
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
// 暂停 session
[sceneView.session pause];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}
@end