美文网首页
ARKit 笔记 1

ARKit 笔记 1

作者: 花开富贵_cc | 来源:发表于2021-11-10 10:45 被阅读0次

    1 导入 ARKit
    2 授权相机权限
    3 创建 sceneView 用来显示场景
    4 配置session ARWorldTrackingConfiguration 获取后置相机 ARFaceTrackingConfiguration 获取前置相机 (人脸识别)

        sceneView.session.run(configuration)
    

    5 添加3d 物体

    func addBox() {
        let box = SCNBox(width: 0.1, height: 0.1, length: 0.1, chamferRadius: 0)
        
        let boxNode = SCNNode()
        boxNode.geometry = box
        boxNode.position = SCNVector3(0, 0, -0.2)
        
        let scene = SCNScene()
        scene.rootNode.addChildNode(boxNode)
        sceneView.scene = scene
    }
    
    

    创建一个Box,1 Float = 1 meter。

    创建一个node。node表示物体在三维空间中的位置和坐标。node本身没有可见的内容。

    给node设置一个形状(Box)。

    设置box的位置。这个位置相对于camera的,右边是X正,左边是X负。上面表示Y正,向下表示Y负。向后表示Z正,向前表示Z负。

    创建一个scene(SceneKit scene),将box添加到场景中去。

    将sceneView的scene设置为显示刚刚创建的场景。

    6 点击屏幕添加模型 点击模型删除

    @objc func didTap(withGestureRecognizer recognizer: UIGestureRecognizer) {
        let tapLocation = recognizer.location(in: sceneView)
        let hitTestResults = sceneView.hitTest(tapLocation)
        guard let node = hitTestResults.first?.node else {
            let hitTestResultsWithFeaturePoints = sceneView.hitTest(tapLocation, types: .featurePoint)
            if let hitTestResultWithFeaturePoints = hitTestResultsWithFeaturePoints.first {
                let translation = hitTestResultWithFeaturePoints.worldTransform.translation
                addBox(x: translation.x, y: translation.y, z: translation.z)
            }
            return
        }
        node.removeFromParentNode()
    }
    

    相关文章

      网友评论

          本文标题:ARKit 笔记 1

          本文链接:https://www.haomeiwen.com/subject/kypbzltx.html