SteamVR 覆盖控制器输入?

SteamVR override Controller inputs?

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

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

艰难的道路

制作自己的包装器驱动程序,这并不容易,openvr 驱动程序 API 大部分没有文档记录(并且在 Linux... 上几乎没有功能)并且非常混乱

不过,如果我正确理解你的问题,你可能想要实现类似 DecaMove 的东西(如果我正确理解来自 their website 的信息,现在可以与 phone 一起使用)

现在介绍如何...您需要制作自己的驱动程序来捕获耳机驱动程序的输入并对其进行修改,开始 here and read most of the driver related wiki, you'll need it, read through openvr_driver.h(其中的代码注释是它拥有的最新文档)

然后通读openvr唯一的官方驱动程序示例...可以找到here,将其用作参考,但永远不会将您的驱动程序基于它!

关于文档,就是这样,一些提示:

  • 尝试查看设备更新事件,那些可能有您需要拦截的 tracking/input 数据
  • 不要碰你的 HMD,甚至不要尝试为你的 HMD 制作包装器!显示组件未记录,因此很难使其正常工作
  • 在您的 Steam 配置中的 steamvr.vrsettings 中启用 "activateMultipleDrivers",否则您将无法同时使用您的驱动程序和耳机的驱动程序启动 Steamvr

如果你最终选择制作自己的驱动程序,我祝你好运

简单的方法

如上所述,DecaMove 现在可以与 phone 一起使用,请访问他们的网站了解更多信息

(我也想推荐 openvr 输入模拟器,但看了他们的代码后我意识到它有多老,而且它似乎也被遗弃了......所以是的,不要使用它)