环境要求:
1.Xcode版本:Xcode9及以上
2.iOS系统:iOS11及以上
3.iOS设备:处理器A9及以上(6S机型及以上)
1.打开Xcode9bete版本,新建一个工程,选择Augmented Reality APP, 点击下一步

2.渲染所使用的技术选择 SceneKit

3.系统会自动帮我们生成一些资源

4.代码部分
import UIKit
import SceneKit
import ARKit
class ViewController: UIViewController {
@IBOutlet var sceneView: ARSCNView!
override func viewDidLoad() {
super.viewDidLoad()
//设置代理
sceneView.delegate = self
// 是否统计显示相关信息, 默认是No
sceneView.showsStatistics = true
//使用模型创建场景,scn格式的文件是一个3D建模文件,使用3DMax可以生成
let scene = SCNScene(named: "art.scnassets/ship.scn")!
//设置sceneView的场景为当前场景
sceneView.scene = scene
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
// 创建一个session配置
let configuration = ARWorldTrackingSessionConfiguration()
// 运行
sceneView.session.run(configuration)
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
// 暂停
sceneView.session.pause()
}
}
// MARK: - ARSCNViewDelegate代理方法
extension ViewController: ARSCNViewDelegate {
/*
// Override to create and configure nodes for anchors added to the view's session.
func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode? {
let node = SCNNode()
return node
}
*/
func session(_ session: ARSession, didFailWithError error: Error) {
// Present an error message to the user
}
func sessionWasInterrupted(_ session: ARSession) {
// Inform the user that the session has been interrupted, for example, by presenting an overlay
}
func sessionInterruptionEnded(_ session: ARSession) {
// Reset tracking and/or remove existing anchors if consistent tracking is required
}
}
效果图奉上

网友评论