fredemmott / HTCC

Hand tracking for flight simulator cockpit clicking
https://htcc.fredemmott.com/
MIT License
56 stars 3 forks source link

Can we get optional depth+rotation when "Virtual VR Controllers" game interface is selected? #46

Closed zerxen closed 1 year ago

zerxen commented 1 year ago

I get the point that you would like only a pointer (e.g. headset-to-hand are the only two points on the vector). But since this is now the simplest to use guest2 hands-to-dcs option. Can you give us optionally a depth+rotation data to the virtual VR controller ?

Yes, this would then go towards VR controller emulation with hand, but honestly it is such a low hanging fruit and would definitelly help in both reaching switches in weird places and avoid accidental hits of cockipit switches. I would love to simply have a laser pointer comming out of my index finger or wrist instead of fixated to my eyes/hand vector. Can be optional checkbox next to the Oculus Touch VR controller.

PS: I am with you on the ring mouse buttons, but made quick/easy way by using a cheap aliexpres finger mounted bluetooth mouse with it's sensor cut-off, so getting an index finger laser pointer with 6DOF sounds like a dream come true

fredemmott commented 1 year ago

This is implemented, but not in the settings app because it's not actually useful. https://htcc.fredemmott.com/settings.html#handtrackingorientation

fredemmott commented 1 year ago

Those might be mitigated in the future by a variant of #44: magnetic pointing, but say a 1 inch "no touch zone" around every control

fredemmott commented 1 year ago

PS: I am with you on the ring mouse buttons, but made quick/easy way by using a cheap aliexpres finger mounted bluetooth mouse with it's sensor cut-off, so getting an index finger laser pointer with 6DOF sounds like a dream come true

If you've got a video/photos/instructions, I think there'd be quite a few interested people :)

zerxen commented 1 year ago

PS: I am with you on the ring mouse buttons, but made quick/easy way by using a cheap aliexpres finger mounted bluetooth mouse with it's sensor cut-off, so getting an index finger laser pointer with 6DOF sounds like a dream come true

If you've got a video/photos/instructions, I think there'd be quite a few interested people :)

Ehm... getting a custom ring with mouse buttons is better. But if people just want to try this first on the cheap/easy then what I simply have is this thing, with movement sensor turned off, but for a quick experiment you can just duct tape the sensor. Picture: https://m.media-amazon.com/images/I/61-H-bPXtbL._AC_SX466_.jpg Amazon buy: https://www.amazon.com/Bestdo-Wireless-Optical-1600Dpi-Desktop/dp/B075CKYVDW/ref=sr_1_3?keywords=finger+mouse&qid=1688622415&sr=8-3

And in regarding all the negative things you mentioned, I agree, but all those would be fixed if we get ED to gives us option to disable the physical interaction of the hands and ONLY get hands interaction on mouse clicks from the laser pointer. Then this depth+rotation + a small mouse on finger becomes a go to thing.

fredemmott commented 1 year ago

all those would be fixed if we get ED to gives us option to disable the physical interaction of the hands and ONLY get hands i

I requested this a while back, without a response; I’ll be happy if it gets added, but surprised. It wouldn’t address the uncanny valley or accuracy issues though. The ideal would be for them to replace their leap motion support with direct support for openxr hand tracking (which also supports leap motion)

zerxen commented 1 year ago

On that front, I am trying to get OpenXR guy to fix the OpenXR hand-tracking-TO-controller-emulation to work in DCS as it is broken at this moment and only works in MSFS. That would achieve something similar I am trying here :). And I know I like it because it works for me in MSFS. Funny enough OpenXR hand tracking works, but it's inputs are ignored by DCS, and HTCC doesn't track the way I want, but has a solid working DCS input .... unlucky me. https://forum.dcs.world/topic/329865-openxrs-hand-tracking-and-controller-emulation-works-for-anyone/

fredemmott commented 1 year ago

I think you’re talking about OpenXR toolkit’s hand tracking support, which uses openxr’s hand tracking support, but isn’t the same thing. There is nothing game specific to change here in openxr.

zerxen commented 1 year ago

I think you’re talking about OpenXR toolkit’s hand tracking support, which uses openxr’s hand tracking support, but isn’t the same thing. There is nothing game specific to change here in openxr.

Yes, but the OpenXR hand skeleton doesn't have an interface to the DCS's hand skeleton at the moment. So I cannot use OpenXR hands "as if" leap motion for example.

And the OpenXR's "universal" controller emulation which is supposed to fake to DCS that my hand is a controller and just translate gestures to controller button presses is broken right now.

So a no-go for DCS right now in both OpenXR directions.

fredemmott commented 1 year ago

“Openxr hand tracking” is this specification: https://registry.khronos.org/OpenXR/specs/1.0/html/xrspec.html#XR_EXT_hand_tracking - which is implemented by various projects, including mbucchia’s toolkit. The ideal would be for DCS to directly implement this specification, not for some external project to change.

fredemmott commented 1 year ago

OpenXR does not provide a visual skeleton or controller emulation - OpenXR Toolkit does.

zerxen commented 1 year ago

OpenXR does not provide a skeleton or controller emulation - OpenXR Toolkit does.

Which is the one broken right now as it's inputs are not registered by DCS and I am trying to ask mbucchia to fix in the ED forums I linked above.

“Openxr hand tracking” is this specification: https://registry.khronos.org/OpenXR/specs/1.0/html/xrspec.html#XR_EXT_hand_tracking - which is implemented by various projects, including mbucchia’s toolkit. The ideal would be for DCS to directly implement this specification, not for some external project to change.

Right, but we are in the "if only ED implemented XY" territory which burned me many time sin the last years. And I tried to find any project that would try to translate OpenXR skeleton to for example leap motions skeleton to fake to DCS that it is a leap motion interface. Didn't found anything like that for now. -> This project is the closes thing that is taking OpenXR hands and doing anything with them inside DCS as a virtual controller.

zerxen commented 1 year ago

Well, tried starting a wishlist item, they ignored quest2 native hand-tracking two years ago when people asked for it (from oculus runtime). Hopefully OpenXR as more popular interface might get considered. https://forum.dcs.world/topic/329971-openxr-hand-tracking-interface-as-input-to-dcs-eg-just-like-leap-motion-and-vrfreaa-and-other-have/ Now we wait the famous "2 to 3 weeks from now"

fredemmott commented 1 year ago

The leap motion implementation in DCS also isn’t great; I’m hoping if they ever look at openxr hand tracking they reconsider the interaction model too.

I’m not interested in emulating leap motion as DCS’s implementation is great for YouTube videos and immersion during a cold start with no time pressure, but also fairly common to accidentally hit or not hit controls and ends up pretty frustrating. Because of this, HTCC has a fair amount of ultra leap users too, as a replacement for DCS’s built in support.

HTCC 100% focuses on reliable control of the aircraft, and with DCSs current options, this is often directly opposed to feeling like your hands are actually there.

zerxen commented 1 year ago

Yep, leap-motion physical hands pressing buttons accidentally was not a good decision on ED's part. That is why I am so often looping in this discussion the VTOL VR's way of handling the cockpit controls to go and try, as they are really, really ... really done right. I spent most of last year in VTOL VR's PvP multiplayer with fast interactions a must. I am starting all these conversations now because I really hit a pain wall comming back to DCS recently as VR pilot.