mirror of
https://github.com/Linloir/SceneEditor.git
synced 2025-12-19 00:18:12 +08:00
[UI][FIX] Fix direction light setting
- fix dir light not turning off - fix dir light direction slider malfunctioning
This commit is contained in:
parent
14f7c8b33a
commit
830522ef79
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
#define LOCALLOGLEVEL DEBUG
|
#define LOCALLOGLEVEL INFO
|
||||||
|
|
||||||
class Logger {
|
class Logger {
|
||||||
public:
|
public:
|
||||||
|
|||||||
@ -229,7 +229,7 @@ void SceneViewer::paintGL() {
|
|||||||
_dirLight->updateShader(_shaderProgram, 0);
|
_dirLight->updateShader(_shaderProgram, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
_shaderProgram.setUniform("dirlightnr", _dirLight != nullptr ? 1 : 0);
|
_shaderProgram.setUniform("dirlightnr", _dirLight != nullptr && _dirLightOn ? 1 : 0);
|
||||||
|
|
||||||
// Render objects
|
// Render objects
|
||||||
for (auto object : _objects) {
|
for (auto object : _objects) {
|
||||||
|
|||||||
@ -162,7 +162,7 @@ SettingPage::SettingPage(QWidget* parent) :
|
|||||||
});
|
});
|
||||||
|
|
||||||
_dirLightTheta = new ModelAttributeSlide("Rotate\u03B8", 0, 360, 3600, _mainWidget);
|
_dirLightTheta = new ModelAttributeSlide("Rotate\u03B8", 0, 360, 3600, _mainWidget);
|
||||||
_dirLightTheta->setValue(0);
|
_dirLightTheta->setValue(270);
|
||||||
_dirLightTheta->setEnabled(false);
|
_dirLightTheta->setEnabled(false);
|
||||||
_mainLayout->addWidget(_dirLightTheta);
|
_mainLayout->addWidget(_dirLightTheta);
|
||||||
_dirLightTheta->show();
|
_dirLightTheta->show();
|
||||||
@ -170,15 +170,15 @@ SettingPage::SettingPage(QWidget* parent) :
|
|||||||
// Calculate direction vector by theta and phi
|
// Calculate direction vector by theta and phi
|
||||||
float theta = _dirLightTheta->val(); // theta angle
|
float theta = _dirLightTheta->val(); // theta angle
|
||||||
float phi = _dirLightPhi->val(); // phi angle
|
float phi = _dirLightPhi->val(); // phi angle
|
||||||
float x = sin(theta) * cos(phi);
|
float x = sin(glm::radians(phi)) * cos(glm::radians(theta));
|
||||||
float y = sin(theta) * sin(phi);
|
float y = sin(glm::radians(phi)) * sin(glm::radians(theta));
|
||||||
float z = cos(theta);
|
float z = cos(glm::radians(phi));
|
||||||
glm::vec3 dir = glm::vec3(x, y, z);
|
glm::vec3 dir = glm::normalize(glm::vec3(x, y, z));
|
||||||
emit onSettingsChanged(QPair<QString, QString>("dirLightDir", QString::number(dir.x) + "," + QString::number(dir.y) + "," + QString::number(dir.z)));
|
emit onSettingsChanged(QPair<QString, QString>("dirLightDir", QString::number(dir.x) + "," + QString::number(dir.y) + "," + QString::number(dir.z)));
|
||||||
});
|
});
|
||||||
|
|
||||||
_dirLightPhi = new ModelAttributeSlide("Rotate\u03C6", 0, 360, 3600, _mainWidget);
|
_dirLightPhi = new ModelAttributeSlide("Rotate\u03C6", 0, 360, 3600, _mainWidget);
|
||||||
_dirLightPhi->setValue(0);
|
_dirLightPhi->setValue(90);
|
||||||
_dirLightPhi->setEnabled(false);
|
_dirLightPhi->setEnabled(false);
|
||||||
_mainLayout->addWidget(_dirLightPhi);
|
_mainLayout->addWidget(_dirLightPhi);
|
||||||
_dirLightPhi->show();
|
_dirLightPhi->show();
|
||||||
@ -186,10 +186,10 @@ SettingPage::SettingPage(QWidget* parent) :
|
|||||||
// Calculate direction vector by theta and phi
|
// Calculate direction vector by theta and phi
|
||||||
float theta = _dirLightTheta->val(); // theta angle
|
float theta = _dirLightTheta->val(); // theta angle
|
||||||
float phi = _dirLightPhi->val(); // phi angle
|
float phi = _dirLightPhi->val(); // phi angle
|
||||||
float x = sin(theta) * cos(phi);
|
float x = sin(glm::radians(phi)) * cos(glm::radians(theta));
|
||||||
float y = sin(theta) * sin(phi);
|
float y = sin(glm::radians(phi)) * sin(glm::radians(theta));
|
||||||
float z = cos(theta);
|
float z = cos(glm::radians(phi));
|
||||||
glm::vec3 dir = glm::vec3(x, y, z);
|
glm::vec3 dir = glm::normalize(glm::vec3(x, y, z));
|
||||||
emit onSettingsChanged(QPair<QString, QString>("dirLightDir", QString::number(dir.x) + "," + QString::number(dir.y) + "," + QString::number(dir.z)));
|
emit onSettingsChanged(QPair<QString, QString>("dirLightDir", QString::number(dir.x) + "," + QString::number(dir.y) + "," + QString::number(dir.z)));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user