修复相机使用旋转矩阵旋转失效

test-headless
ink-soul 2024-04-22 11:57:16 +08:00
parent 683d94a8d7
commit 9281b77178
4 changed files with 12 additions and 12 deletions

View File

@ -55,10 +55,10 @@ public:
glm::vec3 rotation = glm::vec3(); glm::vec3 rotation = glm::vec3();
glm::vec3 position = glm::vec3(); glm::vec3 position = glm::vec3();
glm::vec4 viewPos = glm::vec4(); glm::vec4 viewPos = glm::vec4();
glm::mat3 rotationMatrix = glm::mat3();
float rotationSpeed = 1.0f; float rotationSpeed = 1.0f;
float movementSpeed = 1.0f; float movementSpeed = 1.0f;
glm::mat3 rotationMatrix = glm::mat3();
bool updated = false; bool updated = false;
bool flipY = false; bool flipY = false;
@ -117,7 +117,7 @@ public:
void setRotation(glm::mat3 rotaionMatrix) void setRotation(glm::mat3 rotaionMatrix)
{ {
rotaionMatrix = rotaionMatrix; this->rotationMatrix = rotaionMatrix;
updateViewMatrix(); updateViewMatrix();
} }

View File

@ -40,15 +40,15 @@ void PlumageConfig::PlumageConfiguration::readConfigurationFromToml(std::string
size_t sz; size_t sz;
settings.cX = std::stof(cX, &sz); settings.cX = std::stof(cX, &sz);
settings.cY = std::stof(cY, &sz); settings.cY = std::stof(cY, &sz);
settings.bottomCenter = glm::vec3(bottomCenter[0], bottomCenter[1], bottomCenter[2]); settings.bottomCenter = glm::vec3(bottomCenter[0], -bottomCenter[1], -bottomCenter[2]);
settings.bottomNormal = glm::vec3(bottomNormal[0], bottomNormal[1], bottomNormal[2]); settings.bottomNormal = glm::vec3(bottomNormal[0], -bottomNormal[1], -bottomNormal[2]);
auto cameraTracksAndAngleSize = std::min(cameraTracks.size(), cameraAngle.size()); auto cameraTracksAndAngleSize = std::min(cameraTracks.size(), cameraAngle.size());
settings.cameraTracks.resize(cameraTracksAndAngleSize); settings.cameraTracks.resize(cameraTracksAndAngleSize);
settings.cameraAngle.resize(cameraTracksAndAngleSize); settings.cameraAngle.resize(cameraTracksAndAngleSize);
for (uint64_t i = 0; i < cameraTracksAndAngleSize; i++) for (uint64_t i = 0; i < cameraTracksAndAngleSize; i++)
{ {
settings.cameraTracks[i] = glm::vec3(cameraTracks[i][0], cameraTracks[i][1], cameraTracks[i][2]); settings.cameraTracks[i] = glm::vec3(cameraTracks[i][0], -cameraTracks[i][1], -cameraTracks[i][2]);
settings.cameraAngle[i] = glm::mat3(glm::vec3(cameraAngle[i][0][0], cameraAngle[i][0][1], cameraAngle[i][0][2]), settings.cameraAngle[i] = glm::mat3(glm::vec3(cameraAngle[i][0][0], cameraAngle[i][0][1], cameraAngle[i][0][2]),
glm::vec3(cameraAngle[i][1][0], cameraAngle[i][1][1], cameraAngle[i][1][2]), glm::vec3(cameraAngle[i][1][0], cameraAngle[i][1][1], cameraAngle[i][1][2]),

View File

@ -339,13 +339,10 @@ void VulkanExampleBase::renderLoop()
camera.setRotation(settings.cameraAngle[currentFrame]); camera.setRotation(settings.cameraAngle[currentFrame]);
renderFrame(); renderFrame();
if (currentFrame = settings.cameraTracks.size() ) currentFrame++;
if (currentFrame>=settings.cameraAngle.size()-1)
{ {
currentFrame = settings.cameraTracks.size()-1; currentFrame = settings.cameraAngle.size()-1;
}
else
{
currentFrame++;
} }
} }

View File

@ -1912,6 +1912,9 @@ PlumageRender::PlumageRender()
std::string commandLineImageSequencePath = filePath.totalImageOutputPath; std::string commandLineImageSequencePath = filePath.totalImageOutputPath;
//std::string commandLineCodecAndResultPath = resultVideoPath; //std::string commandLineCodecAndResultPath = resultVideoPath;
std::string commandLineFrameRate = std::to_string(settings.videoFrameRate); std::string commandLineFrameRate = std::to_string(settings.videoFrameRate);
std::filesystem::path image2videoBatFilePath = filePath.image2videoBatFilePath;
filePath.image2videoBatFilePath = image2videoBatFilePath.lexically_proximate(image2videoBatFilePath.root_path()).generic_string();
#if defined(_WIN32) #if defined(_WIN32)
std::string commandLine = filePath.image2videoBatFilePath + " " + commandLineFrameRate + " " + commandLineImageSequencePath + " " + resultVideoPath; std::string commandLine = filePath.image2videoBatFilePath + " " + commandLineFrameRate + " " + commandLineImageSequencePath + " " + resultVideoPath;
#else #else