#include "renderConfig.h" void PlumageConfig::PlumageConfiguration::readConfigurationFromToml(std::string configFilePath,Settings& settings) { auto config = toml::parse(configFilePath); auto& tomlSettings = toml::find(config, "settings"); settings.width = toml::find(tomlSettings, "width"); settings.height = toml::find(tomlSettings, "height"); settings.multiSampling = toml::find(tomlSettings, "multiSampling"); auto sampleCount = toml::find(tomlSettings, "sampleCount"); settings.rotateModel = toml::find(tomlSettings, "rotateModel"); settings.modelRotateSpeed = toml::find(tomlSettings, "modelRotateSpeed"); settings.startFrameIndex = toml::find(tomlSettings, "startFrameIndex"); settings.endFrameIndex = toml::find(tomlSettings, "endFrameIndex"); settings.videoFrameRate = toml::find(tomlSettings, "videoFrameRate"); auto& camera = toml::find(tomlSettings, "camera"); settings.calibrationWidth = toml::find(camera, "cam_width"); settings.calibrationHeight = toml::find(camera, "cam_height"); std::string fX = toml::find(camera, "fx"); std::string fY = toml::find(camera, "fy"); std::string cX = toml::find(camera, "cX"); std::string cY = toml::find(camera, "cY"); std::vector bottomCenter = toml::find>(camera, "bottomCenter"); std::vector bottomNormal = toml::find>(camera, "bottomNormal"); std::vector> cameraTracks = toml::find>>(camera, "cameraTracks"); std::vector>> cameraAngle = toml::find>>>(camera, "cameraAngle"); auto& debug = toml::find(tomlSettings, "debug"); settings.validation = toml::find(debug, "validation"); settings.vsync = toml::find(debug, "vsync"); settings.headless = toml::find(debug, "headless"); settings.outputPNGimage = toml::find(debug, "outputPNGimage"); settings.debugMode = toml::find(debug, "debugMode"); //settings.cleanUpImageSequece = toml::find_or(debug, "cleanUpImageSequece"); /* conversion */ size_t sz; settings.fX = std::stof(fX, &sz); settings.fY = std::stof(fY, &sz); settings.cX = std::stof(cX, &sz); settings.cY = std::stof(cY, &sz); settings.bottomCenter = glm::vec3(bottomCenter[0], -bottomCenter[1], -bottomCenter[2]); settings.bottomNormal = glm::vec3(bottomNormal[0], -bottomNormal[1], -bottomNormal[2]); auto cameraTracksAndAngleSize = std::min(cameraTracks.size(), cameraAngle.size()); settings.cameraTracks.resize(cameraTracksAndAngleSize); settings.cameraAngle.resize(cameraTracksAndAngleSize); for (uint64_t i = 0; i < cameraTracksAndAngleSize; i++) { 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]), glm::vec3(cameraAngle[i][1][0], cameraAngle[i][1][1], cameraAngle[i][1][2]), glm::vec3(cameraAngle[i][2][0], cameraAngle[i][2][1], cameraAngle[i][2][2])); } float ratioX = settings.width / settings.calibrationWidth; float ratioY = settings.height / settings.calibrationWidth; settings.fX = settings.fX * ratioX; settings.fY = settings.fY * ratioY; settings.cX = settings.cX * ratioX; settings.cY = settings.cY * ratioY; } PlumageConfig::PlumageConfiguration::PlumageConfiguration() { readConfigurationFromToml(filePath.configFilePath, settings); } PlumageConfig::PlumageConfiguration::~PlumageConfiguration() { }