SCNNode在锚点坐标系内旋转

时间:2018-10-29 10:49:54

标签: ios swift scenekit augmented-reality arkit

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

  • 使用锚点坐标在锚点SCNNode
  • rootNode内,位于height == anchor.transform[3][1]的全局坐标中

我没有关闭跟踪,因为我发现跟踪的稳定性在最初的10到20秒内有所改善。

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

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

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

1 个答案:

答案 0 :(得分:0)

我想您从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场景探索期间将相同的对象放置在相同的位置,您应该执行“添加”回调。

我做对了吗? 希望这会有所帮助