作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我用 OpenGL (C++) 制作了一款 FPS 游戏。我想将枪之类的武器对准相机,以便她随相机移动和旋转。
通过从 View 矩阵中移除平移部分,我已经实现了武器随相机移动,因此武器始终处于同一位置。
所以我删除了翻译部分(我使用 OpenGL Mathematics (GLM) ):
view = glm::mat4(glm::mat3(view));
问题是武器不随相机旋转。这意味着当我启动程序时,枪是正确对齐的,但如果我转身,武器不会跟着我转,所以我再也看不到她了。
谁能帮忙把武器固定在相机上?
最佳答案
您必须在 View 空间而不是世界空间中绘制“武器”。这意味着“武器”不能被 View 矩阵转换。
通过 Identity matrix 初始化“武器”的 View 矩阵:
view = glm::mat4(1.0f);
请注意,场景中的对象似乎在世界中移动(相对于 View ),因为该对象由 View 矩阵变换。 View 矩阵从世界空间转换到 View 空间。 View 矩阵是该矩阵的逆矩阵,它定义了相机的位置和方向。
如果必须在 View 空间中绘制对象,这意味着对象必须保持其相对于相机( View )的位置,则必须跳过 View 矩阵的转换。对象的位置不是世界中的位置,而是相对于相机的位置。
关于c++ - 如何将武器对准相机?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55667937/
我是一名优秀的程序员,十分优秀!