Skip to content

Commit 243646b

Browse files
author
Fabien Servant
committed
Flatbuffers IO
1 parent 060649b commit 243646b

35 files changed

+1945
-7
lines changed

meshroom/aliceVision/ConvertSfMFormat.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ class ConvertSfMFormat(desc.AVCommandLineNode):
2626
label="SfM File Format",
2727
description="Output SfM file format.",
2828
value="abc",
29-
values=["abc", "sfm", "json", "ply", "baf"],
29+
values=["abc", "sfm", "json", "ply", "baf", "fbd"],
3030
group="", # exclude from command line
3131
),
3232
desc.ChoiceParam(

src/CMakeLists.txt

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -370,6 +370,18 @@ if (ALICEVISION_BUILD_SFM)
370370
)
371371
endif()
372372

373+
# ==============================================================================
374+
# FlatBuffers
375+
# ==============================================================================
376+
include (FetchContent)
377+
FetchContent_Declare(
378+
flatbuffers
379+
GIT_REPOSITORY https://github.com/google/flatbuffers.git
380+
GIT_TAG v25.2.10
381+
)
382+
FetchContent_MakeAvailable(flatbuffers)
383+
384+
373385
# ==============================================================================
374386
# Eigen
375387
# ==============================================================================
@@ -550,6 +562,7 @@ if (ALICEVISION_BUILD_SFM)
550562
endif()
551563
endif()
552564

565+
553566
# ==============================================================================
554567
# Alembic
555568
# ==============================================================================

src/aliceVision/camera/Distortion.hpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@ namespace camera {
2222
*/
2323
class Distortion
2424
{
25+
public:
26+
using sptr = std::shared_ptr<Distortion>;
27+
2528
public:
2629
Distortion() = default;
2730

src/aliceVision/camera/Undistortion.hpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@ namespace camera {
2929
class Undistortion
3030
{
3131
public:
32+
using sptr = std::shared_ptr<Undistortion>;
33+
public:
34+
3235
Undistortion(int width, int height)
3336
{
3437
_pixelAspectRatio = 1.0;
@@ -67,6 +70,11 @@ class Undistortion
6770

6871
void setOffset(const Vec2& offset) { _offset = offset; }
6972

73+
void setSize(const Vec2& size)
74+
{
75+
setSize(size.x(), size.y());
76+
}
77+
7078
void setSize(int width, int height)
7179
{
7280
double hh = height;

src/aliceVision/sfmData/ImageInfo.hpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,10 @@ namespace aliceVision {
2121
namespace sfmData {
2222

2323
class ImageInfo
24-
{
24+
{
25+
public:
26+
using sptr = std::shared_ptr<ImageInfo>;
27+
2528
public:
2629
/**
2730
* @brief Image Constructor

src/aliceVision/sfmData/View.hpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,12 +106,24 @@ class View
106106
*/
107107
ImageInfo& getImage() { return *_image; }
108108

109+
/**
110+
* @brief Get Image info pointer
111+
* @return a shared pointer
112+
*/
113+
const std::shared_ptr<ImageInfo> getImageInfo() const { return _image; }
114+
109115
/**
110116
* @brief Get Image info pointer
111117
* @return a shared pointer
112118
*/
113119
std::shared_ptr<ImageInfo> getImageInfo() { return _image; }
114120

121+
/**
122+
* @brief Set Image info object
123+
* @param image the new imageInfo to use
124+
*/
125+
void setImageInfo(std::shared_ptr<ImageInfo> & image) { _image = image; }
126+
115127
/**
116128
* @brief Get the view id
117129
* @return view id

src/aliceVision/sfmDataIO/CMakeLists.txt

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ set(sfmDataIO_files_headers
99
plyIO.hpp
1010
viewIO.hpp
1111
sceneSample.hpp
12+
FlatBuffersIO.hpp
13+
MappedFile.hpp
1214
)
1315

1416
# Sources
@@ -22,6 +24,8 @@ set(sfmDataIO_files_sources
2224
plyIO.cpp
2325
viewIO.cpp
2426
sceneSample.cpp
27+
FlatBuffersIO.cpp
28+
MappedFile.cpp
2529
)
2630

2731
if (ALICEVISION_HAVE_ALEMBIC)
@@ -37,6 +41,42 @@ if (ALICEVISION_HAVE_ALEMBIC)
3741
)
3842
endif()
3943

44+
list (APPEND FLATBUFFERS_SCHEMA_FILES
45+
${CMAKE_CURRENT_SOURCE_DIR}/FlatBuffersIO/schemas/Vec.fbs
46+
${CMAKE_CURRENT_SOURCE_DIR}/FlatBuffersIO/schemas/Rig.fbs
47+
${CMAKE_CURRENT_SOURCE_DIR}/FlatBuffersIO/schemas/CameraPose.fbs
48+
${CMAKE_CURRENT_SOURCE_DIR}/FlatBuffersIO/schemas/Observation.fbs
49+
${CMAKE_CURRENT_SOURCE_DIR}/FlatBuffersIO/schemas/Landmark.fbs
50+
${CMAKE_CURRENT_SOURCE_DIR}/FlatBuffersIO/schemas/Image.fbs
51+
${CMAKE_CURRENT_SOURCE_DIR}/FlatBuffersIO/schemas/View.fbs
52+
${CMAKE_CURRENT_SOURCE_DIR}/FlatBuffersIO/schemas/Intrinsic.fbs
53+
${CMAKE_CURRENT_SOURCE_DIR}/FlatBuffersIO/schemas/Distortion.fbs
54+
${CMAKE_CURRENT_SOURCE_DIR}/FlatBuffersIO/schemas/Undistortion.fbs
55+
${CMAKE_CURRENT_SOURCE_DIR}/FlatBuffersIO/schemas/SurveyPoint.fbs
56+
${CMAKE_CURRENT_SOURCE_DIR}/FlatBuffersIO/schemas/SfmData.fbs
57+
${CMAKE_CURRENT_SOURCE_DIR}/FlatBuffersIO/schemas/Root.fbs
58+
)
59+
60+
list (APPEND FLATBUFFERS_SCHEMA_INCLUDE_DIRS
61+
${CMAKE_CURRENT_SOURCE_DIR}/FlatBuffersIO/schemas
62+
)
63+
64+
build_flatbuffers(
65+
"${FLATBUFFERS_SCHEMA_FILES}"
66+
"${FLATBUFFERS_SCHEMA_INCLUDE_DIRS}"
67+
"fbschemas"
68+
""
69+
"${generatedDir}"
70+
"${generatedDir}"
71+
"${generatedDir}"
72+
)
73+
74+
set (FLATBUFFERS_FLATC_SCHEMA_EXTRA_ARGS "--gen-object-api")
75+
add_library(FlatBuffersTarget INTERFACE)
76+
target_include_directories(FlatBuffersTarget INTERFACE ${flatbuffers_SOURCE_DIR}/include)
77+
add_dependencies(FlatBuffersTarget fbschemas)
78+
79+
4080
alicevision_add_library(aliceVision_sfmDataIO
4181
SOURCES ${sfmDataIO_files_headers} ${sfmDataIO_files_sources}
4282
PUBLIC_LINKS
@@ -47,9 +87,9 @@ alicevision_add_library(aliceVision_sfmDataIO
4787
aliceVision_image
4888
Boost::regex
4989
Boost::boost
90+
FlatBuffersTarget
5091
)
5192

52-
5393
if (ALICEVISION_HAVE_ALEMBIC)
5494
target_link_libraries(aliceVision_sfmDataIO
5595
PRIVATE Alembic::Alembic

0 commit comments

Comments
 (0)