Releases: Hotrian/OpenVRDesktopDisplayPortal
Development of this Repository has concluded
OpenVRDesktopDisplayPortal is now OVRdrop!
The new version only supports Windows 8 or above, but is now GPU accelerated and capable of capturing in 1440p and above at 60+ FPS. A number of new features have been added, including an additional VR overlay that lets you switch target Applications as well as full monitor capture support and more, but the most significant change between this version and the Steam version is the capture method.
OVRdrop is now on Steam!
I intend to leave this Repository for the time being.
You may use this repo for Educational and Personal uses only.
OpenVRDesktopDisplayPortal-v1.0.6-alpha
This release focuses on aesthetic changes and features, though it also improves many existing features. A lot of things changed between v1.0.5.1 and v1.0.6 so it's possible not every change has been documented. Please check the Instructions Article for a detailed list of OVRDDP's features and settings.
Change Log:
- Added MiddleClick simulation (Press and Release Grips) for SendInput, SendMessage, and SendNotifyMessage.
- Added Click + Drag simulation for SendInput. Left Click + Drag only right now.
- Added ScrollWheel simulation (Requires ForceWindowOnTop & MoveDesktopCursor), See Additional Settings. By default this should require holding the Grips down while moving your finger along the Touchpad, but also added the option to disable the requirement for Grips being held down.
- Added ScrollWheel support for editing Desktop UI Values (mouse over a UI element and use ScrollWheel).
- Added Quality Settings, See Additional Settings.
- Added a Backside to the Overlay so it is easier to find. Can be disabled, See Additional Settings.
- Added the option to see the Desktop Cursor's position. Useful for Keyboard+Mouse games.
- Added the option to ForceWindowOnTop when the Desktop Cursor moves over it.
- Added the option to hide the Desktop Cursor when it hasn't moved for a few seconds.
- Added the option to Disable the "Grabbing" gesture.
- Added the option to Disable the "Scale" gesture.
- Added Default Profiles. These Regenerate if you delete all profiles or your profile save file.
- Fixed the "Scale" gesture allowing negative scale sizes.
- Added Haptic Feedback support, added the option to Disable Haptic Feedback. See Additional Settings.
- Now automatically selects the 'other' controller when the saved controller isn't found, but the 'other' is. For example, if you save a profile on the Left controller but only the Right controller is found, select Right.
- Added a backup file for Target Application Configs, should fix them sometimes being lost.
- Added DodgeGaze animation type! The Overlay can now dodge when you look at it. See Appearance Settings.
- Added Companion Overlays! Primarily this is used for the Backside as well as a VR Settings Panel! Aim at the Overlay for a few seconds to cause an "Open Settings" button to appear just below the Overlay. Click the "Open Settings" button and the VR Settings Panel will pop out! Currently things adds the options for Transparency, Enable/Disable Grab, Enable/Disable Scale, Enable/Disable Haptics, and changing the Backside color directly into VR so you can toggle these without removing the HMD :).
- Tooltips now no longer appear instantly when you mouse over a UI element.
As usual, you can hold your mouse over any of the Desktop UI elements for tooltips. Every tooltip should be correct this time but it's possible I missed one. Please see the Instructions Article if you need more information.
I tested this for well over an hour before posting the binary, but if you find any unreported issues please post an issue for it so it can be addressed. If you do not have a GitHub account and don't want to make one, you can PM me on Reddit to report it directly.
OpenVRDesktopDisplayPortal-v1.0.5.1-alpha
This update features a minor change to "Full Interaction" mouse simulation mode.
- Fixes Interaction with many programs such as Unity, Explorer, Task Manager (requires launched as Admin), MSPaint, etc.
- Bringing the window to the front is now significantly more reliable.
Nothing else should have changed from v1.0.5, please refer to v1.0.5 for more info.
OpenVRDesktopDisplayPortal-v1.0.5-alpha
This update features a few different things, most importantly Click support which allows you to aim at an overlay and Click the target application with the desktop cursor. This update also adds the ability to move, rotate, and scale the overlay by putting the controller into the overlay and holding the trigger down. Scale by "grabbing" the overlay and then holding the trigger on the other controller, moving the controllers together or apart, and releasing the trigger on that controller. Some tooltips might be incorrect or missing, but I believe all the important ones are correct.
Please see the Readme for more details!
Special thanks to judah4 for the base Color Picker script! Also thanks to the other contributors of that repo!
Changes:
- Added Mouse support.
- Added "Full Interaction", "Window Top", "Send Clicks Only", and "Disabled" modes.
- Full Interaction: Attempts to bring the window to the top and click on it.
- Window Top: Attempts to bring the window to the top and send a click message (this is slightly different).
- Send Clicks Only: Only sends click messages and works on background windows.
- Disabled: Disables mouse interaction, but moving/rotating/scaling still works as detailed below.
- More information can be found by hovering your mouse over the Interaction Dropdown on the top left.
- Only World and Controller based Overlays can be clicked.
- When attached to a controller, only the other controller can send clicks. It wouldn't be useful for the attached controller to send clicks because you couldn't move the cursor anyway.
- Currently supports left click, double click, and right click only.
- Left/double click by aiming at the overlay and pulling the trigger (fully press and release rapidly).
- Right click by aiming at the overlay and click the trackpad. Depending on the application and capture mode, right click menus might not be visible.
- Mouse Wheel and hopefully Click+Drag coming in a future release.
- Not all applications will accept simulated input. The one I found that didn't was MSPaint... Some applications also will only accept mouse simulation if OVRDDP is run as Admin. TaskManager for instance, you cannot click unless OVRDDP is run as Admin. It's a minor annoyance but worth noting.
- Added "Full Interaction", "Window Top", "Send Clicks Only", and "Disabled" modes.
- Changes to the way Capture Mode/FPS are selected and handled.
- Added a Cursor Sprite so you know where you're aiming on the overlay. Request other sprites here.
- Planning to grab the current desktop cursor sprite through the Win32 API in a future version.
- Added Lock Resolution toggle. This attempts to lock the Target Application at a certain size.
- Added an "Additional Settings" panel. Currently this only has settings for Outline color but other settings will be added in the future. Click the "Additional Settings" button in the top left to open or close it.
- Added an Outline to indicate when the Overlay is being aimed at, as well as when it is close enough to grab.
- Added a color selector for the outline (Thanks judah4 for the base code!)
- To open the color selectors, Click "Additional Settings" on the top left panel.
- Click the color next to the setting you want to change, a color selector will pop up.
- Select the color you want.
- You can edit Red, Green, Blue, or Hue, Saturation, Value, in addition to Alpha. It isn't required to use all of the sliders, they are just there for convenience. You can choose to use RGB or HSV, or the color box and slider at the top, or any combination of these.
- You can also use the input box on the top to copy/paste the color in HEX format.
- When you are finished, click "Accept" to apply or "Cancel" to discard your changes.
- To close the Additional Settings panel, click the "Additional Settings" button again.
- Added a color selector for the outline (Thanks judah4 for the base code!)
- Added the ability to "grab" the overlays. Allows for Moving/Rotating/Scaling the Overlay.
- Only World Overlays can be grabbed right now.
- Can only be grabbed from the front side (controller facing into the overlay).
- Grab the overlay by bringing your controller near it and pressing the trigger all the way down.
- Depending on your settings, the Outline should change color when you are close enough to Grab.
- Move/Rotate the overlay by moving/rotating the controller that is grabbing it.
- Rotation might seem bugged right now, but it's actually mapped to the exact rotation of the grabbing controller.
- Grab near the center of the overlay for more accurate rotation.
- Scale the overlay by:
- Grab the Overlay, and keep the trigger held down.
- Hold the second controller's trigger down also.
- Move the controllers closer together or further apart.
- Release the second controller's trigger.
- If it needs to be bigger or smaller, hold the second controllers trigger down again and repeat the steps from there.
- You can also change the Overlay's "On Gaze" scale. Only works if the Gaze setting in the bottom right is set to Scale or AlphaAndScale. To do so, Stare at the overlay, start the scaling process (holding down both triggers), and you can now look away as long as you keep both triggers held down. Release the trigger to complete the gesture, and repeat it if necessary to get the Overlay just how big/small you want it.
- FPS should now default to 24 which should be enough for almost any purpose.
- Added a Dropdown on the very top left to allow other modes to be added later. No additional modes are included yet.
- Added another Hotkey. Pressing Spacebar will toggle the Overlay On and Off. There is a slight lag spike when you turn the Overlay back on (as resources are being regenerated), but this shouldn't be a huge issue.
Bug Fixes:
- Overlay hides when Target Application closes.
- Device Manager no longer spams the log file when only one controller is detected.
- Capture Mode/FPS now correctly saved on a per application basis.
- World and Screen overlays were being offset by +1 on the Z axis internally. This has been changed so the offset is exposed. Screen Overlays now start at (0, 0, 1) and old profiles will be shifted by +1 on the Z axis automatically. Please see #25 for more info.
Known Issues:
- Certain situations will break Controller Interaction, please see the compatibility article for more details.
- Overlay "grab" rotation is incorrect, but good enough that you can move and rotate the Overlay from VR now.
- Seems like Tron Mode breaks overlay interaction, certain games probably do as well.
- Color Selector is a bit finicky. You must Click+Drag or Click Twice for the color to take effect. Click just once doesn't seem to work :P. Although after the second click, the third, fourth, etc all seem to work fine.
- Cursor position is incorrect with GDI Indirect. I haven't gotten around to fixing this but for now it still functions correctly, but is offset slightly. Sorry!
- Some applications cannot be clicked. Try launching as Admin to fix this. Some applications are protected from being clicked directly otherwise.
Seems like a window can only be brought to the top by an application that is currently on top? "Full Interaction" may not work properly.Should be fixed in v1.0.5.1.- Window settings can sometimes be lost. Still looking into the cause.
- Sometimes when selecting certain settings nothing changes, you must select a different setting and then select the first setting again to fix this, sometimes more than once (rarely). Still looking into the cause.
- Other issues in the issue tracker.
OpenVRDesktopDisplayPortal-v1.0.4-alpha
This update features some changes to make positioning the overlay a bit easier.
Changes:
- Reduced XYZ Slider ranges from -10/+10 to -2/+2. It is easier to accurately adjust the sliders now.
- Changing the XYZ input fields now recenters the Sliders. For example if you change the X value to 5 in the input field, the X slider will range from 3 to 7.
- Added -/+ adjustment buttons. XYZ adjusts in 0.1 increments, Rotation adjust by 1° at a time.
- Added Hotkeys for adjustment buttons. Hotkeys only work while the application has focus.
- Position:
- X-/X+ = Q/W
- Y-/Y+ = A/S
- Z-/Z+ = Z/X
- Rotation:
- X-/X+ (Pitch) = E/R
- Y-/Y+ (Yaw) = D/F
- Z-/Z+ (Roll) = C/V
- Position:
Bug Fixes:
- Corrected some tooltips.
- Fixed a bug where you could type letters into the Position/Rotation/Alpha/Scale input fields. They wouldn't do anything, but you could still do it. Now when you enter letters they should automatically change back to the current value.
- Fixed a bug where "auto-load" would fail to select a device if the profile being loaded was saved while either controller was selected.
OpenVRDesktopDisplayPortal-v1.0.3-alpha
Changes:
- Added Window Size controls. Some applications will override these or limit them in some way.
- OVRDDP now automatically deselects windows that have closed.
Bug Fixes:
- Possibly fixed the issue with ED (and probably other seated games) that prevents Overlay interaction (Gaze Detection).
- Fix to Auto-select a window when it has been renamed.
- VSync should be on by default again.
- Fix "No controllers detected" spamming the log file.
- Fix having to double select the target window sometimes.
- Disallow negative alpha/scale numbers.
OpenVRDesktopDisplayPortal-v1.0.2-alpha
This version might break profiles due to the fix for #1 and #7.
If you need your old profiles, load them up in v1.0.1 and jot the settings down before upgrading.
If you still have difficulties, navigate to and delete this file:
C:\Users\<USERNAME>\AppData\LocalLow\HeadlessOverlayToolkit\OpenVRDesktopDisplayPortal\savedProfiles.gd
Changes:
- Added FPS Counter
- Very basic
- Displays actual number of frames in the last second, not averaged over some time frame as some do
- Displays OpenVRDesktopDisplayPortal's FPS, not the current capture rate, though they are the same up to the capture rate setting. If you are getting more FPS than the capture rate, you are good to go.
- FPS is capped by VSync, but you can turn it off
- Added Application Dropdown Auto-Update so you shouldn't have to press Refresh every time you switch windows, just if you're trying to target a window that just opened
- Added more FPS options (15FPS and 24FPS)
- Added a "No-VSync" mode, but I recommend VSync, or else Unity will update a thousand+ times per second :)
- To Enable/Disable VSync:
- Create a shortcut to the exe
- right click shortcut -> click properties
- add a space and then add "-show-screen-selector", no quotes, to the end of the Target box
- Launch the shortcut, and now it should open the Quality selector
- Select your desired quality level and launch
- To Enable/Disable VSync:
- Added a display for the current capture resolution
Bug Fixes:
- Fixed X Axis Rotation bug
- Fixed Rotation Slider load bug (was sometimes loading 4.9999 instead of 5, etc)
- Improved Rotation Slider behaviours
- Controller Manager now properly checks every 10 seconds for new devices, instead of having to restart the program to detect newly connected devices
- Position/Rotation panel now starts opened so that their scripts properly load
Notes:
In this version I added a number of things, including a new 24FPS option for capture rate, which I recommend for videos as most videos only play at 24FPS anyway, so capturing faster than that won't help any. Also added a new quality which is equivalent to "Fantastic" but with VSync disabled. If you find you're getting more than 60FPS I recommend following the steps above and enabling VSync. (Unless you have a fancy 120Hz monitor, in which case you'll get capped at 120FPS even with VSync ;])
I get atleast 24 with an average of 40 FPS, with 24FPS capture setting and a video of 720x420, and I get 60+ FPS with 485x285 on my R7 265. My GPU scores a 0 in the performance tester. I highly suspect VR ready computers will be able to capture larger videos with little issue, though it's possible there is a CPU bottleneck somewhere. There are definitely some faster capture methods out there, which I will be implementing when I can, but for now this one works and it looks pretty great in VR even at a lower resolution.
Edit: Performance improvements and alternative capture methods coming soon. I now get 100+FPS average with a 485x285 video pic
OpenVRDesktopDisplayPortal-v1.0.1-alpha
- Added Profile Save/Load Support:
- Current system saves:
- Position
- Rotation
- Device attached to
- Base Position attached to (if applicable)
- Scale/Alpha Settings
- Animation Mode
- Select "New.." and press Save, Fill out the title and press the new "Save" button to confirm.
- Select a Profile and click Save to overwrite it.
- Press Delete two times to delete the selected profile. Pressing once turns the text red to indicate "press again to confirm", basically. Click Load/Save or select a different profile to cancel and reset it.
- Last loaded profile will attempt to auto-load on program start
- Current system saves:
- UI Cleanup:
- Added closeable panels for Save/Load and Position/Rotation.
- Adjusted the positioning of Window Cropping settings.
- Moved the Minimize toggle to the far left under Direct Capture.
- Added a panel for Animation/Alpha/Scale settings, but doesn't currently have a close button.
If you are having trouble capturing a certain window, make sure it is on screen, try clicking the refresh button and selecting it again, try toggling Direct Capture on/off, try toggling minimized on/off. I haven't run into any applications that completely refuse to be captured except ones that are actually running in the background.
Known bugs:
- Rotating along the X axis is buggy.
- Loading and Saving while the Position/Rotation panel is closed might have unintended results, as the Open/Close system might cause bugs. Please report any bugs you find if the have not already been reported.
- If you have issues with the new save system try deleting the file located at:
C:\Users\<USERNAME>\AppData\LocalLow\HeadlessOverlayToolkit\OpenVRDesktopDisplayPortal\savedSettings.gd
Remember that:
- Some applications cannot be captured in Direct Mode, the toggle on the top left controls if this is used or not.
- Most applications cannot be captured while they are minimized. Some do not like being captured while they are partially or completely off screen.
- You can control the Framerate on the top left, so configure this to your liking.
- Smaller windows capture much faster, and typically look the same in VR, but the size is up to you.
- You can run the exe multiple times to put multiple windows into VR, if your GPU can handle it ;]
OpenVRDesktopDisplayPortal-v1.0.0-alpha
Initial Release!
- Please see the instructions in the readme for basic usage.
- Filename is missing a v before the 1 but oh well :P
Tested on W10 x64 + HTC Vive, but should work on any Windows OS and device that supports SteamVR.
Remember that:
- Some applications cannot be captured in Direct Mode, the toggle on the top left controls if this is used or not.
- Most applications cannot be captured while they are minimized.
- You can control the Framerate on the top left, so configure this to your liking.
- Smaller windows capture much faster, and typically look the same in VR, but the size is up to you.
- You can run the exe multiple times to put multiple windows into VR, if your GPU can handle it ;]