Added vertical FOV for PlanarProjection

This commit is contained in:
GPayne
2022-01-14 10:20:01 -07:00
parent 68119d6469
commit f6f18857ad
3 changed files with 75 additions and 36 deletions
@@ -53,7 +53,8 @@ public:
void uncheckWebGuiOption();
int projectionSelectedIndex();
int qualitySelectedIndex();
float fov();
float fovH();
float fovV();
float heightOffset();
enum ProjectionIndeces : unsigned int {
Planar = 0,
@@ -139,9 +140,12 @@ private:
QComboBox* _comboProjection = nullptr;
QComboBox* _comboQuality = nullptr;
QLabel* _labelFov = nullptr;
QLineEdit* _lineFov = nullptr;
QDoubleValidator* _validatorFov = nullptr;
QLabel* _labelFovH = nullptr;
QLineEdit* _lineFovH = nullptr;
QDoubleValidator* _validatorFovH = nullptr;
QLabel* _labelFovV = nullptr;
QLineEdit* _lineFovV = nullptr;
QDoubleValidator* _validatorFovV = nullptr;
QLabel* _labelHeightOffset = nullptr;
QLineEdit* _lineHeightOffset = nullptr;
QDoubleValidator* _validatorHeightOffset = nullptr;
@@ -166,8 +170,10 @@ private:
QHBoxLayout* _layoutCBoxSpoutOutput = nullptr;
QHBoxLayout* _layoutComboProjection = nullptr;
QHBoxLayout* _layoutComboQuality = nullptr;
QHBoxLayout* _layoutFov = nullptr;
QWidget* _layoutFovWrapper = nullptr;
QHBoxLayout* _layoutFovH = nullptr;
QHBoxLayout* _layoutFovV = nullptr;
QWidget* _layoutFovWrapperH = nullptr;
QWidget* _layoutFovWrapperV = nullptr;
QHBoxLayout* _layoutHeightOffset = nullptr;
QWidget* _layoutHeightOffsetWrapper = nullptr;
};
@@ -194,8 +194,10 @@ void FileSupport::saveProjectionInformation(bool isSpoutSelected, int projection
default:
{
sgct::config::PlanarProjection projection;
projection.fov.left = winControl->fov() / 2.0;
projection.fov.left = winControl->fovH() / 2.0;
projection.fov.right = projection.fov.left;
projection.fov.down = winControl->fovV() / 2.0;
projection.fov.up = projection.fov.down;
viewport.projection = std::move(projection);
}
break;
@@ -43,9 +43,12 @@ WindowControl::WindowControl(unsigned int monitorIndex, unsigned int windowIndex
_comboQuality = new QComboBox(this);
_comboQuality->addItems(_qualityTypes);
_lineFov = new QLineEdit("0.0", parent);
_validatorFov = new QDoubleValidator(-180.0, 180.0, 10);
_lineFov->setValidator(_validatorFov);
_lineFovH = new QLineEdit("80.0", parent);
_validatorFovH = new QDoubleValidator(-180.0, 180.0, 10);
_lineFovH->setValidator(_validatorFovH);
_lineFovV = new QLineEdit("50.534", parent);
_validatorFovV = new QDoubleValidator(-90.0, 90.0, 10);
_lineFovV->setValidator(_validatorFovV);
_lineHeightOffset = new QLineEdit("0.0", parent);
_validatorHeightOffset = new QDoubleValidator(-1000000.0, 1000000.0, 12);
_lineHeightOffset->setValidator(_validatorHeightOffset);
@@ -163,15 +166,24 @@ QVBoxLayout* WindowControl::initializeLayout(QWidget* parentWidget) {
_layoutComboQuality->addWidget(_comboQuality);
_layoutComboQuality->addStretch(1);
_layoutProjectionGroup->addLayout(_layoutComboQuality);
_layoutFov = new QHBoxLayout();
_labelFov = new QLabel();
_labelFov->setText("Horizontal FOV:");
_layoutFov->addWidget(_labelFov);
_layoutFov->addWidget(_lineFov);
_layoutFov->addStretch(1);
_layoutFovWrapper = new QWidget();
_layoutFovWrapper->setLayout(_layoutFov);
_layoutProjectionGroup->addWidget(_layoutFovWrapper);
_layoutFovH = new QHBoxLayout();
_labelFovH = new QLabel();
_labelFovH->setText("Horizontal FOV:");
_layoutFovH->addWidget(_labelFovH);
_layoutFovH->addWidget(_lineFovH);
_layoutFovH->addStretch(1);
_layoutFovV = new QHBoxLayout();
_labelFovV = new QLabel();
_labelFovV->setText("Vertical FOV:");
_layoutFovV->addWidget(_labelFovV);
_layoutFovV->addWidget(_lineFovV);
_layoutFovV->addStretch(1);
_layoutFovWrapperH = new QWidget();
_layoutFovWrapperH->setLayout(_layoutFovH);
_layoutFovWrapperV = new QWidget();
_layoutFovWrapperV->setLayout(_layoutFovV);
_layoutProjectionGroup->addWidget(_layoutFovWrapperH);
_layoutProjectionGroup->addWidget(_layoutFovWrapperV);
_layoutHeightOffset = new QHBoxLayout();
_labelHeightOffset = new QLabel();
_labelHeightOffset->setText("Height Offset:");
@@ -317,8 +329,10 @@ void WindowControl::onProjectionChanged(int newSelection) {
switch (newSelection) {
case ProjectionIndeces::Planar:
_comboQuality->setEnabled(false);
_labelFov->setEnabled(true);
_lineFov->setEnabled(true);
_labelFovH->setEnabled(true);
_lineFovH->setEnabled(true);
_labelFovV->setEnabled(true);
_lineFovV->setEnabled(true);
_labelHeightOffset->setEnabled(false);
_lineHeightOffset->setEnabled(false);
_checkBoxSpoutOutput->setEnabled(false);
@@ -326,8 +340,10 @@ void WindowControl::onProjectionChanged(int newSelection) {
case ProjectionIndeces::Fisheye:
_comboQuality->setEnabled(true);
_labelFov->setEnabled(false);
_lineFov->setEnabled(false);
_labelFovH->setEnabled(false);
_lineFovH->setEnabled(false);
_labelFovV->setEnabled(false);
_lineFovV->setEnabled(false);
_labelHeightOffset->setEnabled(false);
_lineHeightOffset->setEnabled(false);
_checkBoxSpoutOutput->setEnabled(true);
@@ -335,8 +351,10 @@ void WindowControl::onProjectionChanged(int newSelection) {
case ProjectionIndeces::Spherical_Mirror:
_comboQuality->setEnabled(true);
_labelFov->setEnabled(false);
_lineFov->setEnabled(false);
_labelFovH->setEnabled(false);
_lineFovH->setEnabled(false);
_labelFovV->setEnabled(false);
_lineFovV->setEnabled(false);
_labelHeightOffset->setEnabled(false);
_lineHeightOffset->setEnabled(false);
_checkBoxSpoutOutput->setEnabled(false);
@@ -344,8 +362,10 @@ void WindowControl::onProjectionChanged(int newSelection) {
case ProjectionIndeces::Cylindrical:
_comboQuality->setEnabled(true);
_labelFov->setEnabled(false);
_lineFov->setEnabled(false);
_labelFovH->setEnabled(false);
_lineFovH->setEnabled(false);
_labelFovV->setEnabled(false);
_lineFovV->setEnabled(false);
_labelHeightOffset->setEnabled(true);
_lineHeightOffset->setEnabled(true);
_checkBoxSpoutOutput->setEnabled(false);
@@ -353,8 +373,10 @@ void WindowControl::onProjectionChanged(int newSelection) {
case ProjectionIndeces::Equirectangular:
_comboQuality->setEnabled(true);
_labelFov->setEnabled(false);
_lineFov->setEnabled(false);
_labelFovH->setEnabled(false);
_lineFovH->setEnabled(false);
_labelFovV->setEnabled(false);
_lineFovV->setEnabled(false);
_labelHeightOffset->setEnabled(false);
_lineHeightOffset->setEnabled(false);
_checkBoxSpoutOutput->setEnabled(true);
@@ -452,8 +474,12 @@ int WindowControl::qualitySelectedIndex() {
return _comboQuality->currentIndex();
}
float WindowControl::fov() {
return _lineFov->text().toFloat();
float WindowControl::fovH() {
return _lineFovH->text().toFloat();
}
float WindowControl::fovV() {
return _lineFovV->text().toFloat();
}
float WindowControl::heightOffset() {
@@ -486,9 +512,12 @@ WindowControl::~WindowControl()
delete _comboProjection;
delete _comboQuality;
delete _fullscreenButton;
delete _labelFov;
delete _lineFov;
delete _validatorFov;
delete _labelFovH;
delete _lineFovH;
delete _validatorFovH;
delete _labelFovV;
delete _lineFovV;
delete _validatorFovV;
delete _labelHeightOffset;
delete _lineHeightOffset;
delete _validatorHeightOffset;
@@ -498,8 +527,10 @@ WindowControl::~WindowControl()
delete _layoutCBoxSpoutOutput;
delete _layoutComboProjection;
delete _layoutComboQuality;
delete _layoutFov;
delete _layoutFovWrapper;
delete _layoutFovH;
delete _layoutFovV;
delete _layoutFovWrapperH;
delete _layoutFovWrapperV;
delete _layoutHeightOffset;
delete _layoutHeightOffsetWrapper;
delete _layoutProjectionGroup;