模型周围的相机移动

Posted

技术标签:

【中文标题】模型周围的相机移动【英文标题】: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 度的位置。但取而代之的是,对象围绕自身旋转,并且相机进行圆周运动,但不是围绕模型,而是在模型旁边,仍然看着同一个点。

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

【问题讨论】:

【参考方案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; 

【讨论】:

以上是关于模型周围的相机移动的主要内容,如果未能解决你的问题,请参考以下文章

工业相机需不需要标定?

[Unity] 在Unity中实现小地图(Minimap)

OpenGL边用边学------2 经典照相机模型

需要帮助在 OpenGL 中移动相机

AR 对象不应随 AR 相机 Vuforia Unity3d 移动

threeJS 导入模型(不确定尺寸)后如何确定相机位置及物体缩放比例