Как проверить поворот камеры в левую или правую сторону в ARkti - PullRequest
1 голос
/ 01 мая 2020

Мне нужно убедиться, что пользователь перемещает свою камеру влево или вправо в ARkit . это мой код

 func renderer(_ renderer: SCNSceneRenderer, willRenderScene scene: SCNScene, atTime time: TimeInterval) {

        //get camera position
        guard let pointOfView = mainScene.pointOfView else {return}
        let transform = pointOfView.transform

        let orientation = SCNVector3(-transform.m31,-transform.m32,-transform.m33)
        let location = SCNVector3(transform.m41,transform.m42,transform.m43)
        currentPositionOfCamera = orientation + location
        print(currentPositionOfCamera)
        if currentPositionOfCamera.x <= -1.0  {
            print("left")
            //addBox(x: currentPositionOfCamera.x, y: currentPositionOfCamera.y, z: -5.0)

            if(!isimageAdd && !isRightSide){
                         DispatchQueue.main.async {
                             self.isimageAdd = true
                             self.isRightSide = true
                            self.addBox(x: -6.1, y: self.currentPositionOfCamera.y, z: -1.5)
                         }


                     }

        }else if currentPositionOfCamera.x > 1.0 {
             print("right")
             //addBox(x: currentPositionOfCamera.x, y: currentPositionOfCamera.y, z: 5.0)

            if(!isimageAdd && isRightSide){
                         DispatchQueue.main.async {
                             self.isimageAdd = true
                            self.isRightSide = false
                             self.addBox(x: 6.1, y: self.currentPositionOfCamera.y, z: -1.5)
                         }


                     }

        }
        else {
             print("front")
        }

    }

Я использую делегат ARSCNView , чтобы найти момент камеры. этот код работает нормально, иногда нет. Есть ли какой-нибудь точный способ найти движение камеры влево или вправо в сторону. я новичок в ARkti . поэтому, пожалуйста, помогите мне:)

1 Ответ

1 голос
/ 01 мая 2020

Честно говоря, я не пробовал ARKit раньше. но, как я вижу, этот делегат срабатывает всякий раз, когда вы пытаетесь переместить свой телефон, поэтому попробуйте установить UIDevice.current.orientation в его сторону. Я не уверен, что это поможет вам или нет.

 switch UIDevice.current.orientation {
    case .portrait:
        break
    case .landscapeLeft:
        break
    case .portraitUpsideDown:
        break
    case .landscapeRight:
        break
    case .faceDown:
        break
    case .faceUp:
        break
    }
...