如何解决iOS ARView.hitTest 限制为最大 100 米
我发现 ARView.hitTest
的距离限制为 100 米。
所有位于 100m 以上的物体,无论大小,均无法识别。
有什么办法可以解除封锁吗?
let hitTest = arView.hitTest(point,query: .any,mask: .all)
解决方法
您说得对,目前 hitTest(_:query:mask:)
实例方法的距离限制是 100 米。但是您可以实现方法 raycast(from:to:)
,允许您从任何场景点向任何方向发射光线,即使距离为 10K 米。
override func touchesBegan(_ touches: Set<UITouch>,with event: UIEvent?) {
let cameraPosition = arView.cameraTransform.translation
let castHits = arView.scene.raycast(from: cameraPosition,to: [0,-10000])
guard let hitTest: CollisionCastHit = castHits.first else { return }
print(hitTest.distance)
}
更新:
此外,正如@Sacha 所建议的,我们可以使用实例方法 ray(through:) 来确定光线在视图的 2D 空间中通过给定点的位置和方向。它返回适合 (origin: SIMD3<Float>,direction: SIMD3<Float>)?
方法参数的可选元组 raycast(from:to:)
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。