Skyrim Special Edition

File information

Last updated

Original upload

Created by

ColdBomb1

Uploaded by

coldbomb1

Virus scan

Safe to use

About this mod

A custom openvr_api.dll build of the openxr branch of OpenComposite that I have been working on to fix various bugs with Skyrim VR.

Permissions and credits
Donations


This is a custom openvr_api.dll build of the openxr branch of OpenComposite that I have been working on to fix various bugs with Skyrim VR.

Gitlab here: https://gitlab.com/coldbomb1/OpenOVR/-/tree/SkyrimVR_Bug_Fixes

Basically, just trying to fix all the problems I run into while using Skyrim VR with OpenComposite.

Tested with HP Reverb G2 headset / controllers.

Configuration items available:
  • adjustTilt: default false
  • Enables controller tilt adjustment on the X-Axis. (Vertical / Up and Down rotation axis). The value in "tilt" will be used to adjust the vertical tilt of the controllers.
  • tilt: default 0.0
  • The degrees to vertically tilt the controller by when "adjustTilt" is enabled.
  • enableInputSmoothing: default false
  • Enables input smoothing to joystick, grip, and trigger values.  When enabled, will fix a bug with some Oculus controllers where hands will twitch and drop items, and/or having constant stutter while trying to move with the joystick.  I also tried to enhance this to make it smoother in Oculus_Enhanced_Input_Smoothing_Test in the Miscellaneous section if you still have some lingering issues.
  • enableAudioSwitch: default false
  • Automatically switches the audio output to the output device specified in the audioDeviceName field.  Some Oculus users had an issue where the sound was not automatically switching to the Headset's audio output when launching SkyrimVR.  They would have to manually change the audio output on the system after starting the game.  With this enabled, you can skip manually changing the audio output.
  • audioDeviceName=2- Avantree DG80  (Just an example, use your actual audio output device output name)
  • This is the audio device name you want to have it automatically switch the output to when the game starts when setting enableAudioSwitch=true
  • hapticStrength: value range 0.0-1.0, default 0.1
  • Sets the amplitude of the haptic pulse sent to the VR controller during haptic feedback
  • inputWindowSize: default 5
  • Sets the number of frames to perform input smoothing over.  Higher numbers will increase the time it takes for a released joystick/trigger/grip to 0 out.
  • leftDeadZoneSize: value range 0.0-1.0, default 0.0
  • Sets the radial deadzone size of the left joystick.  0.0 means no deadzone, 1.0 means the whole joystick is a deadzone and won't process.
  • rightDeadZoneSize: value range 0.0-1.0, default 0.0
  • Sets the radial deadzone size of the right joystick.  0.0 means no deadzone, 1.0 means the whole joystick is a deadzone and won't process.
  • disableTriggerTouch: default false
  • Sets whether the Touch sensor is enabled for the trigger (depends on if supported by controller)
  • disableTrackPad: default false
  • Whether the trackpad mappings to the A/B/X/Y buttons is ignored for Holographic controller profile.  Added since another user needed the trackpad to not perform those button presses in a different game.

Version: 1.5
  1. Added configurable joystick deadzones
  2. Added configurable haptic feedback strength setting
  3. Added configuration item to disable trigger touch sensor on supported controllers
  4. Added configuration item to disable trackpad button mappings for holographic controller profile
  5. Added new ini configuration items for hapticStrength, inputWindowSizeleftDeadZoneSizerightDeadZoneSize, disableTriggerTouch, and disableTrackPad

Version 1.4
  1. Added support for motion controllers (ex: Lenovo Explorer).  The HolographicInputProfile is now filled out which the motion controllers (with the touchpad) uses.  I mapped clicking of the bottom of the touchpad as "A/X" and clicking the top of the touchpad as "B/Y" for the controllers.  Also added a VRIK binding profile for them: OC_VRIK_Bindings_Holographic
  2. Switched to Low Latency input smoothing.  The input smoothing method is now using the low latency version which does not add any latency to changing axis values and only minimal latency to letting axis go back to 0 (letting go of the joystick / trigger / grip).
  3. Reduced haptic feedback strength.  The haptic feedback for the pulse SkyrimVR uses was set as default to the maximum amplitude.  I reduced this to a value that I felt matched the SteamVR equivalent better in the same situations.
  4. Removed hard abort on incorrect eye count.  These errors can occur even when the headset can still recover.  So it was causing it to exit the application needlessly.  Now it just logs the incorrect eye count occurred once and continues.
  5. Added configurable vertical controller tilt.  I set the Oculus profile grip transforms as the "grip" profile (Oculus_Transform_Test_4 if you had tried those).  However, I was getting mixed reviews on which one was correct.  I believe 4/grip is the one that SteamVR uses, so I defaulted it to that, but I also added new configuration items "adjustTilt" and "tilt".  Using these configuration items you can try to fine tune the vertical tilt angle of the controllers to match your preference.  Read the descriptions in the "Configuration Items available" above.

Version 1.3.1
  1. Added configurable axis input smoothing to joystick, grip, and trigger values.  This fixes the stuttering issue of some Oculus Touch controllers caused by randomly sending out 0.0 values between real values.
  2. Added configuration property: "enableInputSmoothing" that can be set to "true" in the opencomposite.ini file to enable the above input smoothing.  This is set to "false" by default.  The example opencomposite.ini file in the download has this setting already set to true if you want to use it.

Version: 1.3
  1. Added fix for stuttering hands for some Oculus controllers. (deprecated, new approach that actually works in 1.3.1)
  2. Added ability to set an audio output override so Oculus users that currently have to set their sound output manually once in game will no longer need to do so.  New configuration values you can add to opencomposite.ini (next to the dll): enableAudioSwitch, audioDeviceName

  1. enableAudioSwitch is a boolean field.  Default to false.  To enable add: enableAudioSwitch=true to the opencomposite.ini file.
  2. audioDeviceName is a text field.  Default to empty.  If enableAudioSwitch is set to true, then OpenComposite will attempt to set the audio output to the value specified in this field.  This will allow automatic audio switching if you currently need to do so manually (some oculus users).

Version: 1.2
  1. Added controller offset location / rotation fixes for Index (Untested) and Vive (Untested) controllers.  Updated offsets for HP Reverb G2 and Oculus Touch (Quest 2) controllers to match the exact values that SteamVR uses.
  2. Fixed white object hands in main menu offsets / rotations so they now map to where the controller / VRIK hands are.

Version 1.1:
  1. Fixed mismatched controller bindings for HP Reverb G2.  Now allows for full controller mapping using VRIK custom bindings.  Can use with OC_VRIK_Bindings_ReverbG2 or OC_VRIK_Bindings_ReverbG2_Alternative_1 in Optional Files.
  2. 2 Optional files added: OpenComposite_VRIK_Custom_Bindings_ReverbG2 and OpenComposite_SkyUIVR_Fix_ReverbG2

Version 1.0:
  1. VRIK Hands in Skyrim VR now properly match the controller locations and rotations have been fixed for HP Reverb G2 and potentially Oculus (untested) controllers..  They should now track like in SteamVR.  Contains transforms for HP Reverb G2 and Oculus currently.  However, only HP Reverb G2 has been tested since that is all I have.  Note:  Ignore the White opencomposite object hands that appear in the main menu, they are still off sync from the controllers (doesn't really matter to me). Fixed as of version 1.2.
  2. Will no longer crash on Character Creation name input screen. It will skip the keyboard entirely and put your name defaulted to "Adventurer" and continue the game.  Note: You currently can't change your name to anything else until an actual on screen keyboard is ported to OpenXR in OpenComposite.  I may try to at least make it configurable later.
  3. Weapon Throw VR now works with new controller mappings.

Optional Files:

  1. OC_VRIK_Bindings_ReverbG2: Applies custom controller bindings to VRIK that I felt worked well with the new HP Reverb G2 mappings fix.  Included instructions in the file that tell you what hex value each button is and how to apply them if you wish to change any bindings. Highly recommended to open the file in Notepad++ instead of regular Notepad, otherwise the formatting will be nearly unreadable.
  2. OC_VRIK_Bindings_ReverbG2_Alternative_1 (NEW): Alternative controller bindings provided by Benjamin100, creator of Perfect Nature - a Natural and Realistic ENB for Skyrim VR 2022.  Provides fixes for certain menu buttons as well (drop vs favorites) along with a nice graphic showing each binding.
  3. OC_VRIK_Bindings_Holographic: Custom VRIK controller bindings for holographic / motion controllers (EX: Lenovo Explorer)
  4. OpenComposite_SkyUIVR_Fix_ReverbG2: Prevents you from accidently pressing the "Search" button if you use SkyUI-VR.  Before my fix build, this would crash your game, but now it writes in "Adventurer" and filters your list so you can't see your items.  This prevents you from being able to even hit the search button so you shouldn't have to worry about it anymore.


Graphic showing the controller bindings provided in OC_VRIK_Bindings_ReverbG2:



Graphic showing the controller bindings provided in OC_VRIK_Bindings_ReverbG2_Alternative_1.
Provided by Benjamin100



See my other mods:

Other Notes:
  • Reshade is not compatible with OpenComposite openxr branch.  Reshade needs to be ported to use OpenXR as it currently is using OpenVR.
  • VRPerfkit is not compatible with OpenComposite.  I use OpenXR Toolkit instead for upscaling and other performance / graphical tweaks.

OpenXR Toolkit can be downloaded here: https://mbucchia.github.io/OpenXR-Toolkit/ or even through the Windows store if using Windows Mixed Reality.
Using the companion app that comes with it, I recommend you change the in-game keybindings for showing the menu, since the defaults are difficult.  I use the bottom of the numpad as arrow keys.



When in the game, the menu gives you a lot of options for upscaling, post processing, and performance tuning that you can experiment with.  If you don't need or want motion smoothing, I recommend using the Turbo Mode (Experimental) setting.




Feel free to let me know if there are any problems with the custom build or other general OpenComposite SkyrimVR specific bugs you would might know about.  I'll try to keep the branch up to date with the current main openxr branch and continue slowly adding more fixes / possible improvements later.