ARKit简单Demo

ARKit

官网介绍地址
官网文档地址

运行版本

iOS 11.0+
xcode 10.0+

1.新建并运行官方自带的demo

XCode : File --> New --> Project --> Augmented Reality App


Screen Shot 2019-03-01 at 10.10.47 AM.png

查看工程,会出现一个art.scnassets 目录,这目录下的 .scn文件就是展示的3D模型,.png是模型对应的贴纸。
连接设备,直接运行就可以先看到如下


WechatIMG218.jpeg

3.代码查看

- (void)viewDidLoad {
   [super viewDidLoad];
  // 实现 ARSCNViewDelegate 的delegate
   self.sceneView.delegate = self;
   // 显示控制台,默认值是NO
   self.sceneView.showsStatistics = YES;
   //  new 一个新的模型
   SCNScene *scene = [SCNScene sceneNamed:@"art.scnassets/ship.scn"];
   // 显示模型
   self.sceneView.scene = scene;
    }

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated]; 
    // 创建 session 摄像头配置
     ARWorldTrackingConfiguration *configuration = [ARWorldTrackingConfiguration new];
    // 运行ARSession
    [self.sceneView.session runWithConfiguration:configuration];
}

- (void)viewWillDisappear:(BOOL)animated {
  [super viewWillDisappear:animated];    
  //停止ARSession
  [self.sceneView.session pause];
}

这就是Apple提供的简单的ARKit Demo,那现在我们不需要他的demo,需要运行自己的3D模型呢。

2.加载本地3D模型文件

 首先需要有3D模型文件,文件可以是.obj,.dae,.scn等等,此项文件来自此网站[3D模型文件](https://free3d.com/3d-models/characters?page=3)
一:在项目目录中通过Add File将需要显示的.obj文件添加到项目中,Stick_Figure_by_Swp.obj 文件为需要显示的模型
Screen Shot 2019-03-03 at 5.05.43 PM.png
二:利用storyboard简单构建整个如图层级
Screen Shot 2019-03-03 at 7.52.48 PM.png
三:代码加载3D模型
ShowObjViewController 复制加载显示模型,具体代码如下:
  - (void)viewDidLoad {
       [super viewDidLoad];
      //获取文件url
      NSURL *url = [[NSBundle mainBundle] URLForResource:@"Stick_Figure_by_Swp" withExtension:@"obj"];
      // new SCNReferenceNode 是用来从场景文件中加载node
      SCNReferenceNode * cunstomNode = [SCNReferenceNode referenceNodeWithURL:url];
      [cunstomNode load];
      //new 需要显示的元素
      SCNNode *scnNode = [[SCNNode alloc] init];
      [scnNode addChildNode:cunstomNode];
      //设置 node的scale
      [scnNode setScale: SCNVector3Make(0.05,0.05,0.05)];
      //设置delegate
      self.sceneView.delegate = self;
      //设置显示控制台
      self.sceneView.showsStatistics = YES;
      // 场景添加显示节点
      [self.sceneView.scene.rootNode addChildNode:scnNode];
}

 -(void)viewWillAppear:(BOOL)animated{
      [super viewWillAppear:animated];
      ARWorldTrackingConfiguration *configuration = [ARWorldTrackingConfiguration new];
      [self.sceneView.session runWithConfiguration:configuration];
}

  -(void)viewWillDisappear:(BOOL)animated{
      [super viewWillDisappear:animated];
      [self.sceneView.session pause];
 }
四:连接设备,运行项目就可以显示加载的3D模型了。
IMG_1055.PNG

3.obj文件转scn文件

操作步骤:
  一:复制一份.obj文件,选中文件
  二:XCode -- Editor -- Convert to SceneKit scene file format (.scn)  
  三:弹出对话框,点击Convert
  四:将转换后的Stick_Figure_by_Swp_scn.scn文件,拖到到 【art.scnassets】中
  五:ShowScnViewController 实现模型显示
  六:连接设备,运行,显示。

具体可以查看demo GitHun地址
参考地址

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,544评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,430评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,764评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,193评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,216评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,182评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,063评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,917评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,329评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,543评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,722评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,425评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,019评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,671评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,825评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,729评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,614评论 2 353

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,097评论 1 32
  • 叶落蹁跹筱梦轻。 安然自得逍遥世, 好山好水映月明。
    七月牵机阅读 258评论 2 6
  • 写给中年“油腻”的自己和觉得“油腻”的你们。 当90后的未婚男女已经步入大龄青年行列,我们这些80后生人,已经在不...
    张书源要努力阅读 1,824评论 9 22
  • 离开自己的舒适区(2017-12-06) 1,《易经》 42、43卦 第7遍 2,《中庸》...
    小灵仙子阅读 341评论 0 0
  • 她是我去4s店认识的一个销售,其实算不上认识,她接待的我,介绍了车型,留了微信,后来再也没有联系过,仅此而已。后来...
    面包师的故事阅读 201评论 0 0