gpt4 book ai didi

c++ - openvr:向 View 方向移动

转载 作者:行者123 更新时间:2023-12-02 10:20:56 27 4
gpt4 key购买 nike

我正在使用openvr和opengl编写应用程序,并且我希望相机朝其所看的方向移动。因此,当您戴上 Helm 并朝某个方向看时,虚拟相机应朝该方向飞行,以便您可以四处移动。

因此,openvr会通过调用VRCompositor()->WaitGetPoses来提供hmd的位置,这应该类似于 View 矩阵的逆函数,因此,如果我提取矩阵的第三个库伦,我应该获得 View 方向,然后我可以翻译我的 View 沿该方向的模型矩阵以移动场景。

m_mat4HMDPose = VRCompositor()->WaitGetPoses;
m_mat4HMDPose = inverse(m_mat4HMDPose);
vec4 direction = m_mat4HMDPose * vec4(0.0, 0.0, -1.0, 0.0);
model = translate(model, vec3(direction.x, direction.y, direction.z));

这似乎并非完全错误,但这并不适用于所有方向。有时我向左看,但我被翻译为向右,反之亦然。向上/向下也会发生这种情况,并且当Im绕着z轴旋转hmd时,平移也会改变。

我还尝试遵循本教程 https://www.youtube.com/watch?v=QREKO1sf8b8的统一性,并且使运动与统一性保持一致,但是我无法将代码转换回以与我的opengl应用程序一起运行。我尝试实现欧拉和四元数转换,但没有成功。

我感觉我需要用一个附加矩阵变换方向 vector ,因此它将一直指向正确的方向,但是我无法弄清楚o_o

有谁知道错误是什么,或者知道如何实现这一运动?

最佳答案

好吧,我发现了一个错误,我需要将方向与hmd姿势的倒数相乘,所以vec4 direction = inverse(m_mat4HMDPose) * vec4(0.0, 0.0, 1.0, 0.0);

关于c++ - openvr:向 View 方向移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60210716/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com