简单的ARKit demo

2017-09-22  本文已影响0人  木子才

首先创建一个空项目。

02981D42-3111-4749-96E2-22B123EEE1F4.png

一切从最初开始。我是这么想的,当然你也可以选择隔壁的AR 项目开始创建~~~

ViewController.m 里面开始堆代码:(没错,就是OC语音,有机会就考虑一下swift吧~~~)

#import "ViewController.h"

#import <SceneKit/SceneKit.h>
#import <ARKit/ARKit.h>

#import "Masonry.h"

@interface ViewController ()<ARSCNViewDelegate>

@property (nonatomic, strong) ARSCNView *sceneView;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    
    ARSCNView *sceneView = [ARSCNView new];
    [self.view addSubview:sceneView];
    [sceneView mas_makeConstraints:^(MASConstraintMaker *make) {
        make.edges.mas_equalTo(0);
    }];
    self.sceneView = sceneView;
    
    // Set the view's delegate
    self.sceneView.delegate = self;
    
    // Show statistics such as fps and timing information
    self.sceneView.showsStatistics = YES;
    
    // Create a new scene
    SCNScene *scene = [SCNScene sceneNamed:@"ship.scn"];
    
    // Set the scene to the view
    self.sceneView.scene = scene;
}

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    
    // Create a session configuration
    ARWorldTrackingConfiguration *configuration = [ARWorldTrackingConfiguration new];
    
    // Run the view's session
    [self.sceneView.session runWithConfiguration:configuration];
}

- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    
    // Pause the view's session
    [self.sceneView.session pause];
}

@end

然后就可以跑项目了,
然后你大概会遇见奔溃的现象,
这个是很常见的问题。
因为项目要调用摄像头,然而你居然没有在 Info.plist 里面写上相关的内容:

    <key>NSCameraUsageDescription</key>
    <string>This application will use the camera for Augmented Reality.</string>

所以奔溃也别见怪啊~~~~

至于素材问题啊。。。
最简单,你创建一个AR项目,然后从那里拉素材出来用就是啊~~~
多简单啊~~~

ARSCNViewDelegate 协议还是没有用上,
这个是当然的,毕竟这个只是一个简单的demo,在不用AR项目创建的情况下,自行创建AR的项目而已~~~
所以不用在意。

木子才。

上一篇下一篇

猜你喜欢

热点阅读