mirror of
https://github.com/overte-org/overte.git
synced 2025-08-08 12:17:45 +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 {
|
HiFiGlyphs {
|
||||||
id: image
|
id: image
|
||||||
text: hifi.glyphs.avatar1
|
text: hifi.glyphs.avatarTPose
|
||||||
size: 190
|
size: 190
|
||||||
color: hifi.colors.white
|
color: hifi.colors.white
|
||||||
|
|
||||||
|
|
|
@ -16,6 +16,7 @@ import "../../controls-uit" as HifiControls
|
||||||
StackView {
|
StackView {
|
||||||
id: stack
|
id: stack
|
||||||
initialItem: inputConfiguration
|
initialItem: inputConfiguration
|
||||||
|
property alias messageVisible: imageMessageBox.visible
|
||||||
Rectangle {
|
Rectangle {
|
||||||
id: inputConfiguration
|
id: inputConfiguration
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
|
@ -26,6 +27,15 @@ StackView {
|
||||||
|
|
||||||
property var pluginSettings: null
|
property var pluginSettings: null
|
||||||
|
|
||||||
|
HifiControls.ImageMessageBox {
|
||||||
|
id: imageMessageBox
|
||||||
|
anchors.fill: parent
|
||||||
|
z: 2000
|
||||||
|
imageWidth: 442
|
||||||
|
imageHeight: 670
|
||||||
|
source: "../../../images/calibration-help.png"
|
||||||
|
}
|
||||||
|
|
||||||
Rectangle {
|
Rectangle {
|
||||||
width: inputConfiguration.width
|
width: inputConfiguration.width
|
||||||
height: 1
|
height: 1
|
||||||
|
@ -167,7 +177,7 @@ StackView {
|
||||||
loader.item.pluginName = box.currentText;
|
loader.item.pluginName = box.currentText;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (loader.item.hasOwnProperty("displayInformation")) {
|
if (loader.item.hasOwnProperty("displayInformation")) {
|
||||||
loader.item.displayConfiguration();
|
loader.item.displayConfiguration();
|
||||||
}
|
}
|
||||||
|
@ -183,20 +193,20 @@ StackView {
|
||||||
return InputConfiguration.activeInputPlugins();
|
return InputConfiguration.activeInputPlugins();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function initialize() {
|
function initialize() {
|
||||||
changeSource();
|
changeSource();
|
||||||
}
|
}
|
||||||
|
|
||||||
function changeSource() {
|
function changeSource() {
|
||||||
loader.source = "";
|
loader.source = "";
|
||||||
var source = "";
|
var source = "";
|
||||||
if (box.currentText == "Vive") {
|
if (box.currentText == "Vive") {
|
||||||
source = InputConfiguration.configurationLayout("OpenVR");
|
source = InputConfiguration.configurationLayout("OpenVR");
|
||||||
} else {
|
} else {
|
||||||
source = InputConfiguration.configurationLayout(box.currentText);
|
source = InputConfiguration.configurationLayout(box.currentText);
|
||||||
}
|
}
|
||||||
|
|
||||||
loader.source = source;
|
loader.source = source;
|
||||||
if (source === "") {
|
if (source === "") {
|
||||||
box.label = "(not configurable)";
|
box.label = "(not configurable)";
|
||||||
|
@ -204,14 +214,14 @@ StackView {
|
||||||
box.label = "";
|
box.label = "";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Timer {
|
Timer {
|
||||||
id: timer
|
id: timer
|
||||||
repeat: false
|
repeat: false
|
||||||
interval: 300
|
interval: 300
|
||||||
onTriggered: initialize()
|
onTriggered: initialize()
|
||||||
}
|
}
|
||||||
|
|
||||||
Component.onCompleted: {
|
Component.onCompleted: {
|
||||||
timer.start();
|
timer.start();
|
||||||
}
|
}
|
||||||
|
|
|
@ -50,9 +50,12 @@ Rectangle {
|
||||||
readonly property int apply: 1
|
readonly property int apply: 1
|
||||||
readonly property int applyAndCalibrate: 2
|
readonly property int applyAndCalibrate: 2
|
||||||
readonly property int calibrate: 3
|
readonly property int calibrate: 3
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
MouseArea {
|
MouseArea {
|
||||||
id: mouseArea
|
id: mouseArea
|
||||||
|
@ -64,6 +67,7 @@ Rectangle {
|
||||||
mouse.accepted = false;
|
mouse.accepted = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
color: hifi.colors.baseGray
|
color: hifi.colors.baseGray
|
||||||
|
|
||||||
RalewayBold {
|
RalewayBold {
|
||||||
|
@ -146,6 +150,7 @@ Rectangle {
|
||||||
label: "Y: offset"
|
label: "Y: offset"
|
||||||
minimumValue: -10
|
minimumValue: -10
|
||||||
stepSize: 0.0254
|
stepSize: 0.0254
|
||||||
|
value: -0.05
|
||||||
colorScheme: hifi.colorSchemes.dark
|
colorScheme: hifi.colorSchemes.dark
|
||||||
|
|
||||||
onEditingFinished: {
|
onEditingFinished: {
|
||||||
|
@ -161,15 +166,16 @@ Rectangle {
|
||||||
minimumValue: -10
|
minimumValue: -10
|
||||||
stepSize: 0.0254
|
stepSize: 0.0254
|
||||||
decimals: 4
|
decimals: 4
|
||||||
|
value: -0.05
|
||||||
colorScheme: hifi.colorSchemes.dark
|
colorScheme: hifi.colorSchemes.dark
|
||||||
|
|
||||||
onEditingFinished: {
|
onEditingFinished: {
|
||||||
sendConfigurationSettings();
|
sendConfigurationSettings();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
RalewayBold {
|
RalewayBold {
|
||||||
id: hands
|
id: hands
|
||||||
|
|
||||||
|
@ -245,7 +251,7 @@ Rectangle {
|
||||||
anchors.left: openVrConfiguration.left
|
anchors.left: openVrConfiguration.left
|
||||||
anchors.leftMargin: leftMargin + 10
|
anchors.leftMargin: leftMargin + 10
|
||||||
spacing: 10
|
spacing: 10
|
||||||
|
|
||||||
HifiControls.SpinBox {
|
HifiControls.SpinBox {
|
||||||
id: handYOffset
|
id: handYOffset
|
||||||
decimals: 4
|
decimals: 4
|
||||||
|
@ -269,7 +275,7 @@ Rectangle {
|
||||||
stepSize: 0.0254
|
stepSize: 0.0254
|
||||||
decimals: 4
|
decimals: 4
|
||||||
colorScheme: hifi.colorSchemes.dark
|
colorScheme: hifi.colorSchemes.dark
|
||||||
|
|
||||||
onEditingFinished: {
|
onEditingFinished: {
|
||||||
sendConfigurationSettings();
|
sendConfigurationSettings();
|
||||||
}
|
}
|
||||||
|
@ -290,6 +296,52 @@ Rectangle {
|
||||||
anchors.leftMargin: leftMargin
|
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 {
|
Row {
|
||||||
id: feetConfig
|
id: feetConfig
|
||||||
anchors.top: additional.bottom
|
anchors.top: additional.bottom
|
||||||
|
@ -379,6 +431,7 @@ Rectangle {
|
||||||
if (checked) {
|
if (checked) {
|
||||||
hipBox.checked = true;
|
hipBox.checked = true;
|
||||||
feetBox.checked = true;
|
feetBox.checked = true;
|
||||||
|
shoulderBox.checked = false;
|
||||||
}
|
}
|
||||||
sendConfigurationSettings();
|
sendConfigurationSettings();
|
||||||
}
|
}
|
||||||
|
@ -416,6 +469,7 @@ Rectangle {
|
||||||
if (checked) {
|
if (checked) {
|
||||||
hipBox.checked = true;
|
hipBox.checked = true;
|
||||||
feetBox.checked = true;
|
feetBox.checked = true;
|
||||||
|
chestBox.checked = false;
|
||||||
}
|
}
|
||||||
sendConfigurationSettings();
|
sendConfigurationSettings();
|
||||||
}
|
}
|
||||||
|
@ -463,7 +517,7 @@ Rectangle {
|
||||||
anchors.leftMargin: leftMargin
|
anchors.leftMargin: leftMargin
|
||||||
|
|
||||||
radius: hifi.buttons.radius
|
radius: hifi.buttons.radius
|
||||||
|
|
||||||
gradient: Gradient {
|
gradient: Gradient {
|
||||||
GradientStop {
|
GradientStop {
|
||||||
position: 0.2
|
position: 0.2
|
||||||
|
@ -479,7 +533,7 @@ Rectangle {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
GradientStop {
|
GradientStop {
|
||||||
position: 1.0
|
position: 1.0
|
||||||
color: {
|
color: {
|
||||||
|
@ -495,10 +549,10 @@ Rectangle {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
HiFiGlyphs {
|
HiFiGlyphs {
|
||||||
id: glyphButton
|
id: glyphButton
|
||||||
color: enabled ? hifi.buttons.textColor[calibrationButton.color]
|
color: enabled ? hifi.buttons.textColor[calibrationButton.color]
|
||||||
|
@ -512,7 +566,7 @@ Rectangle {
|
||||||
bottomMargin: 1
|
bottomMargin: 1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
RalewayBold {
|
RalewayBold {
|
||||||
id: calibrationText
|
id: calibrationText
|
||||||
font.capitalization: Font.AllUppercase
|
font.capitalization: Font.AllUppercase
|
||||||
|
@ -527,7 +581,7 @@ Rectangle {
|
||||||
topMargin: 7
|
topMargin: 7
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
MouseArea {
|
MouseArea {
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
|
@ -549,19 +603,19 @@ Rectangle {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
onPressed: {
|
onPressed: {
|
||||||
calibrationButton.pressed = true;
|
calibrationButton.pressed = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
onReleased: {
|
onReleased: {
|
||||||
calibrationButton.pressed = false;
|
calibrationButton.pressed = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
onEntered: {
|
onEntered: {
|
||||||
calibrationButton.hovered = true;
|
calibrationButton.hovered = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
onExited: {
|
onExited: {
|
||||||
calibrationButton.hovered = false;
|
calibrationButton.hovered = false;
|
||||||
}
|
}
|
||||||
|
@ -652,7 +706,7 @@ Rectangle {
|
||||||
RalewayBold {
|
RalewayBold {
|
||||||
id: advanceSettings
|
id: advanceSettings
|
||||||
|
|
||||||
text: "Advance Settings"
|
text: "Advanced Settings"
|
||||||
size: 12
|
size: 12
|
||||||
|
|
||||||
color: hifi.colors.white
|
color: hifi.colors.white
|
||||||
|
@ -683,7 +737,7 @@ Rectangle {
|
||||||
RalewayBold {
|
RalewayBold {
|
||||||
id: viveDesktopText
|
id: viveDesktopText
|
||||||
size: 10
|
size: 10
|
||||||
text: "Use vive devices in desktop mode"
|
text: "Use Vive devices in desktop mode"
|
||||||
color: hifi.colors.white
|
color: hifi.colors.white
|
||||||
|
|
||||||
anchors {
|
anchors {
|
||||||
|
@ -718,14 +772,14 @@ Rectangle {
|
||||||
calibratingScreen = screen.createObject();
|
calibratingScreen = screen.createObject();
|
||||||
stack.push(calibratingScreen);
|
stack.push(calibratingScreen);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (status["calibrated"]) {
|
if (status["calibrated"]) {
|
||||||
calibrationScreen.success();
|
calibrationScreen.success();
|
||||||
|
|
||||||
if (status["UI"]) {
|
if (status["UI"]) {
|
||||||
logAction("mocap_ui_success", status);
|
logAction("mocap_ui_success", status);
|
||||||
}
|
}
|
||||||
|
|
||||||
} else if (!status["calibrated"]) {
|
} else if (!status["calibrated"]) {
|
||||||
calibrationScreen.failure();
|
calibrationScreen.failure();
|
||||||
|
|
||||||
|
@ -840,11 +894,11 @@ Rectangle {
|
||||||
var handOverride = handSetting["override"];
|
var handOverride = handSetting["override"];
|
||||||
|
|
||||||
var settingsChanged = false;
|
var settingsChanged = false;
|
||||||
|
|
||||||
if (lastConfiguration["bodyConfiguration"] !== bodySetting) {
|
if (lastConfiguration["bodyConfiguration"] !== bodySetting) {
|
||||||
settingsChanged = true;
|
settingsChanged = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
var lastHead = lastConfiguration["headConfiguration"];
|
var lastHead = lastConfiguration["headConfiguration"];
|
||||||
if (lastHead["override"] !== headOverride) {
|
if (lastHead["override"] !== headOverride) {
|
||||||
settingsChanged = true;
|
settingsChanged = true;
|
||||||
|
@ -854,13 +908,13 @@ Rectangle {
|
||||||
if (lastHand["override"] !== handOverride) {
|
if (lastHand["override"] !== handOverride) {
|
||||||
settingsChanged = true;
|
settingsChanged = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (settingsChanged) {
|
if (settingsChanged) {
|
||||||
if ((!handOverride) && (!headOverride) && (bodySetting === "None")) {
|
if ((!handOverride) && (!headOverride) && (bodySetting === "None")) {
|
||||||
state = buttonState.apply;
|
state = buttonState.apply;
|
||||||
} else {
|
} else {
|
||||||
state = buttonState.applyAndCalibrate;
|
state = buttonState.applyAndCalibrate;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (state == buttonState.apply) {
|
if (state == buttonState.apply) {
|
||||||
state = buttonState.disabled;
|
state = buttonState.disabled;
|
||||||
|
@ -868,7 +922,7 @@ Rectangle {
|
||||||
state = buttonState.calibrate;
|
state = buttonState.calibrate;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
lastConfiguration = settings;
|
lastConfiguration = settings;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -885,7 +939,7 @@ Rectangle {
|
||||||
state = buttonState.disabled;
|
state = buttonState.disabled;
|
||||||
} else {
|
} else {
|
||||||
state = buttonState.calibrate;
|
state = buttonState.calibrate;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateCalibrationButton() {
|
function updateCalibrationButton() {
|
||||||
|
@ -951,7 +1005,7 @@ Rectangle {
|
||||||
"Y": handYOffset.value,
|
"Y": handYOffset.value,
|
||||||
"Z": handZOffset.value
|
"Z": handZOffset.value
|
||||||
}
|
}
|
||||||
|
|
||||||
var settingsObject = {
|
var settingsObject = {
|
||||||
"bodyConfiguration": trackerConfiguration,
|
"bodyConfiguration": trackerConfiguration,
|
||||||
"headConfiguration": headObject,
|
"headConfiguration": headObject,
|
||||||
|
|
|
@ -336,5 +336,6 @@ Item {
|
||||||
readonly property string source: "\ue01c"
|
readonly property string source: "\ue01c"
|
||||||
readonly property string playback_play: "\ue01d"
|
readonly property string playback_play: "\ue01d"
|
||||||
readonly property string stop_square: "\ue01e"
|
readonly property string stop_square: "\ue01e"
|
||||||
|
readonly property string avatarTPose: "\ue01f"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -319,7 +319,7 @@ Menu::Menu() {
|
||||||
QString("../../hifi/tablet/TabletLodPreferences.qml"), "LodPreferencesDialog");
|
QString("../../hifi/tablet/TabletLodPreferences.qml"), "LodPreferencesDialog");
|
||||||
});
|
});
|
||||||
|
|
||||||
action = addActionToQMenuAndActionHash(settingsMenu, "Controller Settings");
|
action = addActionToQMenuAndActionHash(settingsMenu, "Controller Settings...");
|
||||||
connect(action, &QAction::triggered, [] {
|
connect(action, &QAction::triggered, [] {
|
||||||
auto tablet = DependencyManager::get<TabletScriptingInterface>()->getTablet("com.highfidelity.interface.tablet.system");
|
auto tablet = DependencyManager::get<TabletScriptingInterface>()->getTablet("com.highfidelity.interface.tablet.system");
|
||||||
auto hmd = DependencyManager::get<HMDScriptingInterface>();
|
auto hmd = DependencyManager::get<HMDScriptingInterface>();
|
||||||
|
|
Loading…
Reference in a new issue