如何围绕具有不同距离的LookAt点旋转相机?

时间:2014-06-09 19:39:10

标签: 3d

我有一个公式,给了我我最想要的东西。但我真正想要的是能够用距离做到这一点。让我解释一下。

以下是让相机围绕Point(LookAt点)旋转的公式。

this.Position.X = this.LookAt.X + Math.sin(angle);
this.Position.Z = this.LookAt.Z + Math.cos(angle);

根据是否按下向左或向右键,角度(上方)将被更新0.15(+或 - )。 这样可以使我的相机围绕摄像机正前方的一个点旋转。

我想要的是这个: 能够围绕外观点旋转相机(如当前行为),但允许相机根据与外观点的距离“放大”或“缩小”。

我尝试了类似下面的内容,但没有达到预期的效果:

this.Position.X = this.LookAt.X + Math.sin(angle);
this.Position.Z = this.LookAt.Z + Math.cos(angle);
this.Position.X *= distance;
this.Position.Z *= distance;

1 个答案:

答案 0 :(得分:1)

我阅读你的描述的方式,我想这会给你你想要的东西:

this.Position.X = this.LookAt.X + distance * Math.sin(angle);
this.Position.Z = this.LookAt.Z + distance * Math.cos(angle);

按照你的方式,你会将LookAt点乘以distance,这意味着它会在你缩放时移动。如果你想继续观察同一个点,但只是靠近/远离,你只需要相对于LookAt点的位置相乘。