test-headless
ink-soul 2024-04-28 15:28:46 +08:00
parent a8b5ebfb4c
commit f598bb1541
5 changed files with 35 additions and 16 deletions

View File

@ -46,7 +46,7 @@ private:
this->forward = glm::normalize(lookAtPoint - position); this->forward = glm::normalize(lookAtPoint - position);
//matrices.view = getLookAtViewMatrix(); //matrices.view = getLookAtViewMatrix();
//matrices.view = transM * rotM ; //matrices.view = transM * glm::transpose(rotM) ;
// matrices.view = transM * glm::transpose(rotationMatrix);//LookAt(position, to, up, false, true);//transM * glm::transpose(glm::inverse(rotationMatrix)); // matrices.view = transM * glm::transpose(rotationMatrix);//LookAt(position, to, up, false, true);//transM * glm::transpose(glm::inverse(rotationMatrix));
matrices.view = LookAt(position, lookAtPoint, up, true, true); matrices.view = LookAt(position, lookAtPoint, up, true, true);
} }

View File

@ -4,8 +4,12 @@
void PlumageConfig::PlumageConfiguration::readConfigurationFromToml(std::string configFilePath,Settings& settings) void PlumageConfig::PlumageConfiguration::readConfigurationFromToml(std::string configFilePath,Settings& settings)
{ {
/*
parse config file
*/
auto config = toml::parse(configFilePath); auto config = toml::parse(configFilePath);
// get settings
auto& tomlSettings = toml::find(config, "settings"); auto& tomlSettings = toml::find(config, "settings");
settings.width = toml::find<uint32_t>(tomlSettings, "width"); settings.width = toml::find<uint32_t>(tomlSettings, "width");
@ -17,6 +21,11 @@ void PlumageConfig::PlumageConfiguration::readConfigurationFromToml(std::string
settings.startFrameIndex = toml::find<uint32_t>(tomlSettings, "startFrameIndex"); settings.startFrameIndex = toml::find<uint32_t>(tomlSettings, "startFrameIndex");
settings.endFrameIndex = toml::find<uint32_t>(tomlSettings, "endFrameIndex"); settings.endFrameIndex = toml::find<uint32_t>(tomlSettings, "endFrameIndex");
settings.videoFrameRate = toml::find<uint32_t>(tomlSettings, "videoFrameRate"); settings.videoFrameRate = toml::find<uint32_t>(tomlSettings, "videoFrameRate");
/*
get settings.camera
*/
auto& camera = toml::find(tomlSettings, "camera"); auto& camera = toml::find(tomlSettings, "camera");
settings.calibrationWidth = toml::find<int>(camera, "cam_width"); settings.calibrationWidth = toml::find<int>(camera, "cam_width");
settings.calibrationHeight = toml::find<int>(camera, "cam_height"); settings.calibrationHeight = toml::find<int>(camera, "cam_height");
@ -24,12 +33,17 @@ void PlumageConfig::PlumageConfiguration::readConfigurationFromToml(std::string
std::string fY = toml::find<std::string>(camera, "fy"); std::string fY = toml::find<std::string>(camera, "fy");
std::string cX = toml::find<std::string>(camera, "cX"); std::string cX = toml::find<std::string>(camera, "cX");
std::string cY = toml::find<std::string>(camera, "cY"); std::string cY = toml::find<std::string>(camera, "cY");
std::vector<float> pedestledModelTopCenter = toml::find<std::vector<float>>(camera, "pedestledModelTopCenter");
std::vector<float> bottomCenter = toml::find<std::vector<float>>(camera, "bottomCenter"); std::vector<float> bottomCenter = toml::find<std::vector<float>>(camera, "bottomCenter");
std::vector<int> bottomNormal = toml::find<std::vector<int>>(camera, "bottomNormal"); std::vector<int> bottomNormal = toml::find<std::vector<int>>(camera, "bottomNormal");
std::vector<float> cameraFixation = toml::find<std::vector<float>>(camera, "center"); std::vector<float> cameraFixation = toml::find<std::vector<float>>(camera, "center");
std::vector<std::vector<float>> cameraTracks = toml::find<std::vector<std::vector<float>>>(camera, "cameraTracks"); std::vector<std::vector<float>> cameraTracks = toml::find<std::vector<std::vector<float>>>(camera, "cameraTracks");
std::vector<std::vector<std::vector<float>>> cameraAngle = toml::find<std::vector<std::vector<std::vector<float>>>>(camera, "cameraAngle"); std::vector<std::vector<std::vector<float>>> cameraAngle = toml::find<std::vector<std::vector<std::vector<float>>>>(camera, "cameraAngle");
/*
get settings.debug
*/
auto& debug = toml::find(tomlSettings, "debug"); auto& debug = toml::find(tomlSettings, "debug");
settings.validation = toml::find<bool>(debug, "validation"); settings.validation = toml::find<bool>(debug, "validation");
settings.vsync = toml::find<bool>(debug, "vsync"); settings.vsync = toml::find<bool>(debug, "vsync");
@ -38,6 +52,8 @@ void PlumageConfig::PlumageConfiguration::readConfigurationFromToml(std::string
settings.debugMode = toml::find<bool>(debug, "debugMode"); settings.debugMode = toml::find<bool>(debug, "debugMode");
//settings.cleanUpImageSequece = toml::find_or<bool>(debug, "cleanUpImageSequece"); //settings.cleanUpImageSequece = toml::find_or<bool>(debug, "cleanUpImageSequece");
//
/* /*
conversion: type and coordinate system conversion: type and coordinate system
*/ */
@ -47,16 +63,17 @@ void PlumageConfig::PlumageConfiguration::readConfigurationFromToml(std::string
settings.fY = std::stof(fY, &sz); settings.fY = std::stof(fY, &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]);
settings.cameraFixation = glm::vec3(cameraFixation[0], -cameraFixation[1], -cameraFixation[2]); settings.cameraFixation = glm::vec3(cameraFixation[0], -cameraFixation[1], cameraFixation[2]);
std::vector<glm::vec3> cameraTrackToFixation;
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);
cameraTrackToFixation.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]);
cameraTrackToFixation[i] = settings.cameraTracks[i] - settings.bottomCenter; cameraTrackToFixation[i] = settings.cameraTracks[i] - settings.bottomCenter;
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]),
@ -86,7 +103,7 @@ void PlumageConfig::PlumageConfiguration::readConfigurationFromToml(std::string
{ {
cameraTrackToFixation[i] = cameraTracksRotationMatrix * glm::vec4(cameraTrackToFixation[i], 1.0f); cameraTrackToFixation[i] = cameraTracksRotationMatrix * glm::vec4(cameraTrackToFixation[i], 1.0f);
cameraTrackToFixation[i] = trans * glm::vec4(cameraTrackToFixation[i], 1.0f); cameraTrackToFixation[i] = trans * glm::vec4(cameraTrackToFixation[i], 1.0f);
cameraTrackToFixation[i] = glm::vec3(std::truncf(cameraTrackToFixation[i][0] * 10000) / 10000, std::truncf(cameraTrackToFixation[i][1] * 10000)/10000, -std::truncf(cameraTrackToFixation[i][2] * 10000)/10000); cameraTrackToFixation[i] = glm::vec3(std::truncf(cameraTrackToFixation[i][0] * 10000) / 10000, std::truncf(cameraTrackToFixation[i][1] * 10000)/10000, std::truncf(cameraTrackToFixation[i][2] * 10000)/10000);
settings.cameraTracks[i] = settings.bottomCenter + cameraTrackToFixation[i] ; settings.cameraTracks[i] = settings.bottomCenter + cameraTrackToFixation[i] ;
settings.cameraAngle[i] = cameraTracksRotationMatrix * glm::mat4(settings.cameraAngle[i]) ; settings.cameraAngle[i] = cameraTracksRotationMatrix * glm::mat4(settings.cameraAngle[i]) ;
} }

View File

@ -50,7 +50,7 @@ namespace PlumageConfig
uint32_t startFrameIndex = 1; // ͼƬ<CDBC><C6AC><EFBFBD>п<EFBFBD>ʼ֡ uint32_t startFrameIndex = 1; // ͼƬ<CDBC><C6AC><EFBFBD>п<EFBFBD>ʼ֡
uint32_t endFrameIndex = 50; // ͼƬ<CDBC><C6AC><EFBFBD>н<EFBFBD><D0BD><EFBFBD>֡ uint32_t endFrameIndex = 50; // ͼƬ<CDBC><C6AC><EFBFBD>н<EFBFBD><D0BD><EFBFBD>֡
uint32_t videoFrameRate = 25; // <EFBFBD><EFBFBD>Ƶ֡<EFBFBD><EFBFBD> uint32_t videoFrameRate = 25; // video decode frameRate
uint32_t selectedPhysicalDeviceIndex = 7; uint32_t selectedPhysicalDeviceIndex = 7;
float fX = 565.5f; float fX = 565.5f;
@ -61,6 +61,7 @@ namespace PlumageConfig
float cY = 238.8f; float cY = 238.8f;
int calibrationWidth = 640.0f; int calibrationWidth = 640.0f;
int calibrationHeight = 480.0f; int calibrationHeight = 480.0f;
glm::vec3 pedestledModelTopCenter = { 0.f,-5.f,0.f };
glm::vec3 bottomCenter = { 0.f,0.f,-6.f }; glm::vec3 bottomCenter = { 0.f,0.f,-6.f };
//std::vector<float> bottomCenter = { 0.f,0.f,-6.f }; //std::vector<float> bottomCenter = { 0.f,0.f,-6.f };
glm::vec3 bottomNormal = { 0,1,0 }; glm::vec3 bottomNormal = { 0,1,0 };
@ -90,7 +91,7 @@ namespace PlumageConfig
struct FilePath struct FilePath
{ //model path { //model path
std::string glTFModelFilePath = getAssetPath() + "models/classic_round_side_table.glb"; std::string glTFModelFilePath = getAssetPath() + "models/cube.gltf";
std::string modelVertShaderPath = getAssetPath() + "buster_drone/shaders/glsl/mesh.vert.spv"; std::string modelVertShaderPath = getAssetPath() + "buster_drone/shaders/glsl/mesh.vert.spv";
std::string modelFragShaderPath = getAssetPath() + "buster_drone/shaders/glsl/mesh.frag.spv"; std::string modelFragShaderPath = getAssetPath() + "buster_drone/shaders/glsl/mesh.frag.spv";

File diff suppressed because one or more lines are too long

View File

@ -1533,18 +1533,18 @@ PlumageRender::PlumageRender()
float modelSize = std::max(models.scene.aabb[0][0], std::max(models.scene.aabb[1][1], models.scene.aabb[2][2])); float modelSize = std::max(models.scene.aabb[0][0], std::max(models.scene.aabb[1][1], models.scene.aabb[2][2]));
// Center and scale model // Center and scale model
//float scale = 0.25f; //float scale = 0.25f;
float scale =(1.0f / modelSize) * 0.1; float scale =(1.0f / modelSize) * 4;
glm::vec3 translate = glm::vec3(models.scene.aabb[3][0], models.scene.aabb[3][1], models.scene.aabb[3][2]); //glm::vec3 translate = glm::vec3(models.scene.aabb[3][0], models.scene.aabb[3][1], models.scene.aabb[3][2]);
//translate += - modelSize / 4 * glm::vec3(models.scene.aabb[0][0], models.scene.aabb[1][1], models.scene.aabb[2][2]); //translate += - modelSize / 4 * glm::vec3(models.scene.aabb[0][0], models.scene.aabb[1][1], models.scene.aabb[2][2]);
//glm::vec3 translate = glm::vec3(0.f, 0.f, 0.f); //glm::vec3 translate = glm::vec3(0.f, 0.f, 0.f);
//camera.setPosition(glm::vec3(0, 0, -modelSize - 2)); //camera.setPosition(glm::vec3(0, 0, -modelSize - 2));
glm::vec3 translate = glm::vec3(0.f, -5.0f, 0.f);
shaderDataScene.model = glm::mat4(1.0f); shaderDataScene.model = glm::mat4(1.0f);
//translate += glm::vec3(0.0f, 0.f, 0.f) - settings.cameraFixation; //translate += glm::vec3(0.0f, 0.f, 0.f) - settings.cameraFixation;
shaderDataScene.model[0][0] = scale; shaderDataScene.model[0][0] = scale;
shaderDataScene.model[1][1] = scale; shaderDataScene.model[1][1] = scale;
shaderDataScene.model[2][2] = scale; shaderDataScene.model[2][2] = scale;
//shaderDataScene.model = glm::translate(shaderDataScene.model, translate); shaderDataScene.model = glm::translate(shaderDataScene.model, translate);
//camera.setPosition(glm::vec3(0, 0, -modelSize - 2)); //camera.setPosition(glm::vec3(0, 0, -modelSize - 2));
//glm::vec3 aabbMax = glm::vec3(models.scene.aabb[0][0], models.scene.aabb[1][1], models.scene.aabb[2][2]); //glm::vec3 aabbMax = glm::vec3(models.scene.aabb[0][0], models.scene.aabb[1][1], models.scene.aabb[2][2]);
//glm::vec3 aabbMin = glm::vec3(models.scene.aabb[3][0], models.scene.aabb[3][1], models.scene.aabb[3][2]); //glm::vec3 aabbMin = glm::vec3(models.scene.aabb[3][0], models.scene.aabb[3][1], models.scene.aabb[3][2]);