1 #include <IO/CameraLoader/CameraLoader.hpp>
3 #include <Core/Asset/FileData.hpp>
4 #include <Core/Utils/StringUtils.hpp>
10 const std::string camExt {
"cam" };
15 using namespace Core::Utils;
16 using namespace Core::Asset;
18 std::vector<std::string> CameraFileLoader::getFileExtensions()
const {
19 return std::vector<std::string>( {
"*." + camExt } );
22 bool CameraFileLoader::handleFileExtension(
const std::string& extension )
const {
23 return extension == camExt;
26 FileData* CameraFileLoader::loadFile(
const std::string& filename ) {
28 auto fileData =
new FileData( filename );
29 if ( !fileData->isInitialized() ) {
31 LOG( logERROR ) <<
"[CameraLoader] Filedata cannot be initialized.";
34 if ( fileData->isVerbose() ) { LOG( logERROR ) <<
"[CameraLoader] File Loading begin..."; }
37 std::ifstream ss( filename );
38 if ( !ss.is_open() ) {
40 LOG( logERROR ) <<
"[CameraLoader] Camera file " << filename <<
" cannot be read.";
45 std::clock_t startTime = std::clock();
49 Scalar fov, znear, zfar, zoom, aspect;
51 bool result = !ss.fail();
54 for ( uint i = 0; i < 16; ++i ) {
58 ss >> fov >> znear >> zfar >> zoom >> aspect;
62 LOG( logERROR ) <<
"[CameraLoader] Could not load camera file data: " << filename;
65 std::clock_t endTime = std::clock();
68 Camera* camera =
new Camera();
72 frame << M[0], M[1], M[2], M[3], M[4], M[5], M[6], M[7], M[8], M[9], M[10], M[11], M[12], M[13],
74 camera->setFrame( Core::Transform { frame } );
75 camera->setFOV( fov );
76 camera->setZNear( znear );
77 camera->setZFar( zfar );
78 camera->setZoomFactor( zoom );
79 camera->setViewport( aspect, 1 );
80 fileData->m_cameraData.emplace_back( camera );
81 if ( fileData->isVerbose() ) { fileData->displayInfo(); }
83 fileData->m_loadingTime = ( endTime - startTime ) / Scalar( CLOCKS_PER_SEC );
84 fileData->m_processed =
true;
88 std::string CameraFileLoader::name()
const {
89 return "CameraLoader";
ProjType
Define the projection type.