ARKit - 第一个AR项目

移动AR平台
高级API
支持A9以上设备(不支持模拟器)
Xcode9及以上 iOS 11及以上
移动设备:SE 6S 6SP 7 7SP...

三大特性

追踪

1、全局追踪
2、视觉惯性测距VIO
3、没有外部设备

场景理解

1、平面检测(现实世界的理解)
2、命中测试(动作)
3、光估计

渲染

简单集合
。。。
SceneKit
SpriteKit
Metal

相机捕捉现实世界 ARKit
3D
SceneKit


QQ截图20170901210224.png

ARSession


QQ截图20170901210720.png

QQ截图20170901210840.png

开始 创建项目

QQ20170901-232414@2x.png

QQ20170901-232540@2x.png

ARKit 入门掌握的四大点

1、几何

2、节点

3、渲染

4、手势

//先实例化一个空的SCNScene类
let scene = SCNScene()

1、几何

//创建几何实例,定义一个SCNBox类的几何实例,然后创建盒子,并将其作为根节点的子节点,根节点就是scene  
 let box = SCNBox(width:0.1,height:0.1,length:0.1,chamferRadius:0)

2、节点

//创建子节点
let boxNode = SCNNode(geometry:box)
//x,y,z轴   -0.2就是前边
boxNode.position = SCNVector3(0,0,-0.2)
//把节点添加到根节点scene上
scene.rootNode.addChildNode(boxNode)

3、渲染

let material = SCNMaterial()//先创建一个渲染器
// material.diffuse.contents = UIColor.red//设置颜色
material.diffuse.contents = UIImage(named:"1.png")//设置图片到节点上
box.materials = [material]//使用这个渲染器渲染

4、手势

registerGestureRe();//调用
func registerGestureRe() {
//创建手势
        let tap = UIGestureRecognizer(target:self ,action: #selector(tapPed))
//将手势添加到sceneView上
        self.sceneView.addGestureRecognizer(tap)
    }
 
{
//球体 加上手势
        let scene = SCNScene()
        let sphere = SCNSphere(radius:0.3)//0.3米
        let material = SCNMaterial()
        material.diffuse.contents = UIImage(named:"1.png")
        sphere.materials = [material]
        
        let sphereNode = SCNNode(geometry:sphere)
        sphereNode.position = SCNVector3(0,0,-0.5)
        scene.rootNode.addChildNode(sphereNode)
        sceneView.scene = scene
registerGestureRe();//调用
}
@objc func tapPed(gestureRecognizer:UIGestureRecognizer){
        
        let sceneView = gestureRecognizer.view as!ARSCNView
        let touchLocation = gestureRecognizer.location(in: sceneView)
        let hitRersults = sceneView.hitTest(touchLocation, options: [:])
        //一开始的时候 index = 0
        if !hitRersults.isEmpty {
            if index == self.textures.count{
                
                index = 0
                
            }
            guard let hitRersult = hitRersults.first else {
                return
            }
            let node = hitRersult.node
            node.geometry?.firstMaterial?.diffuse.contents =UIImage(named:textures[index])
            index += 1
        }
        

OVER!

探索:

除了立方体、球体还有什么形状的图形可以尝试一把呢?
碳原子模型
参考文章:http://www.cocoachina.com/ios/20141113/10205.html

渲染上:视频、 gif

渲染视频:要用到SpriteKit框架中的一个类SKVideoNode,这个类主要用来在2D游戏中渲染视频的,今天我们就借助这个类,实现在3D场景中播放视频
参考:http://www.jianshu.com/p/be06bf357564

//1
let scnView = SCNView(frame: self.view.bounds);
 scnView.scene = SCNScene()
 self.view.addSubview(scnView);
// 2创建一个摄像机
let cameraNode = SCNNode()
 scnView.scene?.rootNode.addChildNode(cameraNode);
//3创建一个节点并绑定一个平面几何对象
  let boxNode = SCNNode()
  scnView.scene?.rootNode.addChildNode(boxNode);
//4创建一个2D游戏场景和一个播放视频的对象
let url = Bundle.main.url(forResource: "123-pad", withExtension: "mp4")
let videoNode = SKVideoNode(url: url!)
let skScene = SKScene()
skScene.addChild(videoNode)
//5 给平面体设置渲染内容
 plane.firstMaterial?.diffuse.contents = skScene
//6 播放视频
 videoNode.play()
//7打开摄像头控制查看效果
 scnView.allowsCameraControl = true;

渲染 gif:nill😄

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

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,066评论 4 62
  • 你希望如何被别人记得? 你认为什么最重要? 你要怎么从当下到达目的地? 以上三个问题是相关联的,我是谁?...
    Aloe_慧阅读 388评论 2 4
  • 蔡康永在《给残酷社会的善意短信》中写道:15岁觉得游泳难,放弃游泳,到18岁遇到一个你喜欢的人约你去游泳,你只好说...
    李欣悦1996L阅读 158评论 0 0
  • 管理的负循环-人员流动大,很多岗位总是新人履职,工作不熟悉,大错不犯,小错不断 。此起彼皮,重视解决问题 忙来忙去...
    三月天olivia阅读 1,407评论 0 0
  • 《艾伦诗集》第6篇 《艾伦日记本》第84篇原创文章 《怎留明月照山岗?!》 ——艾伦 中/秋/月/明/人/尽/望,...
    艾伦教练阅读 206评论 0 2