update config

test-headless
InkSoul 2024-04-28 00:41:08 +08:00
parent 2e2808962f
commit deb39f20d7
5 changed files with 66 additions and 33 deletions

View File

@ -43,13 +43,15 @@ private:
}
else
{
//matrices.view = lookAt(position, lookAtPoint);
this->forward = glm::normalize(lookAtPoint - position);
//matrices.view = getLookAtViewMatrix();
//matrices.view = transM * rotM ;
// matrices.view = transM * glm::inverse(glm::transpose(rotationMatrix));//LookAt(position, to, up, false, true);//transM * glm::transpose(glm::inverse(rotationMatrix));
matrices.view = LookAt(position, lookAtPoint, up, false, true);
// 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);
}
viewPos = glm::vec4(position, 0.0f) * glm::vec4(-1.0f, 1.0f, -1.0f, 1.0f);
//viewPos = glm::vec4(position, 0.0f) * glm::vec4(-1.0f, 1.0f, -1.0f, 1.0f);
updated = true;
};
@ -61,6 +63,7 @@ public:
glm::vec3 position = glm::vec3();
glm::vec4 viewPos = glm::vec4();
glm::vec3 lookAtPoint = glm::vec3();
glm::vec3 forward = glm::normalize(lookAtPoint - position);
glm::vec3 up = glm::vec3();
glm::mat4 rotationMatrix = glm::mat4();
@ -146,7 +149,7 @@ public:
float r = (viewWidth - u0) / fx * znear;
float t = -v0 / fy * znear;
float b = (viewHeight - v0) / fy * znear;
glm::mat4 perspective = glm::mat4();
glm::mat4 perspective = glm::mat4(1.f);
if (rightHand)
{
if (zPositive)
@ -189,7 +192,7 @@ public:
if (zPositive)
{ // rightHand = true and zPositive = true, usually used in 3d reconstruction
yAxis = -yAxis;
//zAxis = -zAxis;
}
else
{ // rightHand = true and zPositive = false, usually used in OpenGL
@ -249,19 +252,9 @@ public:
}
glm::mat4 lookAt(glm::vec3 position, glm::vec3 lookAtPoint)
glm::mat4 getLookAtViewMatrix()
{
glm::vec3 translate = position - this->position;
glm::vec3 forward = glm::normalize(lookAtPoint - position);
glm::vec3 right = glm::normalize(glm::cross(glm::vec3(0, 1, 0), forward));
glm::vec3 up = glm::cross(forward, right);
glm::mat4 rotationMatrix = glm::mat4(glm::vec4(right, 0.0f),
glm::vec4(up, 0.0f),
glm::vec4(-forward, 0.0f),
glm::vec4(0.0f, 0.0f, 0.0f, 1.0f));
glm::mat4 viewMatrix = glm::translate(rotationMatrix, translate);
this->position = position;
return viewMatrix;
return glm::lookAt(position, position + forward, up);
}
/*

View File

@ -25,7 +25,7 @@ void PlumageConfig::PlumageConfiguration::readConfigurationFromToml(std::string
std::string cX = toml::find<std::string>(camera, "cX");
std::string cY = toml::find<std::string>(camera, "cY");
std::vector<float> bottomCenter = toml::find<std::vector<float>>(camera, "bottomCenter");
std::vector<float> bottomNormal = toml::find<std::vector<float>>(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<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");
@ -47,9 +47,9 @@ void PlumageConfig::PlumageConfiguration::readConfigurationFromToml(std::string
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]);
settings.cameraFixation = glm::vec3(cameraFixation[0], -cameraFixation[1], -cameraFixation[2]);
settings.bottomCenter = glm::vec3(bottomCenter[0], bottomCenter[1], -bottomCenter[2]);
settings.bottomNormal = glm::vec3(bottomNormal[0], bottomNormal[1], -bottomNormal[2]);
settings.cameraFixation = glm::vec3(cameraFixation[0], cameraFixation[1], -cameraFixation[2]);
std::vector<glm::vec3> cameraTrackToFixation;
auto cameraTracksAndAngleSize = std::min(cameraTracks.size(), cameraAngle.size());
settings.cameraTracks.resize(cameraTracksAndAngleSize);
@ -58,12 +58,12 @@ void PlumageConfig::PlumageConfiguration::readConfigurationFromToml(std::string
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;
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]));
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]));
}
@ -89,7 +89,7 @@ void PlumageConfig::PlumageConfiguration::readConfigurationFromToml(std::string
{
cameraTrackToFixation[i] = cameraTracksRotationMatrix * 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.cameraAngle[i] = cameraTracksRotationMatrix * glm::mat4(settings.cameraAngle[i]) ;
}

View File

@ -63,7 +63,7 @@ namespace PlumageConfig
int calibrationHeight = 480.0f;
glm::vec3 bottomCenter = { 0.f,0.f,-6.f };
//std::vector<float> bottomCenter = { 0.f,0.f,-6.f };
glm::vec3 bottomNormal = { 0.f,1.0f,0.f };
glm::vec3 bottomNormal = { 0,1,0 };
glm::vec3 cameraFixation = { -0.5f,1.5f,1.79f };
std::vector<glm::vec3> cameraTracks = { {0.f,0.f,-6.f},{1.f,0.f,-3.f} };
std::vector<glm::mat3> cameraAngle = { {{0.f,0.f,0.f},{45.f,0.f,0.f},{0.f,0.f,0.f}},{{0.f,0.f,0.f},{45.f,0.f,0.f},{0.f,0.f,0.f}} };
@ -144,7 +144,7 @@ namespace PlumageConfig
std::string hdr2ktxShFilePath = getAssetPath() + "script/hdr2ktxShFilePath.sh";
// 配置文件路径,命令行传入后保存在这
//std::string configFilePath = getAssetPath() + "config/guanzi.toml";
std::string configFilePath = getAssetPath() + "config/yukino_traj1_matrix.toml";
std::string configFilePath = getAssetPath() + "config/yukino_rotate_trans_matrix.toml";
} filePath;

File diff suppressed because one or more lines are too long

View File

@ -1532,14 +1532,15 @@ PlumageRender::PlumageRender()
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
float scale = 0.75f;//(1.0f / modelSize) * modelSize/4;
//float scale = 0.25f;
float scale =(1.0f / modelSize) * 0.1;
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]);
//glm::vec3 translate = glm::vec3(0.f, 0.f, 0.f);
//camera.setPosition(glm::vec3(0, 0, -modelSize - 2));
translate = glm::vec3(-0.0f, -5.0f, -0.0f);
shaderDataScene.model = glm::mat4(1.0f);
//translate += glm::vec3(0.0f, 0.f, 0.f) - settings.cameraFixation;
shaderDataScene.model[0][0] = scale;
shaderDataScene.model[1][1] = scale;
shaderDataScene.model[2][2] = scale;
@ -1634,9 +1635,9 @@ PlumageRender::PlumageRender()
camera.type = Camera::CameraType::lookat;
//camera.setPerspective(glm::radians(45.f), settings.width / settings.height, 1.f, 256.f);
camera.setProjectionMatrix(settings.fX,settings.fY,settings.cX,settings.cY,1.f, 256.f,settings.width,settings.height,false,true);
camera.setProjectionMatrix(settings.fX,settings.fY,settings.cX,settings.cY,1.f, 256.f,settings.width,settings.height,true,true);
//camera.setPerspective(settings.fX, settings.fY, settings.cX, settings.cY, 0.1f, 100.0f);
camera.setLookAtPoint(settings.bottomCenter);
camera.setLookAtPoint(settings.cameraFixation);
//camera.setUp(glm::vec3(0.f,1.f,0.f));
camera.setUp(glm::vec3(0.f,1.f,0.f));
camera.rotationSpeed = 0.25f;