从 RayCasting 获取平面尺寸
Getting plane size from RayCasting
根据苹果的这篇文章Ray-Casting and Hit-Testing。我应该使用 RealityKit 提供的光线投射来检测表面,而不是像 Apple 所说的那样使用 ARKit 提供的命中测试
but the hit-testing functions remain present for compatibility
。但是,我无法找到一种方法来了解光线投射查询检测到的表面范围。
所以根据这个代码:
func startRayCasting() {
guard let raycastQuery = arView.makeRaycastQuery(from: arView.center,
allowing: .estimatedPlane,
alignment: .vertical) else {
return
}
guard let result = arView.session.raycast(raycastQuery).first else {
return
}
let transformation = Transform(matrix: result.worldTransform)
let plane = Plane(color: .green, transformation: transformation)
plane.transform = transformation
let raycastAnchor = AnchorEntity(raycastResult: result)
raycastAnchor.addChild(plane)
arView.scene.addAnchor(raycastAnchor)
}
我希望我正在创建的平面能够检测到平面的大小和位置。然而,这不会发生。
所以我的问题是,光线投射是否适合检测表面大小和位置。或者它只是为了检查表面上的 2d 点位置。
Apple 文档说 here:
Raycast
instance method performs a convex ray cast against all the geometry in the scene for a ray of a given origin, direction, and length.
和here:
Raycast
instance method performs a convex ray cast against all the geometry in the scene for a ray between two end points.
在这两种情况下,光线投射方法都用于检测交叉点。在这两种情况下,这些方法 return 一个 碰撞投射命中结果数组 。
这就是所有光线投射的目的。
根据苹果的这篇文章Ray-Casting and Hit-Testing。我应该使用 RealityKit 提供的光线投射来检测表面,而不是像 Apple 所说的那样使用 ARKit 提供的命中测试
but the hit-testing functions remain present for compatibility
。但是,我无法找到一种方法来了解光线投射查询检测到的表面范围。
所以根据这个代码:
func startRayCasting() {
guard let raycastQuery = arView.makeRaycastQuery(from: arView.center,
allowing: .estimatedPlane,
alignment: .vertical) else {
return
}
guard let result = arView.session.raycast(raycastQuery).first else {
return
}
let transformation = Transform(matrix: result.worldTransform)
let plane = Plane(color: .green, transformation: transformation)
plane.transform = transformation
let raycastAnchor = AnchorEntity(raycastResult: result)
raycastAnchor.addChild(plane)
arView.scene.addAnchor(raycastAnchor)
}
我希望我正在创建的平面能够检测到平面的大小和位置。然而,这不会发生。
所以我的问题是,光线投射是否适合检测表面大小和位置。或者它只是为了检查表面上的 2d 点位置。
Apple 文档说 here:
Raycast
instance method performs a convex ray cast against all the geometry in the scene for a ray of a given origin, direction, and length.
和here:
Raycast
instance method performs a convex ray cast against all the geometry in the scene for a ray between two end points.
在这两种情况下,光线投射方法都用于检测交叉点。在这两种情况下,这些方法 return 一个 碰撞投射命中结果数组 。
这就是所有光线投射的目的。