[ARKit使用世界射线而不是屏幕点的命中测试

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

我想实现类似ARCore's raycast method之类的东西,它在世界空间坐标中接收任意射线,而不是屏幕空间点:

List<HitResult> hitTest (float[] origin3, int originOffset, float[] direction3, int directionOffset)

[我看到ARKit本身没有那样的方法,但是无论如何,也许有人有一个主意!

谢谢。

arkit arcore raycasting hittest
1个回答
0
投票

在全新的Apple RealityKit 1.0框架中,您可以找到三种类型的Raycast方法:

ARView.raycast(from:allowing:alignment:)

此实例方法执行射线投射,其中将射线从相机中心通过视图中的点投射到场景中,并立即返回结果。您可以在ARKit 3.5中使用这种类型的raycast。

func raycast(from point: CGPoint, 
        allowing target: ARRaycastQuery.Target, 
              alignment: ARRaycastQuery.TargetAlignment) -> [ARRaycastResult]

ARView.scene.raycast(来源:方向:查询:遮罩:relativeTo:)

此实例方法针对给定的原点,方向和长度的射线对场景中的所有几何体执行凸射线投射。

func raycast(origin: SIMD3<Float>, 
          direction: SIMD3<Float>,
              query: CollisionCastQueryType, 
               mask: CollisionGroup, 
         relativeTo: Entity) -> [CollisionCastHit]

ARView.session.trackedRaycast(_:updateHandler:)

此实例方法会随着时间的推移重复射线广播查询,以通知您物理环境中的更新曲面。

func trackedRaycast(_ query: ARRaycastQuery, 
              updateHandler: @escaping ([ARRaycastResult]) -> Void) -> ARTrackedRaycast?
© www.soinside.com 2019 - 2024. All rights reserved.