From da9cec1a426d6ef3139d02794c5e1b8690808161 Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Wed, 23 Oct 2013 08:44:26 +0200 Subject: accela: configurable axis speed Signed-off-by: Stanislaw Halik --- .../ftnoir_accela_filtercontrols.ui | 229 ++++++++++++++++++++- ftnoir_filter_accela/ftnoir_filter_accela.cpp | 25 ++- ftnoir_filter_accela/ftnoir_filter_accela.h | 1 + .../ftnoir_filter_accela_dialog.cpp | 60 ++++++ 4 files changed, 302 insertions(+), 13 deletions(-) diff --git a/ftnoir_filter_accela/ftnoir_accela_filtercontrols.ui b/ftnoir_filter_accela/ftnoir_accela_filtercontrols.ui index ba77f1a8..2dac7a51 100644 --- a/ftnoir_filter_accela/ftnoir_accela_filtercontrols.ui +++ b/ftnoir_filter_accela/ftnoir_accela_filtercontrols.ui @@ -9,8 +9,8 @@ 0 0 - 615 - 68 + 623 + 293 @@ -21,8 +21,8 @@ - 616 - 68 + 42000 + 42000 @@ -160,7 +160,7 @@ background:none; 541 10 - 42 + 51 22 @@ -225,6 +225,225 @@ background:none; Cancel + + + + 440 + 70 + 151 + 214 + + + + Axis speed + + + + QFormLayout::ExpandingFieldsGrow + + + 20 + + + + + X + + + + + + + 4 + + + 0.100000000000000 + + + 3.000000000000000 + + + 0.100000000000000 + + + 1.000000000000000 + + + + + + + Y + + + + + + + 4 + + + 0.100000000000000 + + + 3.000000000000000 + + + 0.100000000000000 + + + 1.000000000000000 + + + + + + + Z + + + + + + + 4 + + + 0.100000000000000 + + + 3.000000000000000 + + + 0.100000000000000 + + + 1.000000000000000 + + + + + + + Yaw + + + + + + + false + + + 4 + + + 0.100000000000000 + + + 3.000000000000000 + + + 0.100000000000000 + + + 1.000000000000000 + + + + + + + Pitch + + + + + + + false + + + 4 + + + 0.100000000000000 + + + 3.000000000000000 + + + 0.100000000000000 + + + 1.000000000000000 + + + + + + + Roll + + + + + + + false + + + 4 + + + 0.100000000000000 + + + 3.000000000000000 + + + 0.100000000000000 + + + 1.000000000000000 + + + + + + + + + 20 + 100 + 371 + 51 + + + + QFrame::NoFrame + + + Accela filter by Stanisław Halik <sthalik@misaki.pl> +With kind help from Donovan Baarda. +2012-2013 + + + Qt::AutoText + + + false + + + Qt::AlignJustify|Qt::AlignTop + + + true + + + 0 + + diff --git a/ftnoir_filter_accela/ftnoir_filter_accela.cpp b/ftnoir_filter_accela/ftnoir_filter_accela.cpp index 76f6e687..25716973 100644 --- a/ftnoir_filter_accela/ftnoir_filter_accela.cpp +++ b/ftnoir_filter_accela/ftnoir_filter_accela.cpp @@ -34,6 +34,22 @@ void FTNoIR_Filter::loadSettings() { rotation_alpha = iniFile.value("rotation-alpha", ACCELA_SMOOTHING_ROTATION).toDouble(); translation_alpha = iniFile.value("translation-alpha", ACCELA_SMOOTHING_TRANSLATION).toDouble(); iniFile.endGroup (); + + iniFile.beginGroup("Accela-Scaling"); + // bigger means less filtering + static const double init_scaling[] = { + 1.5, // X + 1.5, // Y + 1, // Z + 0.8, // Yaw + 0.9, // Pitch + 1.25 // Roll + }; + for (int i = 0; i < 6; i++) + { + scaling[i] = iniFile.value(QString("axis-%1").arg(QString::number(i)), init_scaling[i]).toDouble(); + } + iniFile.endGroup(); } void FTNoIR_Filter::receiveSettings(double rot, double trans, double zoom_fac) @@ -69,14 +85,7 @@ void FTNoIR_Filter::FilterHeadPoseData(const double* target_camera_position, QMutexLocker foo(&mutex); - static const double scaling[] = { - 1.5, - 1.5, - 1, - 1, - 1, - 1 - }; + for (int i=0;i<6;i++) { diff --git a/ftnoir_filter_accela/ftnoir_filter_accela.h b/ftnoir_filter_accela/ftnoir_filter_accela.h index f1807fd0..512b4576 100644 --- a/ftnoir_filter_accela/ftnoir_filter_accela.h +++ b/ftnoir_filter_accela/ftnoir_filter_accela.h @@ -54,6 +54,7 @@ private: bool first_run; double rotation_alpha, translation_alpha, zoom_factor; double current_camera_position[6]; + double scaling[6]; }; //******************************************************************************************************* diff --git a/ftnoir_filter_accela/ftnoir_filter_accela_dialog.cpp b/ftnoir_filter_accela/ftnoir_filter_accela_dialog.cpp index 6ae1e4bc..4cd45910 100644 --- a/ftnoir_filter_accela/ftnoir_filter_accela_dialog.cpp +++ b/ftnoir_filter_accela/ftnoir_filter_accela_dialog.cpp @@ -26,6 +26,7 @@ #include #include #include +#include #include "facetracknoir/global-settings.h" //******************************************************************************************************* @@ -49,6 +50,20 @@ FilterControls::FilterControls() : connect(ui.slideZoom, SIGNAL(valueChanged(int)), this, SLOT(settingChanged(int))); connect(ui.spinZoom, SIGNAL(valueChanged(int)), this, SLOT(settingChanged(int))); + QDoubleSpinBox* boxen[] = { + ui.doubleSpinBox, + ui.doubleSpinBox_2, + ui.doubleSpinBox_3, + ui.doubleSpinBox_4, + ui.doubleSpinBox_5, + ui.doubleSpinBox_6, + }; + + for (int i = 0; i < 6; i++) + { + connect(boxen[i], SIGNAL(valueChanged(double)), this, SLOT(settingChanged(double))); + } + qDebug() << "FilterControls() says: started"; } @@ -147,6 +162,34 @@ void FilterControls::loadSettings() { ui.translation_alpha->setValue(iniFile.value("translation-alpha", ACCELA_SMOOTHING_TRANSLATION).toDouble()); iniFile.endGroup (); + iniFile.beginGroup("Accela-Scaling"); + // bigger means less filtering + static const double init_scaling[] = { + 1.5, // X + 1.5, // Y + 1, // Z + 0.8, // Yaw + 0.9, // Pitch + 1.25 // Roll + }; + + QDoubleSpinBox* boxen[] = { + ui.doubleSpinBox, + ui.doubleSpinBox_2, + ui.doubleSpinBox_3, + ui.doubleSpinBox_4, + ui.doubleSpinBox_5, + ui.doubleSpinBox_6, + }; + + for (int i = 0; i < 6; i++) + { + boxen[i]->setValue(iniFile.value(QString("axis-%1").arg(QString::number(i)), init_scaling[i]).toDouble()); + } + iniFile.endGroup(); + + + settingsDirty = false; } @@ -169,6 +212,23 @@ void FilterControls::save() { iniFile.setValue("translation-alpha", trans = ui.translation_alpha->value()); iniFile.endGroup (); + iniFile.beginGroup("Accela-Scaling"); + + QDoubleSpinBox* boxen[] = { + ui.doubleSpinBox, + ui.doubleSpinBox_2, + ui.doubleSpinBox_3, + ui.doubleSpinBox_4, + ui.doubleSpinBox_5, + ui.doubleSpinBox_6, + }; + + for (int i = 0; i < 6; i++) + { + iniFile.setValue(QString("axis-%1").arg(QString::number(i)), boxen[i]->value()); + } + iniFile.endGroup(); + settingsDirty = false; if (accela_filter) -- cgit v1.2.3