如何将武器对准相机?
How to align a weapon to the camera?
我用 OpenGL (C++) 制作了一款 FPS 游戏。我想把枪之类的武器对准相机,让她随着相机移动和旋转。
我通过从视图矩阵中移除平移部分实现了武器随相机移动,因此武器始终处于相同位置。
所以我删除了翻译部分(我使用 OpenGL Mathematics (GLM)):
view = glm::mat4(glm::mat3(view));
问题是武器不随相机旋转。这意味着当我启动程序时,枪是正确对齐的,但如果我转身,武器不会跟着我转,所以我再也看不到她了。
谁能帮忙把武器固定在相机上?
您必须在视图 space 而不是世界 space 中绘制 "weapon"。这意味着 "weapon" 不能被视图矩阵转换。
通过 Identity matrix:
为 "weapon" 初始化视图矩阵
view = glm::mat4(1.0f);
请注意,场景中的对象似乎在世界中移动(相对于视图),因为该对象由视图矩阵变换。视图矩阵从世界 space 转换为视图 space。视图矩阵是该矩阵的逆矩阵,它定义了相机的位置和方向。
如果必须在视图 space 中绘制对象,这意味着对象必须保持其相对于相机(视图)的位置,然后必须跳过视图矩阵的转换。对象的位置不是世界中的位置,而是相对于相机的位置。
我用 OpenGL (C++) 制作了一款 FPS 游戏。我想把枪之类的武器对准相机,让她随着相机移动和旋转。
我通过从视图矩阵中移除平移部分实现了武器随相机移动,因此武器始终处于相同位置。
所以我删除了翻译部分(我使用 OpenGL Mathematics (GLM)):
view = glm::mat4(glm::mat3(view));
问题是武器不随相机旋转。这意味着当我启动程序时,枪是正确对齐的,但如果我转身,武器不会跟着我转,所以我再也看不到她了。
谁能帮忙把武器固定在相机上?
您必须在视图 space 而不是世界 space 中绘制 "weapon"。这意味着 "weapon" 不能被视图矩阵转换。
通过 Identity matrix:
view = glm::mat4(1.0f);
请注意,场景中的对象似乎在世界中移动(相对于视图),因为该对象由视图矩阵变换。视图矩阵从世界 space 转换为视图 space。视图矩阵是该矩阵的逆矩阵,它定义了相机的位置和方向。
如果必须在视图 space 中绘制对象,这意味着对象必须保持其相对于相机(视图)的位置,然后必须跳过视图矩阵的转换。对象的位置不是世界中的位置,而是相对于相机的位置。