-
Notifications
You must be signed in to change notification settings - Fork 37
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
SteamVR Input API and support for non-Vive wand controllers #14
Comments
Hey, is There a way to use it in steamvr with Oculus controllers ? VR cockpit Work but i can't use the touch in game. They are not conected and i can't bind anything on them. |
Some people have suggested running ED in Windows 7 compat mode helps things work better. Most of the bindings should work, it's just the POV switches that only have trackpad bindings. |
Thx for your answer, i managed to make the A / X / Y and the triggers to Work, but the two joysticks and the B button don't Work on the Oculus touch.Le 17 déc. 2018 22:28, Daniel Friesen <[email protected]> a écrit :Some people have suggested running ED in Windows 7 compat mode helps things work better. Most of the bindings should work, it's just the POV switches that only have trackpad bindings.
—You are receiving this because you commented.Reply to this email directly, view it on GitHub, or mute the thread.
|
Running with rift here, it doesn't detect the game unless i run in compatibility for win7, which forces it to run through steamvr. Otherwise it appears to run natively through rift (doesnt show up on steamvr status). Problem is, I can't navigate any menus using the rift controllers when running through steamvr it seems? The preset doesn't show up, and the thumbsticks don't navigate the menus/cockpit panels. "Occulus touch" preset is gone from controls options menu too. I've cloned the repo and had a quick look...I'm a c# dev happy to help. Thinking skip steamvr watch processes directly to detect...or maybe there's a way to map the rift thumbstick to arrow keys or something... |
Got it detecting without the steamVR events, but maybe obviously that doesnt work :D |
@flavourous My issues are becoming disorganized spaghetti. Could you make a new one for your issue.
Could you include display mirror screenshots and a screenshot of the overlay's desktop view. |
I was part way through work on this. However it's currently completely blocked by ValveSoftware/steamvr_unity_plugin#455. |
😫It turns out that my issue was actually caused by a race condition in the code. My SteamVR Input actions are now back to working. I may get back to the project in a few weeks after I get over how such a stupid little bug slipped by and stopped me for so long. |
SteamVR Input is getting closer to finished. However I still only have a Vive controller to work with. So it's difficult to create any |
Ok, I'm now at the point that the lack of hardware is a critical issue. I have the SteamVR Actions system working with fully implemented support for the Vive Controllers, all parts of the legacy input system (except perhaps poses) completely replaced. But I cannot create Would anyone with a Rift (S) or Index controller care to test out the And would anyone with a WMR care to create a binding file for the WMR controllers. Because I cannot generate even an untested bindings file for WMR like I can Oculus Touch and Index. Which means if I release WMR support is going to go from "bad" to "nonexistent". Ultimately things would be best if I were given access to a bunch of developer hardware so I could test and develop all of this myself. |
Why not get in touch with Oculus direct via their developer channel explaining your project. [https://developer.oculus.com/] I'm sure they'd not let a lack of a few little bits of their hardware prevent you from offering what you already have for Vive. Sell it to them. |
I've made an experimental build for Rift and Index users to test and make sure I didn't break any of the Oculus Touch/Knuckles handling. https://github.com/dantman/elite-vr-cockpit/releases/tag/v0.6.0-steamvr-input-experiment |
I have an Index. I'll try to get to testing it tonight. It would be amazing to be able to map the thumbpads, thumbsticks and buttons to whatever we want in Elite! Using the left hand thumbstick to control strafing would be amazing. |
I tried my Index on 0.6.0. I had to update Vjoy to use the 0.6.0 release. Seems to work mostly just as well as last release of Elite VR Cockpit.
I'll have to mess around with it more and see if I can find more things to nit pick. 😉 Otherwise it's working pretty good, just needs more functionality, custom-ability, and polish. |
|
Yup the trackpad sensitivity is still tuned to the Vive trackpads. I'm thinking of getting the controller name and using that to apply different sensitivity levels. However that of course won't happen till I have Index controllers and WMR hardware so I can decide what the right values are and what strings OpenVR reports as the names of those devices.
That's strange. The whole point of this is to use the new SteamVR Input API, so it shouldn't be using legacy mode. And I should already have Index bindings that assign
This is also strange. I'm not sure if there's any other changes I've made since 0.5 that could be related.
That sounds like what happens when you hit the overlay limit. I also got flickers of the edit panel when I had too many overlays. Edit mode adds 4 overlays, so if you have 61-64 overlays already turning on edit mode will immediately exceed the overlay limit.
B is now properly being used for The problem is I have no clue what button(s) I should map the seated position reset to for Index users, since it doesn't have an application menu button.
No, I wasn't really planning to. The trackpads/sticks are going to be getting ui navigation bindings in the galaxy map. To control rotate/zoom/angle I made a whole map control UI you interact with using the trigger.
6DOF is enabled when landing gear is down or flight assist is on. That issue is #15, eventually we'll have options to control what situations the 6DOF controller is available.
That's good. The bindings panel does have options to tune the point when grip is activated.
Same limit, this limit isn't part of EVRC. It's built into SteamVR. The only thing I can do that affects this limit is to use more/less overlays for the non-button controls. So the limit will change between SteamVR versions, not between EVRC versions (unless I add a new feature, which will likely just make the limit smaller).
I'm still not sure about using trackpads/thumbsticks for axises. But I still am thinking of adding a 3DOF controller (#51) both 6DOF and joystick styles; after I create a way to enable/disable individual controls.
Yes, there is a hardcoded limit. It's not possible to send instantaneous keypresses to ED. To send an instantaneous keypress not associated with the user pressing/releasing a physical control (i.e. trackpad swipes), I have to hold down one of keyboard keys long enough for ED to hear the press event before I send the key release event, otherwise ED never receives the keypress. So basically trackpad swipes are hard limited by how long I have to hold down a keypress for Elite Dangerous to hear it.
Yes, there is a
Long term this shouldn't be an issue. I do use the trackpad swipes for small distances of menu navigation. But I actually don't use it for long scrolls through the menu. Instead I press and hold a direction on the trackpad. Elite Dangerous scrolls faster through the menu when you hold down an arrow key than when you press an arrow key over and over. So long term this won't be an issue since I plan to also map the Knuckles joystick to menu navigation in the future. So in the future you can fast scroll using the joystick instead. |
It'll be nice when SteamVR gets the overlay increase to 128 objects. Then I might not have to rely on using VoiceMacro or keyboard anymore. Well I'd still use VoiceMacro a little because it's fun and useful. Mostly not having to use keyboard since it's a pain to take my Index controllers off and on again to do menus.
|
Wait, where do you actually see legacy mode enabled? The 0.6 experimental version is entirely action based, it doesn't use the legacy buttons API at all. If you can so much as press a holo button or grab a joystick then the actions are working and it's not running in legacy mode. Are you going into the controller configuration area in SteamVR settings and looking at the Elite Dangerous configuration? That's the wrong location. The overlay and Elite Dangerous have completely separate controller configurations. ED having legacy mode enabled does not stop EVRC from using the new Input API. However EVRC's configuration is not accessible from the SteamVR settings panel. To my understanding SteamVR pretty much won't show anything in the list of games there unless you install it from Steam, so you won't see the overlay there. If you feel like installing the Unity editor, try out the latest version of the
Framerate drops in Elite Dangerous or just overlay slowness? The flickering still sounds like what happens when the overlay limit is exceeded.
I've already got enough button press actions to map all controller buttons to joystick/throttle buttons. And the ability to freely map trackpad swipes and presses to 2 POVs individually. i.e. I have a full set of {Touch,Position,Press} actions for both POV1 and POV2 and also a POV#Button action to handle scenarios where press shouldn't be a d-pad style trackpad press. For example the Vive's trackpad binding works by binding POV1Position/POV1Press to a trackpad binding and POV2Position/POV2Touch to another trackpad binding. So swipes go to POV2 directions, edge presses go to POV1 directions, and center presses are a POV1 button press. Though Cosmos is making me think I may need to add an Thumbstick will similarly be able to freely map to POV1 or POV2 (i.e. So you can map the Index thumbstick to POV1 directions and POV1 press, and the Index track button swipes to POV2 directions and press to POV2 press). But that won't happen till I have controllers with joysticks (anything Touch, Index, or WMR) so I can actually develop code to handle how SteamVR maps joysticks to 2D float vectors. I still have no plans to allow for arbitrary bindings in ship mode when you're not grabbing anything. The number of buttons/POVs would explode, the trigger would conflict, and it might get away with alternatives I hope are possible to implement.
Haptic feedback is #6. It is something we're definitely missing. |
Ok, I'm going to consider the It doesn't sound like it's made anything critically broken. No-one seems to want to bother testing the Oculus controllers. There is still no joystick support or full menu/galaxy navigation on non-Vive controllers yet. But I think it's time I finish working on SteamVR Input and get back to working on other features and bugs. In particular I've been holding off on relicensing, switching InputSimulator, fixing a recenter bug, and debugging some issues in the Elite Dangerous detection code – because of this branch. |
I have an Oculus Quest with Touch Controllers. I am currently using the Virtual Desktop app with SteamVR support (sideloaded) over WiFi which works pretty well. I tried the v0.6.0 SteamVR input experiment with vJoy v219 yesterday for about an hour. The thumbsticks didn't respond at all in default settings, but I didn't check the control settings ingame if they were configured. I could only navigate the the UI menus when unlocking edit mode and switching to menu mode. Then i could tap/touch the POV hat directions for navigating. Other then this it worked pretty well and I was especially surprised about the good axis sensitivity when grabbing the virtual HOTAS and turning the ship in all directions. One problem was the occasional disappearing of the main overlay menu which could only be brought back by guessing were it is and hitting it so it then appeared together with the tooltip. Almost the same happened to the actions overlay menu but it kind of flickered and then went back to normal after 1-2 seconds of strobing. This repeats about twice a minute. The action buttons I layed out in the cockpit didn't have this problem. I will try it again tomorrow evening (CET) and verify the control settings first. Maybe in a month I will get a working USB cable to use Oculus Link which will present the Quest as a Rift to the system and maybe make a difference. |
And the Galaxy map overlay (arrows for all directions to move) didn't work at all. I tried to hit it with the virtual controller and press the trigger. Maybe I have the wrong keyboard keys assigned to navigate the map? |
Thumbsticks are currently not supported. I do not own any controllers with thumbsticks yet so I cannot develop actions that work with joysticks.
Could you check the desktop window. This sounds like what happens when SteamVR's overlay limit is exceeded.
You do need to bind the galaxy map's axis to the map controls. Turn on edit+menu mode and press the galaxy map icon in the upper right corner, that will let you bind galaxy map axis in the controls panel. |
Is it possible to map them to additional axes in vJoy? (https://docs.unity3d.com/Manual/OpenVRControllers.html) |
Not really sure what you're asking.
If you're asking how the thumbsticks are going to work when I do support them. They are going to work pretty similarly to the trackpads:
|
I see, but what is the benefit of symmetric mapping? Wouldn't you use the same hand for the same action anyway? |
Maybe I could help and test this with a simple example project just for displaying the values of each input on the controllers. |
It's mostly a collection of small issues:
Perhaps, though it's going to be a pain to debug and test. And given the Index is now bing sold in Canada it'll probably only be a month or two before I have Index controllers with thumbsticks to test with. |
OK, I'll try something at home. I need unity and the SteamVR unity plugin, correct? |
Mostly just Unity and Git. I recommend installing Unity hub to make managing Unity versions easy. Visual Studio would be good for editing any C#. And VSCode for editing any non-C# files or looking at the json bindings files. And either SourceTree or VSCode with the Git Graph extension – for cloning the code, pulling any changes, and submitting anything back. The SteamVR plugin code is bundled. Unity should install packages when you open the project. And TextMesh Pro should automatically detect the first start and offer to generate the TextMesh Pro assets needed. After that just open up the Assets/Scenes/EVRC scene. |
Thanks, it has been some years since I last used unity and developed in C#, but I will give it a try. |
😓I hope you did some web stuff at some point too. Cause like any good web developer, I've built this almost entirely using event driven programming and async coroutines; avoiding the Update loop as much as possible. Unlike a lot of Unity developers and example code. |
You might actually be right. Going over the overlay limit does introduce its own type of flickering. But I do notice that some of the elements do have a very slight constant flicker. This seems specific to the continually rendering UI elements like the edit panel and 6DOF controller, which suggests it may be related to some sort of synchronization issue, i.e. the camera re-rendering it while the compositor uses it. The holo buttons that use static image textures are fine. And the main panel that is dynamic but only re-rendered on demand is also fine. I can either try fixing this by seeing if I can deal with the synchronization or I could implement some sort of double-buffer setup for the continually updating overlays. |
https://steamcommunity.com/games/250820/announcements/detail/3150762393108758897 |
I didn't notice any difference before on the beta. We'll just have to try it out and see if it's actually updated. |
We should switch from the legacy input API to the new action based input API. By using a series of generic actions (e.g. TrackpadPress, JoystickPress, TrackButtonPress) we can support controllers with large trackpads, joysticks, and joystick/trackbutton pairs.
I already investigated this and partially got it working. The primary barrier at this point is that the SteamVR_Input code is far too complex to implement manually the way that I handled the event and pose update loop, but the SteamVR_Input code assumes that the SteamVR class has an instance it can read settings from (which isn't the case in the overlay).
I may want to work on a PR for the SteamVR Unity Plugin to try and get them to add basic overlay support, so I can drop my custom event loop code and use SteamVR_Input. (ValveSoftware/steamvr_unity_plugin#108)
The text was updated successfully, but these errors were encountered: