问题标签 [openvr]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
75 浏览

rotation - OpenVR Teleportation Problem(前向计算)

所以我正在尝试在我的 VR 应用程序(而不是 Unity)中实现远程传送。我能够从中获取每个控制器的姿势矩阵

然后我使用 glm::decompose() 来获取位置和方向(方向必须是共轭的)。然后我尝试通过将方向矩阵乘以 vec4(0,0,1,0) 从中获得正向,但结果向量不正确。我的逻辑有问题吗?

0 投票
0 回答
68 浏览

c++ - 创建单个线程时 SteamVR 帧峰值

我有一个使用 SteamVR/OpenVR 的本机 C++ 应用程序。在某些帧中,我正在创建多个线程来分配一些工作。所有这些线程必须在继续之前完成,所以我立即调用它们加入。

尽管多线程计算花费的时间不超过 1 毫秒,但帧时间(如 SteamVR 提供的帧同步窗口所示)仍然飙升至 16 毫秒以上(比例停止在 16 毫秒)。

只需在 OpenVR 示例项目hellovr_opengl中启动一个单独的空线程并在之后立即加入即可轻松复制该问题。在我的例子中,我在 MainApplication 的 RenderFrame() 函数中插入了这个代码片段,但其他任何地方都可以正常工作:

在我自己的应用程序中,我每帧都获得了高帧时间。在 OpenVR 示例项目中重现该问题时,它似乎每隔几帧就会发生一次,但仍然非常频繁:

在此处输入图像描述

我当然知道,如果我每帧重用线程,我可能应该池化线程,但无论如何,创建(和加入)单个(甚至几个)线程不应该花那么长时间。正如时间测量所示,它甚至没有接近 16 毫秒。那么为什么 OpenVR 会停滞这么长时间呢?

0 投票
1 回答
190 浏览

virtual-reality - OpenVR:找不到接口“IVRCompositor_027”

我克隆了openVR repo,直接编译了driver_sample、hellovr_dx12和hellovr_opengl项目。构建是成功的。但是两个 helloVR 应用程序都未能启动并出现错误:

除了我的猜测是变量IVRCompositor_Version可能需要适当设置之外,我没有任何线索,但是如何找到正确的版本?

在 Windows 10、VS2019 上使用 SteamVR 1.15.15。HMD (HTC Vive) 已正确设置。

0 投票
0 回答
72 浏览

c# - Window Capture C# 并创建 VR 覆盖

我正在尝试捕获一个或多个特定窗口以创建一个覆盖层,以使用openvr_api发送到虚拟现实眼镜。

问题是我在所有 Google 中都找不到任何可以让我了解在 C# 中执行此操作的最佳方法的内容。

我是 javascript、php、python 方面的专家,通常一切都集中在网络上,我知道如何用 C# 编写,但我不太了解如何创建此类应用程序的机制。

这个想法是创建一个可执行文件,它正在寻找我开发的特定应用程序的窗口(窗口是透明的,并且它们的内容以 10fps 的速率刷新),当其中一个窗口存在时,在叠加层中显示其内容在虚拟现实中。

到目前为止,我有一个搜索和查找窗口的类,并且我从它们中获得了与每个窗口相关联的IntPtr 。

所以openvr_api允许我:

  1. SetOverlayTexture : ID3D11Texture 或 GLuint (openGl)
  2. SetOverlayRaw : 不推荐
  3. SetOverlayFromFile:图像

我的问题是,我该怎么办?

  1. 每 100 毫秒创建一次图像,保存它们并通过 setOverlayFromFile 发送它们。
  2. 每 100 毫秒使用 OpenTK 创建纹理并通过 setOverlayTexture 发送它们。

捕获窗口的最佳方法是什么?我见过一个类似的应用程序,当它捕获窗口时,它周围出现一个黄色框架,它是一个非常小的应用程序,仅使用glew32.dllopenvr_api.dll,可能是用 C++ 编写的,所以我推断它捕获窗口的方式与我在这里公开的方式不同。

任何指导知道去哪里?

0 投票
1 回答
28 浏览

python - 用 PyopenVR 在某个坐标处绘制球体的最简单方法是什么?

无需纹理,纯色即可,半径也无所谓

0 投票
0 回答
41 浏览

openvr - 为什么 SteamVR 会忘记我的 OpenVR 仪表板应用程序?

我将我的应用程序设置为自动启动,这不会引发任何错误,我可以在 SteamVR 中看到我的应用程序:

在此处输入图像描述

但是,如果我重新启动 SteamVR,它似乎“忘记”了我的应用程序并且不再列出。

这是我的 VR 清单:

为什么 SteamVR 会忘记我的应用程序?

0 投票
1 回答
44 浏览

tracking - 在没有 SteamVR 的情况下获得 OpenVR 跟踪质量

是否可以通过 OpenVR 获取有关 HMD 跟踪质量的实时数据?在 SteamVR 中,如果您的头戴设备没有被正确追踪,您会看到警告。是否可以仅通过 OpenVR API 获取该信息?

0 投票
1 回答
96 浏览

c++ - SteamVR 覆盖控制器输入?

我想覆盖我的控制器输入。例如交换控制器按钮动作。我的方法是使用 OpenVR 创建一个自定义控制器,但是我无法检索我的控制器输入并将它们提供给我创建的控制器。

我知道我可以获得控制器输入,只是为了阅读。但是我如何覆盖它们,有可能吗?任何帮助将不胜感激。谢谢。

0 投票
1 回答
30 浏览

c++ - 需要 Vulkan 的 OpenVR 窗口吗?

当使用 vulkan 和 OpenVR 进行游戏时,我是否需要创建并打开一个窗口以使其工作,或者我可以将图像提交给 OpenVR?

0 投票
0 回答
53 浏览

linux - 如何使用 Godot 为 linux 导出 VR 游戏?

我正在尝试导出使用 Godot OpenVr 插件 ( https://github.com/GodotVR/godot_openvr ) 的游戏。

我能够通过编辑器使用 Github 中给出的命令启动 Godot 来测试游戏: /home/<user>/.steam/steam/ubuntu12_32/steam-runtime/run.sh

但是当我使用 Linux/X11 导出它时,生成的 x86_64 应用程序没有检测到我的 VR 耳机,即使我尝试通过 Steam 启动它。

是否有任何解决方案可以制作不需要用户进一步操作的自给自足的可执行文件(或至少是目录)?