我想直接在地板上放一个人物。我看到两个放置位置:


在锚的SCNNode中,并带有锚的坐标
rootNode内,以全局坐标表示,并带有height == anchor.transform[3][1]


我不会关闭跟踪,因为我发现跟踪的稳定性在前10到20秒会提高。

在第一种情况下,我的图形随机旋转(因为锚趋于增加范围,并希望在跟踪区域中适合范围的矩形)。在第二种情况下,该图可能比实际地板高或低(我可以通过在锚点的SCNNode内部添加额外的“地板”来看到它)。

我可以使用第一种情况并进行变换以补偿旋转,但是它看起来不像是正确的解决方案。

在地板上放置人物的正确方法是什么?

最佳答案

我猜想您有来自arConfiguration.planeDetection = .horizontal之类的回调的锚,其中arConfiguration被定义为let arConfiguration = ARWorldTrackingConfiguration()

当ARKit调用类似func renderer(_ renderer: SCNSceneRenderer, didAdd node: SCNNode, for anchor: ARAnchor)的回调时,应将节点添加到ARKit scene.rootNode中。对于同一平面,此回调将被称为:func renderer(_ renderer: SCNSceneRenderer, didUpdate node: SCNNode, for anchor: ARAnchor)。然后,要在ARKit场景探索期间将相同的对象放置在相同的位置,您应该在“添加”回调中进行操作。

我说对了吗?
希望这可以帮助

关于ios - SCNNode在 anchor 坐标系内旋转,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53043898/

10-16 21:10