1

我想让我的相机在模型旋转时移动到模型后面,就像在第三人称视角游戏中一样——让它“看起来”总是在模型的背面。我提供了一个框架,因此语法可能与普通的 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 度的位置。但取而代之的是,对象围绕自身旋转,并且相机进行圆周运动,但不是围绕模型,而是在模型旁边,仍然看着同一个点。

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

4

1 回答 1

1

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

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

this.eye = this.at - rotation(Y) * d; 
于 2013-01-28T02:51:53.360 回答