如何让物体跟随相机?

Posted

技术标签:

【中文标题】如何让物体跟随相机?【英文标题】:How to make an object follow the camera? 【发布时间】:2021-01-09 22:19:26 【问题描述】:

我在 OpenGL 中有一个小场景,我想要一把剑在右边并稍微向前,就像在我的世界中一样,它需要随着我的相机移动。我完全不知道该怎么做。我唯一知道的是,当相机移动时,我必须更改剑的模型矩阵。我已经在我的相机类 3 中准备了这样的函数,用于获取相机位置、目标和向上方向,但这就是我能想到的全部:

myCamera.getCameraPosition();
myCamera.getCameraTarget();
myCamera.getCameraUp();

也许有关我的代码结构的更多信息会有所帮助。我在主循环中有一个 renderScene 和 processInput 函数。在 processInput 中,我所做的只是检查是否按下了 WASD 或是否有鼠标移动,以便移动相机。键盘按下检查如下所示:

if (pressedKeys[GLFW_KEY_W]) 
    myCamera.move(gps::MOVE_FORWARD, cameraSpeed);
    view = myCamera.getViewMatrix();

    myBasicShader.useShaderProgram();
    glUniformMatrix4fv(viewLoc, 1, GL_FALSE, glm::value_ptr(view));

在 renderScene 中我调用其他函数来渲染我的对象,比如 renderSword,它看起来像这样:

void renderSword(gps::Shader shader) 
    shader.useShaderProgram();

    glUniformMatrix4fv(swordModelLoc, 1, GL_FALSE, glm::value_ptr(swordModel));

    sword.Draw(shader);

【问题讨论】:

【参考方案1】:

只需使用它自己的转换矩阵来拔剑,该矩阵独立于世界其他地方进行管理。

【讨论】:

以上是关于如何让物体跟随相机?的主要内容,如果未能解决你的问题,请参考以下文章

相机跟随(当移动的物体超过当前移动设备的高度一半的时候,相机跟随)

相机跟随物体,旋转除了 z 轴

unity 相机跟随物体(角色)

Unity3d学习 相机的跟随

如何让相机跟随 LibGDX 中的播放器

如何让相机跟随opengl中的3d对象?