Yellow-Dog-Man / Resonite-Issues

Issue repository for Resonite.
https://resonite.com
135 stars 2 forks source link

Vive Focus 3 Controller Support #2425

Open PointerOffset opened 3 months ago

PointerOffset commented 3 months ago

Is your feature request related to a problem? Please describe.

Vive Focus 3 controllers currently map to generic standard controllers in Resonite, making them behave as Vive wand controllers. They're much closer to Oculus Touch controllers and the profile for Vive Focus 3 controllers specify Oculus Touch as the fallback profile.

There is no hand pose support, no support for the capacitive touch features, and not all of the buttons are available. Hand position is also incorrect from actual hand position.

Describe the solution you'd like

A proper Focus3Controller class and related controller classes that implement Focus 3 controller support officially.

This would allow Vive Focus and Vive XR Elite users to have proper controller support through the official Vive Streaming Hub software. I believe this controller might be used with other Vive headsets as well.

Describe alternatives you've considered

This may be resolved with changes suggested in https://github.com/Yellow-Dog-Man/Resonite-Issues/issues/312 but this wouldn't be quite as good as official support. Focus 3 controllers have an identical layout to Oculus Touch controllers but have minor differences in features and, of course, shape.

Additional Context

All of the required profile JSONs can be acquired by installing the Vive Streaming Hub software used to stream desktop VR to Vive stand-alone headsets. I could upload these myself but I'm not certain about the redistribution rules and wouldn't want to miss anything by mistake.

The software is available here: https://www.vive.com/us/solution/vive-streaming/

After installation, the required resources should be found in the following directory: C:\Program Files\VIVE Hub\VIVE Business Streaming\RRDriver\htc_business_streaming\resources\input

image

Requesters

@enziv @PointerOffset / Spex

PointerOffset commented 3 months ago

Small correction: The Vive Streaming Hub software defaults to enabling "Compatibility Mode" for controllers.

This identifies the controllers as vive_cosmos controllers and, for some reason, Resonite doesn't seem to accept this and falls back to Vive wands rather than treating them as supported Cosmos controllers.

When "Compatibility Mode" is disabled, the controllers identify as vive_focus_3 controllers and the button layout will correctly fall back to Oculus Touch. However, the hand pose still does not work correctly. Pressing buttons will activate grip and button press animations etc. The base pose is very incorrect though.