【问题标题】:Camera movement around the model模型周围的相机移动
【发布时间】:2013-01-27 21:54:23
【问题描述】:

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

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

【问题讨论】:

    标签: java opengl camera


    【解决方案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; 
    

    【讨论】:

      猜你喜欢
      • 2014-07-31
      • 1970-01-01
      • 1970-01-01
      • 2019-04-16
      • 2012-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-10
      相关资源
      最近更新 更多