【问题标题】:OpenGL camera orientation vector from model/view matrix来自模型/视图矩阵的 OpenGL 相机方向向量
【发布时间】:2012-04-25 00:24:42
【问题描述】:

我正在制作一个小游戏,我想在其中向我所面对的方向投掷一个物体。 问题是我的(相机)方向是由模型/视图矩阵决定的。这个矩阵是由系统提供的(在安卓设备上)。

如何计算矢量,该矢量将用作我抛出的物体的速度矢量?
我尝试将一些向量与矩阵相乘,但结果并没有告诉我如何实现这一点。

矩阵仅包含旋转部分(无缩放、倾斜或平移)。
我正在使用 OpenGL ES 1.1,但这可能没关系。

this answer 之后,我能够获得围绕每个轴的旋转角度,但我仍然不知道如何从中构建我的速度矢量。

编辑:我想要完成的是以任何方式旋转模型/视图矩阵,并抛出对象我面对的方式。我需要物体最终加速到地面。如果我知道我(相机)面对的确切矢量,我计算这条轨迹没有问题。

感谢您的帮助。

【问题讨论】:

    标签: opengl-es matrix euler-angles


    【解决方案1】:

    模型视图矩阵的前 3 列视图坐标系的基础。因此,您只需要第三列(或行,具体取决于您是从相机到世界,还是从世界到相机)。

    【讨论】:

    • 感谢您的回答。但是,我无法按照您描述的方式使其工作。如果我仅围绕 X 轴旋转矩阵(在 glLoadIndenity 之后),它工作正常。但是,如果我先绕 Z 旋转,然后绕 X 旋转(在 GL 中以相反的顺序),矢量仍然指向与没有 Z 旋转相同的方向。这是可以理解的,因为我看到围绕 Z 轴旋转不会改变矩阵中的第三列。
    • 您实际上是在提取列吗? OpenGL 以列的主要顺序对矩阵进行排序。因此,请尝试在您的代码中交换“行”和“列”。
    • 是的,我正在提取列。 IE。 M[8], M[9], M[10],其中 M 是 OpenGL 提供的 4x4 矩阵 (float[16])。
    • 我在提取列,但应该提取行。感谢您澄清矩阵的列/行的真正含义。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多