更改 Anchor 的 Y 位置以使其接地

Posted

技术标签:

【中文标题】更改 Anchor 的 Y 位置以使其接地【英文标题】:Change Y-position of the Anchor to keep it grounded 【发布时间】:2021-08-30 23:02:15 【问题描述】:

我想在地板上放一个带网的锚。有时它并不昂贵。物体和地面之间有几英寸的空间。如何更改对象的 Y 轴,使其接地。

我正在考虑检测物体下方的水平面。但是如何转换对象的位置呢?我不想把物体放在飞机上(如果飞机移动它可能会移动)

【问题讨论】:

【参考方案1】:

无论您使用的是 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 创作应用中正确定位模型的轴心点。

【讨论】:

感谢@andy fedoroff 的回答。我仍然很困惑,我怎样才能在地板上添加盒子?用户已经决定了 x 和 z 但 y 应该是检测到的平面。 使用光线投射方法。 ***.com/questions/60294367/…, ***.com/questions/56866726/… 我要试试 raycast。我想它会帮助我,我会让你知道结果:) 这是来自应用程序的屏幕截图:ibb.co/9bL6TLG Np 安迪,谢谢你的努力

以上是关于更改 Anchor 的 Y 位置以使其接地的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 bbox_to_anchor 更改图例位置

更改Autolayout Anchor约束

更改导航栏后退按钮并删除标题以使其看起来像在 ios7 中

如何更改字符串以使其对 URL 友好? [复制]

如何更改此代码以使其容易受到 CRLF 注入的影响?

更改电子表格公式以使其适用于 PHP