我們能夠使用位掩碼進行自定義光線投射:
let hitTest = sceneView.hitTest(location, options: [categoryBitMask: bitmask])
但是現在不推薦使用 hitTest 并且我不知道如何為光線投射查詢設定位掩碼:
let query = sceneView.raycastQuery(from: location, allowing: .estimatedPlane, alignment: .horizontal)
uj5u.com熱心網友回復:
場景套件
在 SceneKit 中,您可以在 [SCNHitTestResult] 的背景關系中使用位掩碼。hitTest(_:options:)
實體方法尚未棄用,它適用于 iOS 15.2。
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])
聚苯乙烯
目前只棄用了hitTest(_:types:)。
現實套件
在 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)
...或者這樣:
let raycasts: [CollisionCastHit] = arView.hitTest(point,
query: .any,
mask: .default)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/386658.html
上一篇:WidgetKit-API呼叫