sencercoltu / openvr-customhmd

Generic OpenVR Driver, STM32 based HeadTracker and wireless motion controller firmware.
57 stars 15 forks source link

Features request: Android VR & Arduino tracker #4

Closed r57zone closed 7 years ago

r57zone commented 7 years ago
  1. [Android] Manual change FPS (30, 35, 40, 45, 50, 55, 60 or slider with step 1), resolution (1280x720, 1366x768, 1600x900, 1920x1080, 2560x1440, and maybe custom) and bitrate (quality).
  2. [Android] Software decoding aside from h264 (on some older devices, it is possible to get more FPS in Software decoding mode without lags)
  3. [Android / Custom DIY VR Headset] Work driver in only head tracking rotation mode with stereo image on first monitor or second monitor how on default null driver with "steamvr.vrsettings" config (app work in background on Android). This will allow we to have a spare option for streaming in the form of Moonlight or other applications, but will be have a head tracking.
  4. [Android] Reset of rotation head tracking by tapping to screen (to default state) and with keyboard button (maybe numpad buttons?).
  5. [Custom DIY VR Headset] Support OpenTrack for arduino trackers or etc. To support OpenTrack need change output to "UDP over network", open udp server 4242 port and read data from this. For example implementation on WinSock and C. Package type (all values float): x y z yaw pitch roll (x y z - do not need to use) Convert to quaternion from the yaw pitch roll.
static Quaterniond toQuaternion(double pitch, double roll, double yaw)
{
    Quaterniond q;
    double t0 = std::cos(yaw * 0.5);
    double t1 = std::sin(yaw * 0.5);
    double t2 = std::cos(roll * 0.5);
    double t3 = std::sin(roll * 0.5);
    double t4 = std::cos(pitch * 0.5);
    double t5 = std::sin(pitch * 0.5);

    q.w() = t0 * t2 * t4 + t1 * t3 * t5;
    q.x() = t0 * t3 * t4 - t1 * t2 * t5;
    q.y() = t0 * t2 * t5 + t1 * t3 * t4;
    q.z() = t1 * t2 * t4 - t0 * t3 * t5;
    return q;
}
  1. Guide for setup SteamVR with binary files (android apk app, drivers library, "steamvr.vrsettings") or an installer that distributes the files to the Steam folder ("SteamPath" key in registry "HKEY_CURRENT_USER\Software\Valve\Steam").

  2. [Android / Custom DIY VR Headset] I would also like to, but at your discretion. Emulate Vive controllers[1] with Google DayDream VR controller (bluetooth pc [1][2][3][4][5][6], touch sensor switch to move positional contoller or vive touch sensor with click on button volume up, trigger is click on touch sensor, other vive buttons for which there are not enough buttons are emulated with a few clicks of button volume down, home button or app button) (maybe with Aruco paper marker for position tracking?) and Android controller[1][2] for some applications this will be enough, but would be cool to have the position tracking emulation (with touch area in app). Daydream controller app emulator for Android. Setup in config.

Thanks.