【发布时间】:2021-08-30 23:02:15
【问题描述】:
我想在地板上放一个带网的锚。有时它并不昂贵。物体和地面之间有几英寸的空间。如何更改对象的 Y 轴,使其接地。
我正在考虑检测物体下方的水平面。但是如何转换对象的位置呢?我不想把物体放在飞机上(如果飞机移动它可能会移动)
【问题讨论】:
标签: swift augmented-reality scenekit arkit realitykit
我想在地板上放一个带网的锚。有时它并不昂贵。物体和地面之间有几英寸的空间。如何更改对象的 Y 轴,使其接地。
我正在考虑检测物体下方的水平面。但是如何转换对象的位置呢?我不想把物体放在飞机上(如果飞机移动它可能会移动)
【问题讨论】:
标签: swift augmented-reality scenekit arkit realitykit
无论您使用的是 RealityKit 还是 ARKit,您肯定需要使用平面检测功能。如果您的应用在 RealityKit 中检测到飞机,它将自动跟踪飞机目标。而且我应该说检测到的飞机没有移动(您正在使用世界跟踪,不是吗),但它可能会被扩展。
AnchorEntity(.plane([.any], classification: [.any], minimumBounds: [0.5, 0.5]))
如果您在 ARKit/SceneKit 中使用平面检测功能,则必须另外实现 session(_:didAdd:) 或 renderer(_:didAdd:for:) 委托方法(因为 ARKit 无法自动完成工作):
let config = ARWorldTrackingConfiguration()
config.planeDetection = [.horizontal, .vertical]
sceneView.session.run(config)
func session(_ session: ARSession, didAdd anchors: [ARAnchor]) {
guard let planeAnchor = anchors.first as? ARPlaneAnchor else { return }
}
对于手动放置对象,请使用raycasting。
此外,您必须在 3D 创作应用中正确定位模型的轴心点。
【讨论】: