本文主要是介绍openGL连接vive头盔,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
openGL连接vive头盔
- 1 openVR
- 1 整体框架主要是三部分:
- 2 openVR资料介绍和库的下载
- 2 配置VR头盔硬件
- 1 安装空间定位器
- 2 将头盔和电脑连接
- 2 steam VR的操作
- 1 安装steam
- 2 安装steam vr
- 3 打开steam vr
- 3 OpenGL和vive的连接
- 3 总结
- 5 下图这个问题是由于什么导致的呢?
- 参考文献
1 openVR
openVR这个三方库要将其用在自己的openGL渲染程序中,其实就是做个左右眼的两个渲染场景,后面会显示在vive头盔的左右显示器中,大概做的工作就是把之前的工作任务复制三份,其中一份是为了自己不在头盔中运行的时候能够显示出来,可以用来调试代码,
1 整体框架主要是三部分:
(1)创建vr,启动vr
//创建vrVRDriver * vrdriver;if (hasVR){vrdriver = new VRDriver();}//========================//启动vrif (hasVR){if (!vrdriver->Init()){cout << "failed to init VR" << endl;}windowWidth = vrdriver->m_nRenderWidth;windowHeight = vrdriver->m_nRenderHeight;}else{windowWidth = WINDOW_WIDTH;windowHeight = WINDOW_HEIGHT;}
(2)左右眼渲染程序:
(3)提交
glDisable(GL_BLEND);vrdriver->VREnd(false);vrdriver->Submit();glBindFramebuffer(GL_FRAMEBUFFER, 0);
当然其中还有一些细节,可以完全模仿别人的程序进行完全的替换;
2 openVR资料介绍和库的下载
openVR介绍
https://partner.steamgames.com/doc/features/steamvr/openvr
openVR库下载的地方
https://github.com/ValveSoftware/openvr
2 配置VR头盔硬件
硬件部分的任务有两个:安装空间定位器和将头盔和电脑连接,把这两个步骤做完后进行检验是否正确的的步骤就是看其状态指示灯是否是绿色,有一个不是绿色都有故障;
1 安装空间定位器
- 确保与另一个定位器之间视线不受阻挡。每个定位器的视场为 120 度。应当将其向下倾斜30 到 45 度。要固定定位器的角度,请拧紧夹紧环。
- 为每个定位器接上电源线,然后分别插入电源插座以开启电源。状态指示灯应显示绿色。
- 连接定位器并设置频道。(PS:请勿在定位器开启后移动位置或调整角度,可能会中断追踪过程。)
2 将头盔和电脑连接
如下图,
在连接的时候碰到了一个问题
SteamVR提示 “头戴显示器未连接正确”(故障 208)
这个问题最后是因为自己将PB线连接到了另外一个PB接口,应该连到显卡的pb接口上;不知道显卡的pb接口那就百度一下,这个要注意
2 steam VR的操作
1 安装steam
https://store.steampowered.com/
2 安装steam vr
3 打开steam vr
- 要是前面都没有问题的话,打开steam vr会直接出现下面这样子的
- 进行运行房间设置
进入下面这个界面:
点击下一步:
接下来可以参考下面的步骤进行接下来的匹配
https://www.jianshu.com/p/965badfdce58
【显示器映射】如下:
作用就是在OpenGL程序启动后可以在这个视图中显示
3 OpenGL和vive的连接
上面的都搞定了,其实只要头盔不报错,上面的openvr代码框架没有错,你就放心大胆的点击下面的这个地方吧,你就可以实现自己openGL和vive头盔的连接;
3 总结
总的来说,这个过程没有什么难度,首先要相信自己,遇到问题了问别人,网上查吗,问题都是可以解决的;
整个过程,建议采取以下步骤:
- 首先将你的openvr的驱动和框架部署到你的OpenGL程序中
- 然后将头盔连接到你的pc,保证你的pc有相应的接口,比如我的电脑没有pd和hdmi接口,导致换了台电脑;
- 然后安装steam vr
- 最后安装空间定位器,因为在实验室地方太小,这个定位器放自己旁边会导致自己的空间变小,所以建议放最后
5 下图这个问题是由于什么导致的呢?
目前主要解决的是这个问题,这问题解决了,接下来要解决的是手柄按钮的问题;这个问题解决了那就是自己在正常渲染中的功能在vr中实现了;
目前已经解决了:
原因如下:
if (hasVR){if (!vrdriver->Init()){cout << "failed to init VR" << endl;}windowWidth = vrdriver->m_nRenderWidth;windowHeight = vrdriver->m_nRenderHeight;}else{windowWidth = WINDOW_WIDTH;windowHeight = WINDOW_HEIGHT;}
这段代码的意思就是使用vr头盔的时候,显示的宽度和高度是vrdriver->m_nRenderWidth和vrdriver->m_nRenderHeight;这个逻辑没有问题,但是在后面所有的代码,我在修改代码的时候忘了将WINDOW_WIDTH和WINDOW_HEIGHT修改成windowWidth以及windowHeight;这个导致在头盔中还是使用PC端的windowWidth和windowHeight;
参考文献
[1]. https://www.jianshu.com/p/965badfdce58
[2] http://news.4399.com/vr/jiaocheng/v/m/697170.html
这篇关于openGL连接vive头盔的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!