标签: openvr

读取Steam控制器覆盖并将其渲染到SteamVR中的VR场景

背景

使用Steam控制器时,您可以将触摸板配置为复杂的菜单,当您开始触摸它们时,这些菜单会显示在屏幕上.这些菜单对于具有许多控件的游戏非常方便.它们看起来像这样:

径向菜单 触摸菜单

但是,当在SteamVR中玩游戏时,这些叠加中没有一个出现在VR中.它们仅出现在与其一起呈现的桌面窗口上.

这是一个已知的错误或缺失的功能.我的目标是为它编写一个修复程序.但事实证明这很棘手.

我的问题

我知道如何在OpenVR/SteamVR中渲染叠加层.Valve的文档对我来说已经足够了.但我没有想出一个很好的方法来捕捉在游戏窗口顶部绘制的叠加层.

我脑子里有两个想法.但我不知道如何正确实施它们.

捕获叠加层

我对Steam Controller Overlay的技术细节一无所知.但是我认为它与Steam Overlay具有相同或非常相似的实现并不是一个错误的假设.

根据Steamworks API文档,Steam监听应用程序触发的Present/SwapBuffers调用并相应地刷新覆盖.(参见https://partner.steamgames.com/doc/api/ISteamUtils#BOverlayNeedsPresent)我的猜测是,Steam获取窗口的hWnd,用其DC创建一个OpenGL上下文,并在每次收到SwapBuffers时呈现给它打电话给它听.

但这就是故事的结局.我不知道如何真正阅读Steam在其上呈现的内容.我曾想过将自己挂钩到绘图消息队列中,Steam正在使用并捕获在绘制叠加层之前和之后窗口上呈现的内容.我还想过欺骗Steam认为一个带有绿色背景的不同窗口是它应该呈现的那个然后只是捕获它的内容.但这些只是对野外的猜测.我不知道如何实现这一点.

使用色度键控

选定按钮具有非常特定的平坦和不透明的蓝色调.我可以制作窗口的截图,然后只拍摄具有这种特定颜色的像素.缺点很明显.所有其他区域都是半透明的,因此不适合色度键控.抗锯齿文本也是如此.幸运的是,您可以更改图标及其颜色,如下图所示.所以这会有点工作,但它会非常难看.

有没有人对我的问题有更好的想法或解决方案?

在此输入图像描述

opengl window screen-capture steamworks-api openvr

7
推荐指数
0
解决办法
353
查看次数

如何确定SteamVR_TrackedObject是Vive Controller还是Vive Tracker

确定a SteamVR_TrackedObject是Vive Controller还是Vive Tracker 的最佳方法是什么?


当0控制器和1个Tacker配对时:

跟踪器作为Controller (right)CameraRig.

当1个控制器和1个Tacker配对时:

Tracker设置为Device 2.

当2个控制器和1个Tacker配对时:

创建第三SteamVR_TrackedObject和将其放置在所述CameraRigobjects阵列.此外,当控制器失去跟踪时,跟踪器也是如此.


在每种情况下,跟踪器最终都是不同的SteamVR_TrackedObject.index.检查a SteamVR_TrackedObject是跟踪器还是查找跟踪器的最佳方法index是什么?

c# unity-game-engine virtual-reality openvr htc-vive

6
推荐指数
1
解决办法
6069
查看次数

OpenVR、SteamVR 和 Unity3D 如何协同工作?

我试图了解 Vive 的 VR 平台堆栈,以及它的游戏是如何开发的。我正在努力理解 openVR、steamVR 和 Unity 到底在什么地方适合图片。

到目前为止,我的理解是:

openVR - Hardware independent layer providing APIs for peripheral access. 
         That is it can provide access to either Oculus or Vive hardware via 
         a defined interface.

SteamVR - Provides access to hardware to games developed either in unity or
          unreal.
Unity3D - A game engine to develop games.
Run Code Online (Sandbox Code Playgroud)

如果有人可以纠正我,我将不胜感激。或者如果我的理解是正确的,那么为什么不能unity 3D直接通过openVR.

unity-game-engine steam openvr

5
推荐指数
1
解决办法
9140
查看次数

使用Visual C++未正确安装QtQuick

我们正在尝试在visual studio 2015中运行OpenVR模拟器(链接https://github.com/matzman666/OpenVR-InputEmulator).构建成功.但是我们得到了错误

在此输入图像描述

似乎Qt库未在我们的机器中正确安装.我们已经尝试重新安装Qt库.下面的日志表明没有安装QtQuick.但是,我们已经完全安装了Qt 5.7.0.任何人都可以提供一些线索或帮助吗?

在此输入图像描述

qt visual-c++ qml qt-quick openvr

3
推荐指数
1
解决办法
140
查看次数

Cmake 无法识别 MSVC 编译器

这是我第一次遇到这个错误。

我正在尝试克隆openvr并按照他们的说明运行 hello opengl 示例:

cd samples
mkdir build
cd build
cmake .. -G "Visual Studio 14 2015 Win64" -DCMAKE_PREFIX_PATH=C:/Qt/5.6/msvc2013_64/lib/cmake
Run Code Online (Sandbox Code Playgroud)

我得到:

$ cmake .. -G "Visual Studio 14 2015 Win64" -DCMAKE_PREFIX_PATH=C:/Qt/5.6/msvc20                                                                       13_64/lib/cmake
-- The C compiler identification is MSVC 19.0.24215.1
-- The CXX compiler identification is MSVC 19.0.24215.1
-- Check for working C compiler using: Visual Studio 14 2015 Win64
-- Check for working C compiler using: Visual Studio 14 2015 Win64 -- works
-- Detecting …
Run Code Online (Sandbox Code Playgroud)

c++ cmake visual-studio-2015 openvr

3
推荐指数
1
解决办法
4484
查看次数