ARKit学习-3.1(初体验手把手教学)

环境要求:
1.Xcode版本:Xcode9及以上
2.iOS系统:iOS11及以上
3.iOS设备:处理器A9及以上(6S机型及以上)


1.打开Xcode9bete版本,新建一个工程,选择Augmented Reality APP, 点击下一步


AR01.png

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

AR02.png

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

AR03.png

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
        
    }
    
}

效果图奉上

效果.gif
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容