七天帶你初探AR世界-Day 5


七天帶你初探AR世界-Day 5

Day 5

今天教大家第二個手勢,UILongPressGestureRecognizer ,顧名思義為首長按螢幕會觸發的動作,本來想使用 UIPanGestureRecognizer 做拖移物件的動作,但昨天已經使用過了所以改為長按觸發來做。

首先我們一樣建立好手勢觸發後該做什麼事的 func

@objc func didPan(_ recognizer: UILongPressGestureRecognizer) {

    guard let recognizerView = recognizer.view as? ARSCNView else { return }

    if recognizer.state == .changed {

        let results = self.sceneView.hitTest(recognizer.location(in: recognizer.view),
                                             types: ARHitTestResult.ResultType.featurePoint)

        guard let result: ARHitTestResult = results.first else { return }

        object?.position = SCNVector3Make(result.worldTransform.columns.3.x,
                                          result.worldTransform.columns.3.y,
                                          object?.position.z ?? -0.5)
    }
}
  • 先確認 recognizer.view 是否為 ARSCNView
  • recognizer 有很多種形態,這邊我們使用 .change 來做事。
  • 宣告 resultssceneView 中,點擊測試的特徵點。
  • 並檢查 results 是否為上一次點擊的點,否則 return 掉。
  • 最後給予 object 長按點擊後所拖曳的的位置。

並加入 addGesture() 裡:

    func addGesture()  {
        let pinch = UIPinchGestureRecognizer(target: self, action: #selector(didPinch(_:)))
        let pan = UILongPressGestureRecognizer(target: self, action: #selector(didPan(_:)))
        sceneView.addGestureRecognizer(pan)
        sceneView.addGestureRecognizer(rotate)
}

目前你的手勢 func 裡會長這樣~

#ARKit #Gesture #3Dmodel #Day5
相信有在接觸資訊方面的人們都對Augmented Reality(AR)不陌生,多少都有聽過,但你是否有想過了解過其中的道理呢?這邊就以Swift語法帶著各位對AR又有更進一步的瞭解,並在七天中一步一步的實作出簡易的AR App吧!






Related Posts

深入學習 LSD-SLAM 番外篇 - RDS X RTAB-Map

深入學習 LSD-SLAM 番外篇 - RDS X RTAB-Map

Day02 重裝待發

Day02 重裝待發

記一個  Longitudinal vehicle dynamics 的問題

記一個 Longitudinal vehicle dynamics 的問題



Comments