如何让物体跟随相机?
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】:只需使用它自己的转换矩阵来拔剑,该矩阵独立于世界其他地方进行管理。
【讨论】:
以上是关于如何让物体跟随相机?的主要内容,如果未能解决你的问题,请参考以下文章