【问题标题】:How to align a weapon to the camera?如何将武器对准相机?
【发布时间】:2019-04-13 17:08:10
【问题描述】:

我用 OpenGL (C++) 制作了一个 FPS 游戏。我想将枪之类的武器对准相机,以便她随相机移动和旋转。

我已经通过从视图矩阵中移除平移部分来实现武器与相机一起移动,以便武器始终处于同一位置。

所以我删除了翻译部分(我使用OpenGL Mathematics (GLM)):

view = glm::mat4(glm::mat3(view));

问题是武器不随相机旋转。这意味着当我启动程序时,枪会正确对准,但如果我转身,武器不会跟着我转,所以我再也看不到她了。

谁能帮忙把武器固定在相机上?

【问题讨论】:

    标签: c++ opengl game-engine glm-math


    【解决方案1】:

    您必须在视图空间而不是世界空间中绘制“武器”。这意味着“武器”不能被视图矩阵转换。
    Identity matrix 初始化“武器”的视图矩阵:

    view = glm::mat4(1.0f);
    

    注意,场景中的一个对象似乎在世界中移动(相对于视图),因为该对象是由视图矩阵变换的。视图矩阵从世界空间转换到视图空间。视图矩阵是该矩阵的逆矩阵,它定义了相机的位置和方向。
    如果必须在视图空间中绘制对象,这意味着对象必须保持其相对于相机(视图)的位置,则必须跳过视图矩阵的变换。物体的位置不是世界上的位置,而是相对于相机的位置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多