相机在模型周围移动

时间:2013-01-27 21:54:23

标签: java opengl camera

我希望让我的相机在旋转时移动模型,就像在第三人称透视游戏中一样 - 让它“看起来”总是在模型的背面。我提供了一个框架,因此语法可能与普通的opengl有点不同。我使用标准相机

Mat4 mv = MatrixMath.lookAt(this.eyeX,this.eyeY,this.eyeZ,this.at,this.up);

并旋转我试过的相机

this.mouseRotation += 20.0f;
this.eyeX = (float) Math.sin(this.mouseRotation / 180.0f * 3.14f) * 2.0f; this.eyeZ = (float) Math.cos(this.mouseRotation / 180.0f * 3.14f) * 2.0f;

mouseRotation是模型所处的角度,因此显然摄像机也应移动到位于“圆圈”上20度的位置。但是相反,物体围绕自身旋转,相机进行圆周运动但不在模型周围,但在它旁边,仍然看着同一点。

任何想法如何使这项工作?

1 个答案:

答案 0 :(得分:1)

从您的示例中,我认为简短的回答是将this.at(应该是您的对象的位置)添加到this.eye中,以便眼睛相对于对象定位。 / p>

更详细地说,你的对象的位置是this.at,并且你希望相机在某个距离跟随对象,在对象后面说'd'。如果你有一个指向对象前面的单位向量(即一个长度为1.0的单位向量),则this.at - d应该是摄像机的位置(即this.eye)。为了让相机围绕物体旋转,首先对'd'应用旋转(在上面的示例中,您似乎围绕'Y'轴旋转[因为您只修改了eyeX和eyeZ]),这样

this.eye = this.at - rotation(Y) * d;