Skip to content
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

Adds new features for Mixed VR setups (ALVR clients as FBT kits e.g.) #650

Merged
merged 15 commits into from
May 12, 2021

Conversation

korejan
Copy link
Member

@korejan korejan commented May 9, 2021

Adds new features to support the ability to use ALVR's client headset & controllers (Quest 1, 2, etc) with other PC VR headsets for the purposes of using them as emulated vive trackers for full body tracking, to use ALVR controllers with other headsets, or for debugging purposes, specific features added are:

  • New Vive Tracker controller emulation mode profile, treats ALVR controllers as vive trackers in SteamVR. Controller Input is still supported when the tracker role is set to handed/held-in-hand. Hand-tracking is still supported with these profiles hence the extra no-pinch option.
  • New advance headset option "Tracking Reference Only", disables all server side video encoding/streaming and makes the ALVR HMD tracked device class vr::TrackedDeviceClass_TrackingReference. Server only recieves pose data from an ALVR client (and still streams audio if the option is still enabled).
  • New advance headset option "Vive Tracker Proxy", when enabled makes the ALVR openvr driver spawn a virtual hip vive tracker that uses the pose of the ALVR HMD. This can be used to make the ALVR headset client a hip tracker for FBT, tracker roles can be changed.
  • New advance controller option "Use Headset Tracking System", tells the ALVR openvr driver to override the selected controller emulation mode profile's "tracking system name" with the selected emulated headset. This can be used in the case where the vive tracker controller profile is selected and a user wants to do space calibration against another lightouse based tracking system.
  • Changes the advance controller option "Controller Type" into individual left and right types, all the existing controller profiles will set the same value for both but for vive tracker profile will set these to use the vive tracker left/right foot profiles, users can change this to use different defaults (and still able to change their role within SteamVR).

Known Issues:
Sometimes while changing back & forth with these specific properties and ALVR server restarts, SteamVR fails to initialize indefinitely until the user reboots their PC.

korejan added 12 commits May 2, 2021 15:01
* Adds support for optionally making the ALVR HMD as a tracking reference class which disables all the video encoding/streaming in the openvr driver and only recieves pose inputs from HMD & controller. This also allows other HMDs do be used with ALVR as the main steamvr HMD. This can be used for the purposes of using ALVR controllers for FBT, use alternative controllers with other HMDs, or debug purposes.

* Adds 2 new controller profiles and support for Vive tracker emulation.
Merging from main to FBTNoHMD
* Adds support for making a virtual vive tracker proxy that mirror's the position and orientation of the ALVR headset. This can be used to make the HMD as a hip tracker or just a general tracked object for supporting games/devices (this setting only makes sense in conjugation with TrackingRefOnly properties which changes the openvr device class).

* Adds new controller property to override a particular controller profile (or used defined) tracking system name to make the current ALVR headset. This would used in situation where a user has enabled vive tracker controller profile and would like calibrate against real lighthouse setup with openvr space calibrator.

* Changes the "TrackingOnlyRef" property to be only visible when advance settings is enabled.
Support bundled ffmpeg libraries in Linux build (alvr-org#649)
Adds new features to support the ability to use ALVR's client headset & controllers (Quest 1, 2, etc) with other PC VR headsets for the purposes of using them as emulated vive trackers for full body tracking, to use ALVR controllers with other headsets, or for debugging purposes, specific features added are:

- New Vive Tracker controller emulation mode profile, treats ALVR controllers as vive trackers in SteamVR. Controller Input is still supported when the tracker role is set to handed/held-in-hand. Hand-tracking is still supported with these profiles hence the extra no-pinch option.
- New advance headset option _"Tracking Reference Only"_, disables all server side video encoding/streaming and makes the ALVR HMD tracked device class _vr::TrackedDeviceClass_TrackingReference_. Server only recieves pose data from an ALVR client (and still streams audio if the option is still enabled). 
- New advance headset option _"Vive Tracker Proxy"_, when enabled makes the ALVR openvr driver spawn a virtual hip vive tracker that uses the pose of the ALVR HMD. This can be used to make the ALVR headset client a hip tracker for FBT, tracker roles can be changed.
- New advance controller option _"Use Headset Tracking_ System", tells the ALVR openvr driver to override the selected controller emulation mode profile's "tracking system name" with the selected emulated headset. This can be used in the case where the vive tracker controller profile is selected and a user wants to do space calibration against another lightouse based tracking system.
- Changes the advance controller option "Controller Type" into individual left and right types, all the existing controller profiles will set the same value for both but for vive tracker profile will set these to use the vive tracker left/right foot profiles, users can change this to use different defaults (and still able to change their role within SteamVR).

Known Issues:
Sometimes while changing back & forth with these specific properties and ALVR server restarts, SteamVR fails to initialize indefinitely until the user reboots their PC.
Copy link
Member

@zarik5 zarik5 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for your work! I don't have time to go through a full review now but I can point out something that should be fixed. The english translations should not be put in non english files, the dashboard already falls back to english when the keys are not found for a particular language. Two CI checks failed, you should run cargo fmt and then fix some syntax errors for the Linux build.

Fixing rust formatting errors
* Fixes C++ compiler errors for linux builds.
* Removes/cleans up untranslated settings.
Merging from FBTNoHMD to main
@xytovl
Copy link
Collaborator

xytovl commented May 12, 2021

I have quickly tested this branch on Linux port and I don't see any regression.

If you have nothing else to add, i'm OK to merge

@korejan
Copy link
Member Author

korejan commented May 12, 2021

Yeah nothing else to add for this, thanks.

@xytovl xytovl merged commit 4112362 into alvr-org:master May 12, 2021
@korejan korejan mentioned this pull request Aug 4, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants