diff --git a/src/aliceVision/sfmDataIO/jsonIO.hpp b/src/aliceVision/sfmDataIO/jsonIO.hpp index 31f632ee03..f143816cbe 100644 --- a/src/aliceVision/sfmDataIO/jsonIO.hpp +++ b/src/aliceVision/sfmDataIO/jsonIO.hpp @@ -104,11 +104,8 @@ inline void loadPose3(const std::string& name, geometry::Pose3& pose, bpt::ptree inline void saveCameraPose(const std::string& name, const sfmData::CameraPose& cameraPose, bpt::ptree& parentTree) { bpt::ptree cameraPoseTree; - savePose3("transform", cameraPose.getTransform(), cameraPoseTree); - cameraPoseTree.put( - "locked", static_cast(cameraPose.isLocked())); // convert bool to integer to avoid using "true/false" in exported file instead of "1/0". - + cameraPoseTree.put("locked", cameraPose.isLocked()); parentTree.add_child(name, cameraPoseTree); } @@ -122,13 +119,20 @@ inline void loadCameraPose(const std::string& name, sfmData::CameraPose& cameraP { geometry::Pose3 pose; - loadPose3(name + ".transform", pose, cameraPoseTree); + bpt::ptree & poseTree = cameraPoseTree.get_child(name); + + loadPose3("transform", pose, poseTree); + cameraPose.setTransform(pose); - if (cameraPoseTree.get("locked", 0)) + if (poseTree.get("locked", false)) + { cameraPose.lock(); + } else + { cameraPose.unlock(); + } } /** diff --git a/src/aliceVision/sfmDataIO/sfmDataIO_test.cpp b/src/aliceVision/sfmDataIO/sfmDataIO_test.cpp index 4abbc02143..22b1569e92 100644 --- a/src/aliceVision/sfmDataIO/sfmDataIO_test.cpp +++ b/src/aliceVision/sfmDataIO/sfmDataIO_test.cpp @@ -44,7 +44,13 @@ sfmData::SfMData createTestScene(std::size_t viewsCount = 2, std::size_t observa sfmData.getViews().emplace(viewId, view); // Add poses - sfmData.setPose(*view, sfmData::CameraPose()); + sfmData::CameraPose pose; + if (i == 0) + { + pose.lock(); + } + + sfmData.setPose(*view, pose); // Add intrinsics if (!sharedIntrinsic || (i == 0))