我们可以使用位掩模进行自定义的光线投射:
let hitTest = sceneView.hitTest(location, options: [categoryBitMask: bitmask])
但是现在不推荐hitTest了,我不知道如何为raycast查询设置位掩码:
let query = sceneView.raycastQuery(from: location, allowing: .estimatedPlane, alignment: .horizontal)
发布于 2021-12-19 10:41:46
SceneKit
在SceneKit中,您可以在SCNHitTestResult上下文中使用位掩码。hitTest(_:options:)
实例方法尚未被废弃,它在iOS 15.4中工作。
let sceneView = ARSCNView(frame: .zero)
enum HitTestType: Int {
case object_A = 0b00000001
case object_B = 0b00000010
}
let point: CGPoint = gesture.location(in: self.sceneView)
let bitMask = HitTestType.object_A.rawValue | HitTestType.object_B.rawValue
let results = sceneView.hitTest(point, options: [.categoryBitMask: bitMask])
附注:
目前只有*类型:)不受欢迎。
RealityKit
在RealityKit中,您可以在CollisionCastHit的上下文中使用位掩码:
let arView = ARView(frame: .zero)
let point: CGPoint = gesture.location(in: self.arView)
let (origin, direction) = arView.ray(through: point)!
let raycasts: [CollisionCastHit] = arView.scene.raycast(origin: origin,
direction: direction,
length: 50,
query: .any,
mask: .default,
relativeTo: nil)
...or是这样的:
let raycasts: [CollisionCastHit] = arView.hitTest(point,
query: .any,
mask: .default)
https://stackoverflow.com/questions/70410251
复制相似问题