完成基本的文件路径接入和COS判断
parent
088b8adfaf
commit
702098c8d0
|
@ -53,14 +53,22 @@ void PlumageConfig::PlumageConfiguration::readConfigurationFromToml(std::string
|
||||||
//settings.cleanUpImageSequece = toml::find_or<bool>(debug, "cleanUpImageSequece");
|
//settings.cleanUpImageSequece = toml::find_or<bool>(debug, "cleanUpImageSequece");
|
||||||
|
|
||||||
/*
|
/*
|
||||||
get fielPath
|
get filePath
|
||||||
*/
|
*/
|
||||||
|
|
||||||
auto& tomlFilePath = toml::find(config, "filePath");
|
auto& tomlFilePath = toml::find(config, "FilePath");
|
||||||
|
|
||||||
|
//gltf model path
|
||||||
|
filePath.glTFModelFilePath = setFilePathFromToml(tomlFilePath, "glTFModelFilePath");
|
||||||
|
filePath.envMapFilePath = setFilePathFromToml(tomlFilePath,"envMapFilePath");
|
||||||
|
filePath.imageOutputPath = setFilePathFromToml(tomlFilePath, "imageOutputPath");
|
||||||
|
filePath.videoOutputPath = setFilePathFromToml(tomlFilePath, "videoOutputPath");
|
||||||
|
//filePath. = setFilePathFromToml(tomlFilePath, );
|
||||||
|
//filePath. = setFilePathFromToml(tomlFilePath, );
|
||||||
|
//filePath. = setFilePathFromToml(tomlFilePath, );
|
||||||
|
//filePath.imageOutputPath = setFilePathFromToml(tomlFilePath, "imageOutputPath");
|
||||||
|
//filePath.videoOutputPath = setFilePathFromToml(tomlFilePath, "videoOutputPath");
|
||||||
|
|
||||||
// gltf model path
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
conversion: type and coordinate system
|
conversion: type and coordinate system
|
||||||
*/
|
*/
|
||||||
|
@ -114,38 +122,40 @@ void PlumageConfig::PlumageConfiguration::readConfigurationFromToml(std::string
|
||||||
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]) ;
|
||||||
}
|
}
|
||||||
//translate = settings.bottomCenter - ;
|
|
||||||
//trans = glm::translate(trans, translate);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//settings.bottomNormal = cameraTracksRotationMatrix * glm::vec4(settings.bottomNormal, 1.0f);
|
|
||||||
//float ratioX =(float)settings.width / (float)settings.calibrationWidth;
|
|
||||||
//float ratioY = (float)settings.height / (float)settings.calibrationHeight;
|
|
||||||
//settings.fX = settings.fX * ratioX;
|
|
||||||
//settings.fY = settings.fY * ratioY;
|
|
||||||
//settings.cX = settings.cX * ratioX;
|
|
||||||
//settings.cY = settings.cY * ratioY;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string PlumageConfig::PlumageConfiguration::checkFilePath(std::string configFilePath)
|
/**/
|
||||||
|
|
||||||
|
std::string PlumageConfig::PlumageConfiguration::setFilePathFromToml(toml::value & tomlValue,std::string tomlValueName)
|
||||||
{
|
{
|
||||||
std::filesystem::path filesystemConfigFilePath = configFilePath;
|
std::string filePathFromToml = toml::find<std::string>(tomlValue,tomlValueName);
|
||||||
if (std::filesystem::exists(filesystemConfigFilePath))
|
std::string pattern = "https?://[a-zA-Z0-9-]+\\.cos\\.ap-guangzhou\\.myqcloud\\.com";
|
||||||
|
std::regex urlRegex(pattern);
|
||||||
|
std::filesystem::path filesystemConfigFilePath ;
|
||||||
|
if (std::regex_search(filePathFromToml,urlRegex))
|
||||||
{
|
{
|
||||||
|
filesystemConfigFilePath = filePathFromToml;
|
||||||
return filesystemConfigFilePath.generic_string();
|
return filesystemConfigFilePath.generic_string();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
filesystemConfigFilePath = getAssetPath() + configFilePath;
|
if (std::filesystem::exists(filesystemConfigFilePath))
|
||||||
return filesystemConfigFilePath.generic_string();
|
{
|
||||||
|
return filesystemConfigFilePath.generic_string();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
std::filesystem::path assetPath = getAssetPath();
|
||||||
|
assetPath += filesystemConfigFilePath;
|
||||||
|
return assetPath.generic_string();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
glm::vec3 PlumageConfig::PlumageConfiguration::getTranslatedVector(glm::vec3 currentVector,glm::vec3 targetVector)
|
glm::vec3 PlumageConfig::PlumageConfiguration::getTranslatedVector(glm::vec3 currentVector,glm::vec3 targetVector)
|
||||||
{
|
{
|
||||||
glm::vec3 translate = glm::vec3(0.f,0.f,0.f) - targetVector;
|
glm::vec3 translate = glm::vec3(0.f,0.f,0.f) - targetVector;
|
||||||
|
|
|
@ -17,10 +17,11 @@
|
||||||
#include <glm/gtc/matrix_transform.hpp>
|
#include <glm/gtc/matrix_transform.hpp>
|
||||||
#include <glm/gtc/type_ptr.hpp>
|
#include <glm/gtc/type_ptr.hpp>
|
||||||
|
|
||||||
|
#include <regex>
|
||||||
#include <toml/toml.hpp>
|
#include <toml/toml.hpp>
|
||||||
#include <vulkan/vulkan.h>
|
#include <vulkan/vulkan.h>
|
||||||
#include <VulkanTools.h>
|
#include <VulkanTools.h>
|
||||||
|
#include <filesystem>
|
||||||
|
|
||||||
|
|
||||||
namespace PlumageConfig
|
namespace PlumageConfig
|
||||||
|
@ -33,24 +34,24 @@ namespace PlumageConfig
|
||||||
|
|
||||||
struct Settings {
|
struct Settings {
|
||||||
|
|
||||||
bool validation = true; // У<EFBFBD><EFBFBD>㿪<EFBFBD><EFBFBD>
|
bool validation = true; // vulkan validation switch
|
||||||
//bool fullscreen = false; // ȫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
//bool fullscreen = false; // fullscreen
|
||||||
bool vsync = false; // <EFBFBD><EFBFBD>ֱͬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
bool vsync = false; // vsync switch
|
||||||
bool headless = false; // <EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
bool headless = false; // headless render enable
|
||||||
bool outputPNGimage = false;
|
bool outputPNGimage = false;
|
||||||
bool debugMode = true;
|
bool debugMode = true;
|
||||||
bool cleanUpImageSequece = true; // ͼƬ<EFBFBD><EFBFBD><EFBFBD>п<EFBFBD><EFBFBD>أ<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD>
|
bool cleanUpImageSequece = true; // clean up image sequence after video codec complete
|
||||||
|
|
||||||
uint32_t width = 1280;
|
uint32_t width = 1280;
|
||||||
uint32_t height = 720;
|
uint32_t height = 720;
|
||||||
bool multiSampling = false; // <EFBFBD><EFBFBD><EFBFBD>ز<EFBFBD><EFBFBD><EFBFBD>
|
bool multiSampling = false; // mutisampling switch
|
||||||
VkSampleCountFlagBits sampleCount = VK_SAMPLE_COUNT_4_BIT; // <EFBFBD><EFBFBD><EFBFBD>ز<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
VkSampleCountFlagBits sampleCount = VK_SAMPLE_COUNT_4_BIT; // mutisampling pixel number
|
||||||
bool rotateModel = true; // ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת
|
bool rotateModel = true; // model self rotation
|
||||||
float modelRotateSpeed = 2.0f; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD>ٶ<EFBFBD>
|
float modelRotateSpeed = 2.0f; // model self rotation speed
|
||||||
|
|
||||||
uint32_t startFrameIndex = 1; // ͼƬ<EFBFBD><EFBFBD><EFBFBD>п<EFBFBD>ʼ֡
|
uint32_t startFrameIndex = 1; // mark the frame start to record video
|
||||||
uint32_t endFrameIndex = 50; // ͼƬ<EFBFBD><EFBFBD><EFBFBD>н<EFBFBD><EFBFBD><EFBFBD>֡
|
uint32_t endFrameIndex = 50; // mark the frame stop to record video
|
||||||
uint32_t videoFrameRate = 25; // video decode frameRate
|
uint32_t videoFrameRate = 25; // video encode frameRate
|
||||||
uint32_t selectedPhysicalDeviceIndex = 7;
|
uint32_t selectedPhysicalDeviceIndex = 7;
|
||||||
|
|
||||||
float fX = 565.5f;
|
float fX = 565.5f;
|
||||||
|
@ -77,13 +78,13 @@ namespace PlumageConfig
|
||||||
{
|
{
|
||||||
uint32_t width = 1280;
|
uint32_t width = 1280;
|
||||||
uint32_t height = 720;
|
uint32_t height = 720;
|
||||||
bool multiSampling = false; // <EFBFBD><EFBFBD><EFBFBD>ز<EFBFBD><EFBFBD><EFBFBD>
|
bool multiSampling = false; // mutisampling switch
|
||||||
uint32_t sampleCount = VK_SAMPLE_COUNT_4_BIT; // <EFBFBD><EFBFBD><EFBFBD>ز<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
uint32_t sampleCount = VK_SAMPLE_COUNT_4_BIT; // mutisampling pixel number
|
||||||
bool rotateModel = false; // ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת
|
bool rotateModel = false; // model self rotation
|
||||||
float modelRotateSpeed = 2.0f; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD>ٶ<EFBFBD>
|
float modelRotateSpeed = 2.0f; // model self rotation speed
|
||||||
uint32_t startFrameIndex = 1; // ͼƬ<EFBFBD><EFBFBD><EFBFBD>п<EFBFBD>ʼ֡
|
uint32_t startFrameIndex = 1; // mark the frame start to record video
|
||||||
uint32_t endFrameIndex = 50; // ͼƬ<EFBFBD><EFBFBD><EFBFBD>н<EFBFBD><EFBFBD><EFBFBD>֡
|
uint32_t endFrameIndex = 50; // mark the frame stop to record video
|
||||||
uint32_t videoFrameRate = 25; // <EFBFBD><EFBFBD>Ƶ֡<EFBFBD><EFBFBD>
|
uint32_t videoFrameRate = 25; // video encode frameRate
|
||||||
uint32_t selectedPhysicalDeviceIndex = 7;
|
uint32_t selectedPhysicalDeviceIndex = 7;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -91,7 +92,7 @@ namespace PlumageConfig
|
||||||
|
|
||||||
struct FilePath
|
struct FilePath
|
||||||
{ //model path
|
{ //model path
|
||||||
std::string glTFModelFilePath = getAssetPath() + "models/cube.gltf";
|
std::string glTFModelFilePath = getAssetPath() + "models/wooden_table_top_center.glb";
|
||||||
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";
|
||||||
|
|
||||||
|
@ -121,7 +122,7 @@ namespace PlumageConfig
|
||||||
std::string brdfVertShaderPath = getAssetPath() + "shaders/genbrdflut.vert.spv";
|
std::string brdfVertShaderPath = getAssetPath() + "shaders/genbrdflut.vert.spv";
|
||||||
std::string brdfFragShaderPath = getAssetPath() + "shaders/genbrdflut.frag.spv";
|
std::string brdfFragShaderPath = getAssetPath() + "shaders/genbrdflut.frag.spv";
|
||||||
// environment map texture
|
// environment map texture
|
||||||
std::string envMapFilePath = getAssetPath() + "environments/metro_noord_4k_hdr16f_cube.ktx";
|
std::string envMapFilePath = getAssetPath() + "environments/brown_photostudio_hdr16f_cube.ktx";
|
||||||
std::string emptyEnvmapFilePath = getAssetPath() + "textures/empty.ktx";
|
std::string emptyEnvmapFilePath = getAssetPath() + "textures/empty.ktx";
|
||||||
// pbr shader
|
// pbr shader
|
||||||
std::string pbrVertShaderPath = getAssetPath() + "shaders/pbr.vert.spv";
|
std::string pbrVertShaderPath = getAssetPath() + "shaders/pbr.vert.spv";
|
||||||
|
@ -143,7 +144,7 @@ namespace PlumageConfig
|
||||||
|
|
||||||
std::string hdr2ktxBatFilePath = getAssetPath() + "script/hdr2ktxBatFilePath.bat";
|
std::string hdr2ktxBatFilePath = getAssetPath() + "script/hdr2ktxBatFilePath.bat";
|
||||||
std::string hdr2ktxShFilePath = getAssetPath() + "script/hdr2ktxShFilePath.sh";
|
std::string hdr2ktxShFilePath = getAssetPath() + "script/hdr2ktxShFilePath.sh";
|
||||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
//
|
||||||
//std::string configFilePath = getAssetPath() + "config/guanzi.toml";
|
//std::string configFilePath = getAssetPath() + "config/guanzi.toml";
|
||||||
std::string configFilePath = getAssetPath() + "config/yukino_rotate_trans_matrix.toml";
|
std::string configFilePath = getAssetPath() + "config/yukino_rotate_trans_matrix.toml";
|
||||||
|
|
||||||
|
@ -153,7 +154,7 @@ namespace PlumageConfig
|
||||||
|
|
||||||
void readConfigurationFromToml(std::string configFilePath,Settings& settings);
|
void readConfigurationFromToml(std::string configFilePath,Settings& settings);
|
||||||
|
|
||||||
std::string checkFilePath(std::string configFilePath);
|
std::string setFilePathFromToml(toml::value& tomlValue, std::string tomlValueName);
|
||||||
|
|
||||||
void convertIntToVkSampleCount(uint32_t sampleCount);
|
void convertIntToVkSampleCount(uint32_t sampleCount);
|
||||||
|
|
||||||
|
|
|
@ -1,11 +0,0 @@
|
||||||
{
|
|
||||||
"endFrameIndex": 50,
|
|
||||||
"height": 720,
|
|
||||||
"multiSampling": false,
|
|
||||||
"rotateModel": true,
|
|
||||||
"sampleCount": 4,
|
|
||||||
"selectedPhysicalDeviceIndex": 7,
|
|
||||||
"startFrameIndex": 1,
|
|
||||||
"videoFrameRate": 25,
|
|
||||||
"width": 1280
|
|
||||||
}
|
|
|
@ -1,65 +0,0 @@
|
||||||
[settings]
|
|
||||||
width =1280
|
|
||||||
height =720
|
|
||||||
multiSampling =false
|
|
||||||
sampleCount =4
|
|
||||||
rotateModel =true
|
|
||||||
modelRotateSpeed =2.0
|
|
||||||
startFrameIndex =1
|
|
||||||
endFrameIndex =50
|
|
||||||
videoFrameRate =25
|
|
||||||
selectedPhysicalDeviceIndex =7
|
|
||||||
[settings.camera]
|
|
||||||
fovX =1.0
|
|
||||||
fovY =1.0
|
|
||||||
cX =2.0
|
|
||||||
cY =0.0
|
|
||||||
bottomCenter =[0.0,0.0,-6.0]
|
|
||||||
bottomNormal =[0.0,1.0,0.0]
|
|
||||||
cameraTracks =[[0.0,0.0,-6.0],[1.0,0.0,-3.0]]
|
|
||||||
cameraAngle =[[0.0,0.0,0.0],[45.0,0.0,0.0]]
|
|
||||||
[settings.debug]
|
|
||||||
validation = true
|
|
||||||
vsync = false
|
|
||||||
headless = false
|
|
||||||
outputPNGimage = false
|
|
||||||
debugMode = true
|
|
||||||
cleanUpImageSequence = true
|
|
||||||
configFilePath ="./data/config/config.toml"
|
|
||||||
[FilePath]
|
|
||||||
glTFModelFilePath ="./data/models/DamagedHelmet/DamagedHelmet.gltf"
|
|
||||||
envMapFilePath ="./data/environments/metro_noord_4k_hdr16f_cube.ktx"
|
|
||||||
imageOutputPath ="./data/output/imageSequence"
|
|
||||||
videoOutputPath ="./data/output/video"
|
|
||||||
|
|
||||||
[FilePath.ui]
|
|
||||||
uiVertShaderPath ="./data/shaders/ui.vert.spv"
|
|
||||||
uiFragShaderPath ="./data/shaders/ui.frag.spv"
|
|
||||||
[FilePath.skybox]
|
|
||||||
skyboxModelFilePath ="./data/models/cube.gltf"
|
|
||||||
skyboxVertShaderPath ="./data/shaders/skybox.vert.spv"
|
|
||||||
skyboxFragShaderPath ="./data/shaders/skybox.frag.spv"
|
|
||||||
[FilePath.tonemapping]
|
|
||||||
[FilePath.ibl]
|
|
||||||
[FilePath.pbr]
|
|
||||||
[FilePath.image2video]
|
|
||||||
[FilePath.hdr2ktx]
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -1532,13 +1532,13 @@ 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 = 5.f;
|
||||||
float scale =(1.0f / modelSize) * 4;
|
//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);
|
glm::vec3 translate = glm::vec3(0.f, 0.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;
|
||||||
|
@ -2022,11 +2022,11 @@ PlumageRender::PlumageRender()
|
||||||
|
|
||||||
std::cout << "vidoe codec complete,saved in:" << resultVideoPath << std::endl;
|
std::cout << "vidoe codec complete,saved in:" << resultVideoPath << std::endl;
|
||||||
std::cout << "star to clean up image sequence" << std::endl;
|
std::cout << "star to clean up image sequence" << std::endl;
|
||||||
if (settings.cleanUpImageSequece = true)
|
if (settings.cleanUpImageSequece == true)
|
||||||
{
|
{
|
||||||
removeImageSequence();
|
removeImageSequence();
|
||||||
}
|
}
|
||||||
signal.imageSequenceToVideoComplete = true;
|
signal.imageSequenceToVideoComplete == true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void PlumageRender::removeImageSequence()
|
void PlumageRender::removeImageSequence()
|
||||||
|
|
Loading…
Reference in New Issue