こんにちは。エクセルソフトの田淵です。
弊社取り扱いの Kudan AR SDK のエントリーです。
SDK のダウンロードは こちら からお申込みください。SDK を使った開発と、個人開発者のリリースは無料でご利用いただけます。企業の方は有料になりますので、@ytabuchi までご連絡ください。
前回は、マーカー上に表示したオブジェクトをピンチできるようにしました。その他の記事については Kudan AR SDK チュートリアル記事まとめ で、まとめていますのでご覧ください。
今回はピンチに続き、回転をできるようにしたいと思います。
現時点でのサンプルは ytabuchi の GitHub に置いてあります。開発を継続していくので現時点でのスナップショットです。
ViewController の編集
MarkerViewController.swift を編集していきます。
Pinch と同様に回転を検知するメソッド UIRotationGestureRecognizer が用意されています。が、操作を簡単にするために UIPanGestureRecognizer を使います。同じように cameraView にアタッチします。
override func setupContent() {
    // ...略...
    
    // ジェスチャーの生成と cameraView へのアタッチ
    let pinchGestureRecognizer = UIPinchGestureRecognizer(target: self, action: #selector(pinchNode(sender:)))
    self.cameraView.addGestureRecognizer(pinchGestureRecognizer)
    let panGestureRecognizer = UIPanGestureRecognizer(target: self, action: #selector(rotateNode(sender:)))
    self.cameraView.addGestureRecognizer(panGestureRecognizer)
}
Pinch と同様にパン(スライド)を検知すると、action に指定した rotateNode に UIPanGestureRecognizer が飛んできます。この translation(in: View?) でどれくらい移動したか?の値が取得できるので、開始時点からの移動距離を角度に変換して各ノードに渡しています。
// パンにより表示ノードを回転
@objc func rotateNode(sender: UIPanGestureRecognizer) {
    let x = sender.translation(in: self.cameraView).x
    if (sender.state == UIGestureRecognizer.State.began) {
        lastPanX = x
    }
    
    if let panX = lastPanX {
        let diff = x - panX
        let degree = diff * 0.25
        
        switch shownNode {
        case .Image:
            self.imageNode?.rotate(byDegrees: Float(degree), axisX: 0, y: 0, z: 1)
        case .Model:
            self.modelNode?.rotate(byDegrees: Float(degree), axisX: 0, y: 1, z: 0)
        case .Video:
            self.videoNode?.rotate(byDegrees: Float(degree), axisX: 0, y: 0, z: 1)
        case .AlphaVideo:
            self.alphaVideoNode?.rotate(byDegrees: Float(degree), axisX: 0, y: 0, z: 1)
        default:
            NSLog("Panned: \(sender.translation(in: self.view))")
        }
    }
}
動作イメージ:
できたー @nakasho_dev さん、ありがとでした! pic.twitter.com/mGavBtH3bH
— 田淵 義人@エクセルソフト (@ytabuchi) December 20, 2019
この後は
マーカーを選択できるようにしたいと思います。
Kudan AR SDK エントリー一覧
Kudan AR SDK チュートリアル記事まとめ | エクセルソフト ブログ
をご覧ください。
以上です。

 
  
  
  
  
