移動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
開始 創(chuàng)建項目
QQ20170901-232414@2x.png
QQ20170901-232540@2x.png
ARKit 入門掌握的四大點
1议街、幾何
2璧榄、節(jié)點
3、渲染
4涂身、手勢
//先實例化一個空的SCNScene類
let scene = SCNScene()
1搓蚪、幾何
//創(chuàng)建幾何實例妒潭,定義一個SCNBox類的幾何實例,然后創(chuàng)建盒子漠酿,并將其作為根節(jié)點的子節(jié)點谎亩,根節(jié)點就是scene
let box = SCNBox(width:0.1,height:0.1,length:0.1,chamferRadius:0)
2、節(jié)點
//創(chuàng)建子節(jié)點
let boxNode = SCNNode(geometry:box)
//x,y,z軸 -0.2就是前邊
boxNode.position = SCNVector3(0,0,-0.2)
//把節(jié)點添加到根節(jié)點scene上
scene.rootNode.addChildNode(boxNode)
3夫凸、渲染
let material = SCNMaterial()//先創(chuàng)建一個渲染器
// material.diffuse.contents = UIColor.red//設置顏色
material.diffuse.contents = UIImage(named:"1.png")//設置圖片到節(jié)點上
box.materials = [material]//使用這個渲染器渲染
4夭拌、手勢
registerGestureRe();//調用
func registerGestureRe() {
//創(chuàng)建手勢
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.reibang.com/p/be06bf357564
//1
let scnView = SCNView(frame: self.view.bounds);
scnView.scene = SCNScene()
self.view.addSubview(scnView);
// 2創(chuàng)建一個攝像機
let cameraNode = SCNNode()
scnView.scene?.rootNode.addChildNode(cameraNode);
//3創(chuàng)建一個節(jié)點并綁定一個平面幾何對象
let boxNode = SCNNode()
scnView.scene?.rootNode.addChildNode(boxNode);
//4創(chuàng)建一個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??