如何将武器与相机对齐?

问题描述 投票:1回答:1

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

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

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

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

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

任何人都可以帮助实现武器固定在相机上吗?

c++ opengl game-engine glm-math
1个回答
1
投票

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

view = glm::mat4(1.0f);

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

© www.soinside.com 2019 - 2024. All rights reserved.