mirror of
https://github.com/overte-org/overte.git
synced 2025-04-16 15:02:10 +02:00
Merge pull request #10899 from druiz17/calibration-update-2.0
Updates to the Calibration UI
This commit is contained in:
commit
b4182fe7ac
8 changed files with 166 additions and 37 deletions
Binary file not shown.
BIN
interface/resources/images/calibration-help.png
Normal file
BIN
interface/resources/images/calibration-help.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 50 KiB |
64
interface/resources/qml/controls-uit/ImageMessageBox.qml
Normal file
64
interface/resources/qml/controls-uit/ImageMessageBox.qml
Normal file
|
@ -0,0 +1,64 @@
|
|||
//
|
||||
// ImageMessageBox.qml
|
||||
//
|
||||
// Created by Dante Ruiz on 7/5/2017
|
||||
// Copyright 2017 High Fidelity, Inc.
|
||||
//
|
||||
// Distributed under the Apache License, Version 2.0.
|
||||
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
||||
//
|
||||
|
||||
import QtQuick 2.5
|
||||
import QtQuick.Controls 1.4
|
||||
import "../styles-uit"
|
||||
|
||||
Item {
|
||||
id: imageBox
|
||||
visible: false
|
||||
anchors.fill: parent
|
||||
property alias source: image.source
|
||||
property alias imageWidth: image.width
|
||||
property alias imageHeight: image.height
|
||||
|
||||
Rectangle {
|
||||
anchors.fill: parent
|
||||
color: "black"
|
||||
opacity: 0.3
|
||||
}
|
||||
|
||||
Image {
|
||||
id: image
|
||||
anchors.centerIn: parent
|
||||
|
||||
HiFiGlyphs {
|
||||
id: closeGlyphButton
|
||||
text: hifi.glyphs.close
|
||||
size: 25
|
||||
|
||||
anchors {
|
||||
top: parent.top
|
||||
topMargin: 15
|
||||
right: parent.right
|
||||
rightMargin: 15
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
hoverEnabled: true
|
||||
|
||||
onEntered: {
|
||||
parent.text = hifi.glyphs.closeInverted;
|
||||
}
|
||||
|
||||
onExited: {
|
||||
parent.text = hifi.glyphs.close;
|
||||
}
|
||||
|
||||
onClicked: {
|
||||
imageBox.visible = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -65,7 +65,7 @@ Rectangle {
|
|||
|
||||
HiFiGlyphs {
|
||||
id: image
|
||||
text: hifi.glyphs.avatar1
|
||||
text: hifi.glyphs.avatarTPose
|
||||
size: 190
|
||||
color: hifi.colors.white
|
||||
|
||||
|
|
|
@ -16,6 +16,7 @@ import "../../controls-uit" as HifiControls
|
|||
StackView {
|
||||
id: stack
|
||||
initialItem: inputConfiguration
|
||||
property alias messageVisible: imageMessageBox.visible
|
||||
Rectangle {
|
||||
id: inputConfiguration
|
||||
anchors.fill: parent
|
||||
|
@ -26,6 +27,15 @@ StackView {
|
|||
|
||||
property var pluginSettings: null
|
||||
|
||||
HifiControls.ImageMessageBox {
|
||||
id: imageMessageBox
|
||||
anchors.fill: parent
|
||||
z: 2000
|
||||
imageWidth: 442
|
||||
imageHeight: 670
|
||||
source: "../../../images/calibration-help.png"
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
width: inputConfiguration.width
|
||||
height: 1
|
||||
|
@ -167,7 +177,7 @@ StackView {
|
|||
loader.item.pluginName = box.currentText;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (loader.item.hasOwnProperty("displayInformation")) {
|
||||
loader.item.displayConfiguration();
|
||||
}
|
||||
|
@ -183,20 +193,20 @@ StackView {
|
|||
return InputConfiguration.activeInputPlugins();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function initialize() {
|
||||
changeSource();
|
||||
}
|
||||
|
||||
|
||||
function changeSource() {
|
||||
loader.source = "";
|
||||
var source = "";
|
||||
if (box.currentText == "Vive") {
|
||||
source = InputConfiguration.configurationLayout("OpenVR");
|
||||
} else {
|
||||
} else {
|
||||
source = InputConfiguration.configurationLayout(box.currentText);
|
||||
}
|
||||
|
||||
|
||||
loader.source = source;
|
||||
if (source === "") {
|
||||
box.label = "(not configurable)";
|
||||
|
@ -204,14 +214,14 @@ StackView {
|
|||
box.label = "";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Timer {
|
||||
id: timer
|
||||
repeat: false
|
||||
interval: 300
|
||||
onTriggered: initialize()
|
||||
}
|
||||
|
||||
|
||||
Component.onCompleted: {
|
||||
timer.start();
|
||||
}
|
||||
|
|
|
@ -50,9 +50,12 @@ Rectangle {
|
|||
readonly property int apply: 1
|
||||
readonly property int applyAndCalibrate: 2
|
||||
readonly property int calibrate: 3
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
MouseArea {
|
||||
id: mouseArea
|
||||
|
@ -64,6 +67,7 @@ Rectangle {
|
|||
mouse.accepted = false;
|
||||
}
|
||||
}
|
||||
|
||||
color: hifi.colors.baseGray
|
||||
|
||||
RalewayBold {
|
||||
|
@ -146,6 +150,7 @@ Rectangle {
|
|||
label: "Y: offset"
|
||||
minimumValue: -10
|
||||
stepSize: 0.0254
|
||||
value: -0.05
|
||||
colorScheme: hifi.colorSchemes.dark
|
||||
|
||||
onEditingFinished: {
|
||||
|
@ -161,15 +166,16 @@ Rectangle {
|
|||
minimumValue: -10
|
||||
stepSize: 0.0254
|
||||
decimals: 4
|
||||
value: -0.05
|
||||
colorScheme: hifi.colorSchemes.dark
|
||||
|
||||
|
||||
onEditingFinished: {
|
||||
sendConfigurationSettings();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
RalewayBold {
|
||||
id: hands
|
||||
|
||||
|
@ -245,7 +251,7 @@ Rectangle {
|
|||
anchors.left: openVrConfiguration.left
|
||||
anchors.leftMargin: leftMargin + 10
|
||||
spacing: 10
|
||||
|
||||
|
||||
HifiControls.SpinBox {
|
||||
id: handYOffset
|
||||
decimals: 4
|
||||
|
@ -269,7 +275,7 @@ Rectangle {
|
|||
stepSize: 0.0254
|
||||
decimals: 4
|
||||
colorScheme: hifi.colorSchemes.dark
|
||||
|
||||
|
||||
onEditingFinished: {
|
||||
sendConfigurationSettings();
|
||||
}
|
||||
|
@ -290,6 +296,52 @@ Rectangle {
|
|||
anchors.leftMargin: leftMargin
|
||||
}
|
||||
|
||||
RalewayRegular {
|
||||
id: info
|
||||
|
||||
text: "See Recommended Tracker Placement"
|
||||
color: hifi.colors.blueHighlight
|
||||
size: 10
|
||||
anchors {
|
||||
left: additional.right
|
||||
leftMargin: 10
|
||||
verticalCenter: additional.verticalCenter
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
id: selected
|
||||
color: hifi.colors.blueHighlight
|
||||
|
||||
width: info.width
|
||||
height: 1
|
||||
|
||||
anchors {
|
||||
top: info.bottom
|
||||
topMargin: 1
|
||||
left: info.left
|
||||
right: info.right
|
||||
}
|
||||
|
||||
visible: false
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
anchors.fill: parent;
|
||||
hoverEnabled: true
|
||||
|
||||
onEntered: {
|
||||
selected.visible = true;
|
||||
}
|
||||
|
||||
onExited: {
|
||||
selected.visible = false;
|
||||
}
|
||||
onClicked: {
|
||||
stack.messageVisible = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Row {
|
||||
id: feetConfig
|
||||
anchors.top: additional.bottom
|
||||
|
@ -379,6 +431,7 @@ Rectangle {
|
|||
if (checked) {
|
||||
hipBox.checked = true;
|
||||
feetBox.checked = true;
|
||||
shoulderBox.checked = false;
|
||||
}
|
||||
sendConfigurationSettings();
|
||||
}
|
||||
|
@ -416,6 +469,7 @@ Rectangle {
|
|||
if (checked) {
|
||||
hipBox.checked = true;
|
||||
feetBox.checked = true;
|
||||
chestBox.checked = false;
|
||||
}
|
||||
sendConfigurationSettings();
|
||||
}
|
||||
|
@ -463,7 +517,7 @@ Rectangle {
|
|||
anchors.leftMargin: leftMargin
|
||||
|
||||
radius: hifi.buttons.radius
|
||||
|
||||
|
||||
gradient: Gradient {
|
||||
GradientStop {
|
||||
position: 0.2
|
||||
|
@ -479,7 +533,7 @@ Rectangle {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
GradientStop {
|
||||
position: 1.0
|
||||
color: {
|
||||
|
@ -495,10 +549,10 @@ Rectangle {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
HiFiGlyphs {
|
||||
id: glyphButton
|
||||
color: enabled ? hifi.buttons.textColor[calibrationButton.color]
|
||||
|
@ -512,7 +566,7 @@ Rectangle {
|
|||
bottomMargin: 1
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
RalewayBold {
|
||||
id: calibrationText
|
||||
font.capitalization: Font.AllUppercase
|
||||
|
@ -527,7 +581,7 @@ Rectangle {
|
|||
topMargin: 7
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
|
@ -549,19 +603,19 @@ Rectangle {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
onPressed: {
|
||||
calibrationButton.pressed = true;
|
||||
}
|
||||
|
||||
|
||||
onReleased: {
|
||||
calibrationButton.pressed = false;
|
||||
}
|
||||
|
||||
|
||||
onEntered: {
|
||||
calibrationButton.hovered = true;
|
||||
}
|
||||
|
||||
|
||||
onExited: {
|
||||
calibrationButton.hovered = false;
|
||||
}
|
||||
|
@ -652,7 +706,7 @@ Rectangle {
|
|||
RalewayBold {
|
||||
id: advanceSettings
|
||||
|
||||
text: "Advance Settings"
|
||||
text: "Advanced Settings"
|
||||
size: 12
|
||||
|
||||
color: hifi.colors.white
|
||||
|
@ -683,7 +737,7 @@ Rectangle {
|
|||
RalewayBold {
|
||||
id: viveDesktopText
|
||||
size: 10
|
||||
text: "Use vive devices in desktop mode"
|
||||
text: "Use Vive devices in desktop mode"
|
||||
color: hifi.colors.white
|
||||
|
||||
anchors {
|
||||
|
@ -718,14 +772,14 @@ Rectangle {
|
|||
calibratingScreen = screen.createObject();
|
||||
stack.push(calibratingScreen);
|
||||
}
|
||||
|
||||
|
||||
if (status["calibrated"]) {
|
||||
calibrationScreen.success();
|
||||
|
||||
if (status["UI"]) {
|
||||
logAction("mocap_ui_success", status);
|
||||
}
|
||||
|
||||
|
||||
} else if (!status["calibrated"]) {
|
||||
calibrationScreen.failure();
|
||||
|
||||
|
@ -840,11 +894,11 @@ Rectangle {
|
|||
var handOverride = handSetting["override"];
|
||||
|
||||
var settingsChanged = false;
|
||||
|
||||
|
||||
if (lastConfiguration["bodyConfiguration"] !== bodySetting) {
|
||||
settingsChanged = true;
|
||||
}
|
||||
|
||||
|
||||
var lastHead = lastConfiguration["headConfiguration"];
|
||||
if (lastHead["override"] !== headOverride) {
|
||||
settingsChanged = true;
|
||||
|
@ -854,13 +908,13 @@ Rectangle {
|
|||
if (lastHand["override"] !== handOverride) {
|
||||
settingsChanged = true;
|
||||
}
|
||||
|
||||
|
||||
if (settingsChanged) {
|
||||
if ((!handOverride) && (!headOverride) && (bodySetting === "None")) {
|
||||
state = buttonState.apply;
|
||||
} else {
|
||||
state = buttonState.applyAndCalibrate;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (state == buttonState.apply) {
|
||||
state = buttonState.disabled;
|
||||
|
@ -868,7 +922,7 @@ Rectangle {
|
|||
state = buttonState.calibrate;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
lastConfiguration = settings;
|
||||
}
|
||||
|
||||
|
@ -885,7 +939,7 @@ Rectangle {
|
|||
state = buttonState.disabled;
|
||||
} else {
|
||||
state = buttonState.calibrate;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function updateCalibrationButton() {
|
||||
|
@ -951,7 +1005,7 @@ Rectangle {
|
|||
"Y": handYOffset.value,
|
||||
"Z": handZOffset.value
|
||||
}
|
||||
|
||||
|
||||
var settingsObject = {
|
||||
"bodyConfiguration": trackerConfiguration,
|
||||
"headConfiguration": headObject,
|
||||
|
|
|
@ -336,5 +336,6 @@ Item {
|
|||
readonly property string source: "\ue01c"
|
||||
readonly property string playback_play: "\ue01d"
|
||||
readonly property string stop_square: "\ue01e"
|
||||
readonly property string avatarTPose: "\ue01f"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -319,7 +319,7 @@ Menu::Menu() {
|
|||
QString("../../hifi/tablet/TabletLodPreferences.qml"), "LodPreferencesDialog");
|
||||
});
|
||||
|
||||
action = addActionToQMenuAndActionHash(settingsMenu, "Controller Settings");
|
||||
action = addActionToQMenuAndActionHash(settingsMenu, "Controller Settings...");
|
||||
connect(action, &QAction::triggered, [] {
|
||||
auto tablet = DependencyManager::get<TabletScriptingInterface>()->getTablet("com.highfidelity.interface.tablet.system");
|
||||
auto hmd = DependencyManager::get<HMDScriptingInterface>();
|
||||
|
|
Loading…
Reference in a new issue