Merge pull request #299 from OpenVR-Advanced-Settings/drag-distance-sanity-check

Add bindings guide and sanity check on space drag distance per frame, update docs
This commit is contained in:
Kung-vr
2019-10-28 07:59:15 +09:00
committed by GitHub
10 changed files with 88 additions and 6 deletions
+24
View File
@@ -27,6 +27,7 @@ Adds an overlay to the OpenVR dashboard that allows access to advanced settings
+ [Other Controllers](#other-controllers)
* [SteamVR Input Guide](#steamvr-input-guide)
* [Command Line Arguments](#command-line-arguments)
* [INI File Options](#ini-file-options)
* [Preview builds](#preview-builds)
- [Documentation](#documentation)
* [Top Page](#top-page)
@@ -41,6 +42,7 @@ Adds an overlay to the OpenVR dashboard that allows access to advanced settings
* [- Utilities Page](#--utilities-page)
* [- Desktop Overlay Page](#--desktop-overlay-page)
* [- Statistics Page](#--statistics-page)
* [- Bindings Page](#--bindings-page)
* [- Settings Page](#--settings-page)
- [How to Compile](#how-to-compile)
* [Building on Windows](#building-on-windows)
@@ -217,6 +219,22 @@ The application (`AdvancedSettings.exe`) can be run with the following optional
`"--force-remove-manifest"`: Force uninstalls the `.vrmanifest`. This should be done every time the application is uninstalled. On Windows it is automatically done by the uninstaller. The program will exit early when this flag is set.
## INI File Options
There are some features that can only be enabled by directly specifying them in the .ini file. On windows the .ini file can be found at `Users\username\AppData\Roaming\AdvancedSettings-Team\OpenVRAdvancedSettings.ini`.
When adding options to the .ini file, they must be added under the correct section to function.
Currently the following ini-file-only settings exist:
Under `[playspaceSettings]` adding `showLogMatricesButton=true` will enable a button in the Offsets Tab that when pressed will write a section to the log file containing the current pose matrix data for tracked devices and universe settings.
Also under `[playspaceSettings]` adding `simpleRecenter=true` will disable a workaround that allows seated recenter to function on non-lighthouse devices. The workaround instantly applies a second seated recenter whenever a seated recenter is executed. Because simpleRecenter=true will break non-lighthouse seated mode, and true/false behavior is indistinguishable on lighthouse devices, usage of simpleRecenter=true is not recommended.
Under `[utilitiesSettings]` adding `vrcDebug=true` will enable some buttons in the Utilities Tab to toggle debug panels in VRChat.
Under `[applicationSettings]` adding `enableDebug=true` will show a "Debug State" text box in the Settings Tab. Changing the debug state number may be used for in-dev branch builds. At this time, it doesn't do anything on the master build.
## Preview builds
If you want to try latest and greatest unreleased features, you can download the latest from the CI (Continuous Integration) server for [Windows](https://ci.appveyor.com/project/icewind1991/openvr-advancedsettings/branch/master). The Linux CI does not provide binary artifacts.
@@ -379,6 +397,12 @@ Allows users to temporarily move and rotate the center of the playspace. This al
- **Timed Out**: Number of times the currently running application timed out.
- **Reprojection Ratio**: Ratio of presented frames to reprojected frames.
## - Bindings Page
<img src="docs/screenshots/BindingsPage.png" width="600" alt="Bindings Page">
- **Bindings Guide**: Shows users how to access the SteamVR input bindings configuration for Advanced Settings. Unfortunately we can't provide a button to directly open this, so users must navigate there themselves. The sole purpose of this page is to make the navigation to the actual bindings config more obvious for users who missed the instruction in this readme (This was a very common support issue). The intended reading of this image is: Click on the SteamVR Settings dash button, then click on "Controller Settings", then click on "Show More Applications" then find "Advanced Settings" by scrolling to the bottom, and click on it.
## - Settings Page
<img src="docs/screenshots/SettingsPage.png" width="600" alt="Settings Page">
+1
View File
@@ -54,5 +54,6 @@ DISTFILES += \
src/res/qml/desktop_overlay_page/translation_left_right/SteamDesktopTranslationLeftRight.qml \
src/res/qml/desktop_overlay_page/translation_back_forwards/SteamDesktopTranslationBackForwards.qml \
src/res/qml/desktop_overlay_page/translation_up_down/SteamDesktopTranslationUpDown.qml \
src/res/qml/BindingsPage.qml \
win32:RC_ICONS += src/res/img/icons/advicon256px.ico
Binary file not shown.

After

Width:  |  Height:  |  Size: 221 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 128 KiB

After

Width:  |  Height:  |  Size: 131 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 294 KiB

+19
View File
@@ -0,0 +1,19 @@
import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.3
import ovras.advsettings 1.0
import "common"
MyStackViewPage {
headerText: "Bindings Guide"
content: ColumnLayout {
Image {
source: "qrc:/bindings/bindings"
sourceSize.width: 1120
sourceSize.height: 659
Layout.fillHeight: true
Layout.fillWidth: true
}
}
}
+11
View File
@@ -141,6 +141,17 @@ MyStackViewPage {
Layout.fillWidth: true
}
MyPushButton {
id: bindingsButton
activationSoundEnabled: false
text: "Bindings"
Layout.fillWidth: true
onClicked: {
MyResources.playFocusChangedSound()
mainView.push(bindingsPage)
}
}
MyPushButton {
id: settingsButton
activationSoundEnabled: false
+5
View File
@@ -80,6 +80,11 @@ Rectangle {
visible: false
}
property BindingsPage bindingsPage: BindingsPage {
stackView: mainView
visible: false
}
StackView {
id: mainView
anchors.fill: parent
+3
View File
@@ -17,4 +17,7 @@
<file alias="previous">img/audio/media_keys/outline_skip_previous_white_24dp.svg</file>
<file alias="stop">img/audio/media_keys/outline_stop_white_24dp.svg</file>
</qresource>
<qresource prefix="/bindings">
<file alias="bindings">img/bindings/bindings.png</file>
</qresource>
</RCC>
+25 -6
View File
@@ -1323,6 +1323,11 @@ void MoveCenterTabController::reset()
m_offsetY = 0.0f;
m_offsetZ = 0.0f;
m_rotation = 0;
m_lastControllerPosition[0] = 0.0f;
m_lastControllerPosition[1] = 0.0f;
m_lastControllerPosition[2] = 0.0f;
m_lastMoveHand = vr::TrackedControllerRole_Invalid;
m_lastRotateHand = vr::TrackedControllerRole_Invalid;
applyChaperoneResetData();
emit offsetXChanged( m_offsetX );
emit offsetYChanged( m_offsetY );
@@ -2546,6 +2551,14 @@ void MoveCenterTabController::updateHandDrag(
// offset is un-rotated coordinates
// prevent positional glitches from exceeding max openvr offset clamps.
// We do this by detecting a drag larger than 100m in a single frame.
if ( abs( diff[0] ) > 100.0 || abs( diff[1] ) > 100.0
|| abs( diff[2] ) > 100.0 )
{
reset();
}
// prevents updating if axis movement is locked
if ( !m_lockXToggle )
{
@@ -2863,7 +2876,8 @@ void MoveCenterTabController::updateSpace( bool forceUpdate )
LOG( INFO ) << "GetWorkingStandingZeroPoseToRawTrackingPose";
outputLogHmdMatrix( standingZero );
reset();
LOG( INFO ) << "-Resetting offsets-";
parent->m_chaperoneTabController.applyAutosavedProfile();
LOG( INFO ) << "-Resetting to autosaved chaperone profile-";
return;
}
if ( abs( offsetUniverseCenterXyz[1] ) > k_maxOpenvrWorkingSetOffest
@@ -2879,7 +2893,8 @@ void MoveCenterTabController::updateSpace( bool forceUpdate )
LOG( INFO ) << "GetWorkingStandingZeroPoseToRawTrackingPose";
outputLogHmdMatrix( standingZero );
reset();
LOG( INFO ) << "-Resetting offsets-";
parent->m_chaperoneTabController.applyAutosavedProfile();
LOG( INFO ) << "-Resetting to autosaved chaperone profile-";
return;
}
if ( abs( offsetUniverseCenterXyz[2] ) > k_maxOpenvrWorkingSetOffest
@@ -2895,7 +2910,8 @@ void MoveCenterTabController::updateSpace( bool forceUpdate )
LOG( INFO ) << "GetWorkingStandingZeroPoseToRawTrackingPose";
outputLogHmdMatrix( standingZero );
reset();
LOG( INFO ) << "-Resetting offsets-";
parent->m_chaperoneTabController.applyAutosavedProfile();
LOG( INFO ) << "-Resetting to autosaved chaperone profile-";
return;
}
@@ -3009,7 +3025,8 @@ void MoveCenterTabController::updateSpace( bool forceUpdate )
LOG( INFO ) << "GetWorkingStandingZeroPoseToRawTrackingPose";
outputLogHmdMatrix( standingZero );
reset();
LOG( INFO ) << "-Resetting offsets-";
parent->m_chaperoneTabController.applyAutosavedProfile();
LOG( INFO ) << "-Resetting to autosaved chaperone profile-";
return;
}
if ( abs( offsetUniverseCenterXyz[1] ) > k_maxOpenvrCommitOffset )
@@ -3023,7 +3040,8 @@ void MoveCenterTabController::updateSpace( bool forceUpdate )
LOG( INFO ) << "GetWorkingStandingZeroPoseToRawTrackingPose";
outputLogHmdMatrix( standingZero );
reset();
LOG( INFO ) << "-Resetting offsets-";
parent->m_chaperoneTabController.applyAutosavedProfile();
LOG( INFO ) << "-Resetting to autosaved chaperone profile-";
return;
}
if ( abs( offsetUniverseCenterXyz[2] ) > k_maxOpenvrCommitOffset )
@@ -3037,7 +3055,8 @@ void MoveCenterTabController::updateSpace( bool forceUpdate )
LOG( INFO ) << "GetWorkingStandingZeroPoseToRawTrackingPose";
outputLogHmdMatrix( standingZero );
reset();
LOG( INFO ) << "-Resetting offsets-";
parent->m_chaperoneTabController.applyAutosavedProfile();
LOG( INFO ) << "-Resetting to autosaved chaperone profile-";
return;
}
vr::VRChaperoneSetup()->CommitWorkingCopy(