[英]How to detect plane surface using ARKit
我正在創建一個使用ARKit測量物體高度的應用程序。 對於瓶子,鋼筆和顯示器之類的小物體,它幾乎可以顯示准確的結果。 但是當我嘗試一些大的物體時,例如人的身高,門的高度,每次測量都顯示不同的結果。 我認為這是由於表面平面檢測。
有沒有更好的解決方案來檢測飛機? 或尋找高度的任何其他選擇?
還有關於ARKit視覺框架的信息嗎?
查看以下代碼,我認為它將幫助您了解度量的工作原理:
class ViewController: UIViewController, ARSCNViewDelegate, ARSessionDelegate {
@IBOutlet weak var resultLabel: UILabel!
@IBOutlet weak var aimLabel: UILabel!
@IBOutlet weak var notReadyLabel: UILabel!
@IBOutlet var sceneView: ARSCNView!
let session = ARSession()
let vectorZero = SCNVector3()
let sessionConfig = ARWorldTrackingSessionConfiguration()
var measuring = false
var startValue = SCNVector3()
var endValue = SCNVector3()
override func viewDidLoad() {
super.viewDidLoad()
setupScene()
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
UIApplication.shared.isIdleTimerDisabled = true
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
session.pause()
}
func setupScene() {
sceneView.delegate = self
sceneView.session = session
session.run(sessionConfig, options: [.resetTracking,
.removeExistingAnchors])
resetValues()
}
func resetValues() {
measuring = false
startValue = SCNVector3()
endValue = SCNVector3()
updateResultLabel(0.0)
}
func updateResultLabel(_ value: Float) {
let cm = value * 100.0
let inch = cm * 0.3937007874
resultLabel.text = String(format: "%.2f cm / %.2f\"", cm, inch)
}
func renderer(_ renderer: SCNSceneRenderer, updateAtTime time: TimeInterval) {
DispatchQueue.main.async {
self.detectObjects()
}
}
func detectObjects() {
if let worldPos = sceneView.realWorldVector(screenPos: view.center) {
aimLabel.isHidden = false
notReadyLabel.isHidden = true
if measuring {
if startValue == vectorZero {
startValue = worldPos
}
endValue = worldPos
updateResultLabel(startValue.distance(from: endValue))
}
}
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
resetValues()
measuring = true
}
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
measuring = false
}
}
如您所見,沒有.planeDetection
結構。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.