【问题标题】: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);
}

【问题讨论】:

    标签: c++ opengl glfw glm-math


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2012-10-11
      • 2016-09-28
      • 2015-12-21
      • 2022-01-11
      • 1970-01-01
      • 2022-01-20
      • 1970-01-01
      • 2019-08-19
      • 2014-08-23
      相关资源
      最近更新 更多