diff --git a/base/camera.hpp b/base/camera.hpp index bcd8b35..a6a8847 100644 --- a/base/camera.hpp +++ b/base/camera.hpp @@ -49,7 +49,7 @@ private: matrices.view = LookAt(position, lookAtPoint, up, false, 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; }; @@ -222,13 +222,13 @@ public: glm::vec3 t = -R * from; // t = -R * from; //R = glm::transpose(R); - /**/ + glm::mat4 m = glm::mat4( xAxis.x, xAxis.y, xAxis.z, t.x, yAxis.x, yAxis.y, yAxis.z, t.y, zAxis.x, zAxis.y, zAxis.z, t.z, 0, 0, 0, 1); - + /**/ /* //R = glm::transpose(R); glm::mat4 m = glm::mat4( diff --git a/base/renderConfig.cpp b/base/renderConfig.cpp index 4b512f2..804497e 100644 --- a/base/renderConfig.cpp +++ b/base/renderConfig.cpp @@ -50,14 +50,16 @@ void PlumageConfig::PlumageConfiguration::readConfigurationFromToml(std::string 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 cameraTrackToFixation; auto cameraTracksAndAngleSize = std::min(cameraTracks.size(), cameraAngle.size()); settings.cameraTracks.resize(cameraTracksAndAngleSize); settings.cameraAngle.resize(cameraTracksAndAngleSize); + cameraTrackToFixation.resize(cameraTracksAndAngleSize); for (uint64_t i = 0; i < cameraTracksAndAngleSize; i++) { 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]), @@ -78,20 +80,21 @@ void PlumageConfig::PlumageConfiguration::readConfigurationFromToml(std::string settings.cameraFixation = cameraTracksRotationMatrix * glm::vec4(settings.cameraFixation, 1.0f); settings.bottomCenter = cameraTracksRotationMatrix * glm::vec4(settings.bottomCenter, 1.0f); - glm::vec3 translate =glm::vec3(0.f,0.f,0.f) - settings.bottomCenter; + glm::vec3 translate =glm::vec3(0.0f,0.0f,0.0f) - settings.bottomCenter; glm::mat4 trans = glm::mat4(1.0f); trans = glm::translate(trans, translate); settings.cameraFixation = trans * glm::vec4(settings.cameraFixation, 1.0f); + settings.bottomCenter = trans * glm::vec4(settings.bottomCenter, 1.0f); for (uint64_t i = 0; i < cameraTracksAndAngleSize; i++) { - settings.cameraTracks[i] = trans * glm::vec4(settings.cameraTracks[i], 1.0f); - settings.cameraTracks[i] = cameraTracksRotationMatrix * glm::vec4( settings.cameraTracks[i],1.0f) ; - settings.cameraTracks[i] = glm::vec3(settings.cameraTracks[i][0], -settings.cameraTracks[i][1], settings.cameraTracks[i][2]); - + 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); + settings.cameraTracks[i] = settings.bottomCenter + cameraTrackToFixation[i] ; settings.cameraAngle[i] = cameraTracksRotationMatrix * glm::mat4(settings.cameraAngle[i]) ; } //translate = settings.bottomCenter - ; - //trans = glm::translate(trans, translate); + trans = glm::translate(trans, translate); diff --git a/base/renderConfig.h b/base/renderConfig.h index 22029ee..7137787 100644 --- a/base/renderConfig.h +++ b/base/renderConfig.h @@ -45,7 +45,7 @@ namespace PlumageConfig uint32_t height = 720; bool multiSampling = false; // 多重采样 VkSampleCountFlagBits sampleCount = VK_SAMPLE_COUNT_4_BIT; // 多重采样倍率 - bool rotateModel = true; // 模型自旋转 + bool rotateModel = false; // 模型自旋转 float modelRotateSpeed = 2.0f; // 自旋转速度 uint32_t startFrameIndex = 1; // 图片序列开始帧 @@ -90,7 +90,7 @@ namespace PlumageConfig struct FilePath { //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 modelFragShaderPath = getAssetPath() + "buster_drone/shaders/glsl/mesh.frag.spv"; @@ -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_original_coord.toml"; + std::string configFilePath = getAssetPath() + "config/yukino_traj1_matrix.toml"; } filePath; diff --git a/data/config/yukino_original_coord.toml b/data/config/yukino_original_coord.toml index 77836e7..856f0ea 100644 --- a/data/config/yukino_original_coord.toml +++ b/data/config/yukino_original_coord.toml @@ -3,7 +3,7 @@ width = 1080 height = 720 multiSampling = false sampleCount = 4 -rotateModel = true +rotateModel = false modelRotateSpeed = 2.0 startFrameIndex = 1 endFrameIndex = 200 diff --git a/src/render/render.cpp b/src/render/render.cpp index e716d8e..a46dd65 100644 --- a/src/render/render.cpp +++ b/src/render/render.cpp @@ -1532,17 +1532,18 @@ 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 = (1.0f / modelSize) * modelSize; - glm::vec3 translate = -glm::vec3(models.scene.aabb[3][0], models.scene.aabb[3][1], models.scene.aabb[3][2]); - translate += -0.5f * glm::vec3(models.scene.aabb[0][0], models.scene.aabb[1][1], models.scene.aabb[2][2]); + float scale = 0.75f;//(1.0f / modelSize) * modelSize/4; + 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); + shaderDataScene.model[0][0] = scale; shaderDataScene.model[1][1] = 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)); //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]); @@ -1635,7 +1636,7 @@ PlumageRender::PlumageRender() //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.setPerspective(settings.fX, settings.fY, settings.cX, settings.cY, 0.1f, 100.0f); - camera.setLookAtPoint(settings.cameraFixation); + camera.setLookAtPoint(settings.bottomCenter); //camera.setUp(glm::vec3(0.f,1.f,0.f)); camera.setUp(glm::vec3(0.f,1.f,0.f)); camera.rotationSpeed = 0.25f;