如何旋转 SCNNode 以查看另一个节点,同时保持其与相机的滚动和俯仰水平?

How do I rotate a SCNNode to look at another node, whilst keeping its roll and pitch level with the camera?

我正在使用 ARKit 使用连接到相机节点的箭头将人们引导到物理世界中的某个位置。将 lookAtConstraint 应用于目标为我想要的位置中的节点的箭头几乎可以满足我的需要。但是,我需要阻止箭头左右滚动和上下倾斜。 Example of UI

您是否尝试过将 isGimbalLockEnabled 设置为 true 来限制滚动旋转?在 documentation Apple 中提到:"For example, when constraining a camera to follow a moving object, setting this property to true ensures that the horizon remains level from the camera’s point of view."

如果这仍然不是您想要的,您可能需要使用 class 函数 SCNTransformConstraint.orientationConstraint 编写自定义约束。您可以将约束写为次要约束,基本上限制 X 和 Z 轴上的旋转,或者您可以编写自己的具有更多限制的查看约束(在这种情况下,我建议查看 simd.look(at:) function 然后从那里限制方向轴)。

这应该可以帮助您完成大部分工作,或者如果它似乎不起作用,我可以稍后添加一些代码。祝你好运!