保持在摄像机视图中心的Scenekit对象(Swift)

Arm*_*min 5 math 3d ios scenekit swift

所以我的SceneKit项目中有一个可以自由旋转和移动的摄像头,我有一个物体,在某些情况下,需要与摄像机保持恒定的距离并始终位于其视图的中心位置无论相机如何旋转.不幸的是,我是新手,SceneKit不知道如何做到这一点.

所以我正在寻找的关键事项是:

  1. 如何使对象始终与相机保持相同的距离

  2. 如何使对象始终位于摄像机视图的中心,无论它看起来是什么方向

目前,相机和物体(SCNNode具有盒子几何形状)都是同一场景的孩子.

我正在编码swift所以我更喜欢使用它的答案,但如果你有一个解决方案objective-c,那也是有效的.

谢谢你!

Hal*_*ler 3

考虑一下在现实世界中如何解决这个问题。抓住适当长度的二乘四。使用胶带将球连接到一端,并将相机(瞄准球)连接到另一端。

现在您可以随身携带该设备。球将始终位于摄像机视图的中心,并且与摄像机的距离恒定。

您可以在 SceneKit 中虚拟地构建相同的装备。创建一个新的 SCNNode 作为装备(代替两个和四个)。将球添加为子节点,位于 (0, 0, 0)。也将相机添加为子节点,位于 (0, 0, 5)(相机向下看 -Z 轴,因此这个位置应该将球放在视图的中心)。现在,您可以将装备节点移动到场景中的任何位置,并且您将获得一致的球位置。

  • 很好的比喻。虽然我在 SCNNode 上没有看到ductTape 方法。也许提交一个错误?;) (5认同)