mm0zct / Oculus_Touch_Steam_Link

SteamVR driver to enable Oculus Touch controllers with other headsets
MIT License
57 stars 19 forks source link

Several issues I found #33

Open dmitry-zhurav1ev opened 1 month ago

dmitry-zhurav1ev commented 1 month ago

My HMD is Pico Neo 3 Link connected with DisplayPort + CV1 controllers.

  1. Something wrong with hand animations in HL:Alyx (and HL2 VR mod too). The thumb doesn't bend if you touch a button when your hand is open. It bends the whole hand just very slightly instead. But if you press grip or trigger, the thumb reacts properly, but without any animation. It animates only when touching a button and pressing grip/trigger at the same time. The index finger doesn't react to touching unless you touch a button. Also when you press trigger to bend the index finger, it doesn't animate other fingers as it should, what makes it look unnatural.

https://youtu.be/QLwTH42TjBc

  1. If you reload the shotgun or smg, controllers stop working because of haptics event with -1 duration. I have seen on reddit that this issue was addressed long time ago, but it's here for some reason.

https://youtu.be/Qg6NEwxHBqM

  1. In Boneworks every haptics event related to hand collision (and shooting, probably) has the same "strenght". In other words, there's no difference in haptics between a very faint touch and a very hard hit. It can be seen in the video that amplitude is changing accordingly to what I'm doing, but it doesn't affect vibration strenght, like it's always at max value. I also tried various settings in the GUI, but it didn't make any effect.

https://youtu.be/yFT9DY7o7o4

Furthermore question, is that normal that haptics in some games (HLA, H3VR) is like a sequence of short impulses, but in some other games (Boneworks) it's a buzzing (like it should be)?

mm0zct commented 1 month ago
  1. should now be fixed at least
mm0zct commented 1 month ago

reviewing the code, for 3 you should be able to adjust the strength with scaling, pre-sqrt filter, and post sqrt filter. I suggest you try turning off the sqrt filters and adjusting the scale while you are playing - it's a float value, 1.0 is neutral, so try scaling it up and down in factors of 2, like 2.0, 1.0, 0.5, 0.25, 0.125 and see how this affects the feeling. Does it correctly change the strength when you modify the scale (even if all the events feel the same?)

mm0zct commented 1 month ago

For 1 - are you closing the triggers quickly in that video? the fingers should all curl gradually as you close your grip, not snap like that, but if you are slamming your fist closed it might look like that. Inserting some blending over time could be possible (next bone state = (current bone state 0.9 + target_bone_state 0.1) sort of thing, but that will need experimentation to get right.

pull requests welcome if you feel like working on that ;)

dmitry-zhurav1ev commented 1 month ago
  1. should now be fixed at least

Seems like you didn't put the actual program in the release, I see only the source code.

reviewing the code, for 3 you should be able to adjust the strength with scaling, pre-sqrt filter, and post sqrt filter. I suggest you try turning off the sqrt filters and adjusting the scale while you are playing - it's a float value, 1.0 is neutral, so try scaling it up and down in factors of 2, like 2.0, 1.0, 0.5, 0.25, 0.125 and see how this affects the feeling. Does it correctly change the strength when you modify the scale (even if all the events feel the same?)

Yes, the scaling works correctly.

For 1 - are you closing the triggers quickly in that video? the fingers should all curl gradually as you close your grip, not snap like that, but if you are slamming your fist closed it might look like that. Inserting some blending over time could be possible (next bone state = (current bone state 0.9 + target_bone_state 0.1) sort of thing, but that will need experimentation to get right.

pull requests welcome if you feel like working on that ;)

No, the fingers curl gradually as they should. When I was talking about that pressing trigger doesn't animate other fingers, I meant that the hand doesn't get to the pose like on the image below, as it does on a regular VR setups. Like you can't curl your index finger and remain other fingers straight, like it happens with Touch Link. But honesly after making this screenshot (made it on Pico with VD which emulates Quest 2 controllers) I realized that it's not such a problem, because you can't fully curl the index finger IRL on the controller, so it can pretty much correspond to your real hand, if you keep other fingers straight. I also noticed that with Touch Link you are able to perform an OK sign and a natural fist unlike on regular VR setups. So... yeah, my only issues are the lack of animation for, let's call it "touch events", and that index finger doesn't react to trigger touch unless you touch a button, stick or thumbrest. изображение

dmitry-zhurav1ev commented 1 month ago

Made a mistake, you actually can perform an OK sign and a "natural" fist on a Rift because of thumbrest poses. Just forgot about it because thumbrest isn't functional on Pico, and it wasn't presented on Rift S which I had for a long time and played Alyx on. Don't know if other headsets like Quest 2 or 3 have this functionality.

mm0zct commented 1 month ago

Thanks, you can find updated ovr_test.exe in the "source" in both the ReleasePackage and in the build folder, here's the direct link https://github.com/mm0zct/Oculus_Touch_Steam_Link/blob/main/ReleasePackage/OculusTouchLink/ovr_test.exe

I'll fix the github reuse to actually include the release 7z archive

mm0zct commented 3 weeks ago

Made a mistake, you actually can perform an OK sign and a "natural" fist on a Rift because of thumbrest poses. Just forgot about it because thumbrest isn't functional on Pico, and it wasn't presented on Rift S which I had for a long time and played Alyx on. Don't know if other headsets like Quest 2 or 3 have this functionality.

I think you will like the new release I just published ;)

Hand animations are now nicely smoothed, and there is a resting thumb pose :)

Both ovr_test.exe and the steamvr driver .dll need to be updated since there is a new configuration in the gui which controls the smoothing. Default is 0.2 (20% towards target per steamvr tick) which felt nice to me.