2

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

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

4

1 回答 1

2

艰难的道路

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

不过,如果我正确理解您的问题,您可能想要实现类似 DecaMove 的功能(如果我正确理解他们网站上的信息,现在可以与手机一起使用)

现在了解如何...您需要制作自己的驱动程序来捕获耳机驱动程序的输入并对其进行修改,从这里开始并阅读大多数与驱动程序相关的wiki,您将需要它,通读openvr_driver.h(代码注释在这是它拥有的最新文档)

然后阅读 openvr 的唯一官方驱动程序示例...可以在这里找到,将其用作参考,但切勿将驱动程序建立在它之上!

在文档方面就是这样,一些提示:

  • 尝试查看设备更新事件,这些事件可能包含您需要拦截的跟踪/输入数据
  • 不要触摸您的 HMD,甚至不要尝试为您的 HMD 制作包装设备!显示组件未记录在案,并且很难制作然后正常工作
  • "activateMultipleDrivers"在您的 Steam 配置中启用steamvr.vrsettings,否则您将无法使用您的驱动程序和耳机的驱动程序启动 Steamvr

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

简单的方法

如上所述,DecaMove 现在可以与手机一起使用,请参阅他们的网站了解更多信息

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

于 2021-09-30T11:06:09.067 回答