我知道SceneKit中存在SCNLookAtConstraint。然而,这种方法并不是我想要的。
我需要的是能够在任何特定时刻将相机指向太空中的一个点(不是节点)。
在世界坐标中有一个X,Y,Z,我需要相机旋转才能指向这一点。
这些点会随着时间的推移而改变(意味着不同的点被传递给一个方法,我需要从一个跳到另一个)。
我宁愿跳过计算eulerAngles,我看到的一些解决方案是基于分母中的trig函数和cos(角度)。通过拖动cameraNode,用户基本上可以自由旋转。
我在SceneKit中缺少任何方法吗?
答案 0 :(得分:3)
在我看来,使用节点作为目标是最简单的方法。如果您创建一个空节点(没有几何体或相机或灯光),它将不可见,您将能够使用框架为您提供的最高可用抽象。使用动画或突然跳跃将节点从一点移动到另一点。
答案 1 :(得分:3)
GLKMatrix4
方法在这里可能很有用,特别是GLKMatrix4MakeLookAt
。
给定眼睛位置(相机),您想要查看的位置,以及向上矢量,您将能够创建变换矩阵(作为GLKMatrix4
)。然后,SceneKit函数SCNMatrix4FromGLKMatrix4
会将其转换为SCNMatrix4
,您可以将其设置为相机节点的变换。