如何在arkit中使用func trackedRaycast?

问题描述 投票:0回答:1

随着时间的推移重复进行射线广播查询,以将物理环境中更新的曲面通知您。

如何在arkit中使用此功能?

func trackedRaycast(_ query: ARRaycastQuery, updateHandler: @escaping ([ARRaycastResult]) -> Void) -> ARTrackedRaycast?
ios arkit
1个回答
0
投票

首先用类似的内容定义查询

let bounds = sceneView.bounds
let screenCenter = CGPoint(x: bounds.midX, y: bounds.midY)
let query = sceneView.raycastQuery(from: screenCenter, allowing: .estimatedPlane, alignment: .horizontal)

然后使用更新处理程序启动trackedRaycast:

let trackedRaycast = sceneView.castTrackedRay(for: query, updateHandler: { results in
    guard let result = results.first else { return }
    // Do something with results
    // Maybe adjust a relevent node's position
    someNode.simdWorldPosition = result.worldTransform.position
})

然后,如果在某些时候您不再需要跟踪/更新位置,则可以停止执行updateHandlertrackedRaycast?.stopTracking()

[请注意,如果正常的射线广播由于查询约束或场景问题而失败,那么trackedRaycast也会失败,并且您的trackedRaycast对象将为nil

© www.soinside.com 2019 - 2024. All rights reserved.