Skip to content

Commit 450aa24

Browse files
committed
3d: implement a fulldome projection mode suitable for point clouds and detailed geometry
Based on @paperManu's approach detailed here: https://emmanueldurand.net/spherical_projection/
1 parent cef844d commit 450aa24

File tree

8 files changed

+263
-250
lines changed

8 files changed

+263
-250
lines changed

src/plugins/score-plugin-gfx/CMakeLists.txt

-2
Original file line numberDiff line numberDiff line change
@@ -152,8 +152,6 @@ set(HDRS
152152
Gfx/ShaderProgram.hpp
153153
Gfx/SharedInputSettings.hpp
154154
Gfx/SharedOutputSettings.hpp
155-
Gfx/Qt5CompatPush
156-
Gfx/Qt5CompatPop
157155

158156
Gfx/CameraSettings.hpp
159157
Gfx/CameraDevice.hpp

src/plugins/score-plugin-gfx/Gfx/Graph/CommonUBOs.hpp

+3-2
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,11 @@ struct ModelCameraUBO
3636
float projection[16]{};
3737
float modelNormal[9]{};
3838
float padding[3]; // Needed as a mat3 needs a bit more space...
39+
float fov = 90.;
3940
};
4041

41-
static_assert(
42-
sizeof(ModelCameraUBO) == sizeof(float) * (16 + 16 + 16 + 16 + 16 + 9 + 3));
42+
static_assert(
43+
sizeof(ModelCameraUBO) == sizeof(float) * (16 + 16 + 16 + 16 + 16 + 9 + 3 + 1));
4344

4445
/**
4546
* @brief UBO shared across all entities shown on the same output.

src/plugins/score-plugin-threedim/CMakeLists.txt

+33-61
Original file line numberDiff line numberDiff line change
@@ -15,41 +15,31 @@ endif()
1515
find_package(${QT_VERSION} REQUIRED COMPONENTS Xml)
1616

1717
# libssynth
18-
add_library(ssynth STATIC
19-
"${3RDPARTY_FOLDER}/libssynth/src/ssynth/Parser/EisenParser.cpp"
20-
"${3RDPARTY_FOLDER}/libssynth/src/ssynth/Parser/Preprocessor.cpp"
21-
"${3RDPARTY_FOLDER}/libssynth/src/ssynth/Parser/Tokenizer.cpp"
22-
23-
"${3RDPARTY_FOLDER}/libssynth/src/ssynth/Model/Action.cpp"
24-
"${3RDPARTY_FOLDER}/libssynth/src/ssynth/Model/AmbiguousRule.cpp"
25-
"${3RDPARTY_FOLDER}/libssynth/src/ssynth/Model/Builder.cpp"
26-
"${3RDPARTY_FOLDER}/libssynth/src/ssynth/Model/CustomRule.cpp"
27-
"${3RDPARTY_FOLDER}/libssynth/src/ssynth/Model/PrimitiveRule.cpp"
28-
"${3RDPARTY_FOLDER}/libssynth/src/ssynth/Model/RuleSet.cpp"
29-
"${3RDPARTY_FOLDER}/libssynth/src/ssynth/Model/State.cpp"
30-
"${3RDPARTY_FOLDER}/libssynth/src/ssynth/Model/Transformation.cpp"
31-
32-
"${3RDPARTY_FOLDER}/libssynth/src/ssynth/Model/Rendering/TemplateRenderer.cpp"
33-
"${3RDPARTY_FOLDER}/libssynth/src/ssynth/Model/Rendering/ObjRenderer.cpp"
34-
35-
"${3RDPARTY_FOLDER}/libssynth/src/ssynth/ColorPool.cpp"
36-
"${3RDPARTY_FOLDER}/libssynth/src/ssynth/ColorUtils.cpp"
37-
"${3RDPARTY_FOLDER}/libssynth/src/ssynth/Logging.cpp"
38-
"${3RDPARTY_FOLDER}/libssynth/src/ssynth/MiniParser.cpp"
39-
"${3RDPARTY_FOLDER}/libssynth/src/ssynth/RandomStreams.cpp"
40-
)
41-
target_include_directories(ssynth
42-
SYSTEM PRIVATE
43-
"${3RDPARTY_FOLDER}/libssynth/src"
44-
)
45-
46-
target_link_libraries(ssynth
47-
PRIVATE
48-
"${QT_PREFIX}::Core"
49-
"${QT_PREFIX}::Gui"
50-
"${QT_PREFIX}::Xml"
51-
score_lib_base
52-
)
18+
add_library(
19+
ssynth STATIC
20+
"${3RDPARTY_FOLDER}/libssynth/src/ssynth/Parser/EisenParser.cpp"
21+
"${3RDPARTY_FOLDER}/libssynth/src/ssynth/Parser/Preprocessor.cpp"
22+
"${3RDPARTY_FOLDER}/libssynth/src/ssynth/Parser/Tokenizer.cpp"
23+
"${3RDPARTY_FOLDER}/libssynth/src/ssynth/Model/Action.cpp"
24+
"${3RDPARTY_FOLDER}/libssynth/src/ssynth/Model/AmbiguousRule.cpp"
25+
"${3RDPARTY_FOLDER}/libssynth/src/ssynth/Model/Builder.cpp"
26+
"${3RDPARTY_FOLDER}/libssynth/src/ssynth/Model/CustomRule.cpp"
27+
"${3RDPARTY_FOLDER}/libssynth/src/ssynth/Model/PrimitiveRule.cpp"
28+
"${3RDPARTY_FOLDER}/libssynth/src/ssynth/Model/RuleSet.cpp"
29+
"${3RDPARTY_FOLDER}/libssynth/src/ssynth/Model/State.cpp"
30+
"${3RDPARTY_FOLDER}/libssynth/src/ssynth/Model/Transformation.cpp"
31+
"${3RDPARTY_FOLDER}/libssynth/src/ssynth/Model/Rendering/TemplateRenderer.cpp"
32+
"${3RDPARTY_FOLDER}/libssynth/src/ssynth/Model/Rendering/ObjRenderer.cpp"
33+
"${3RDPARTY_FOLDER}/libssynth/src/ssynth/ColorPool.cpp"
34+
"${3RDPARTY_FOLDER}/libssynth/src/ssynth/ColorUtils.cpp"
35+
"${3RDPARTY_FOLDER}/libssynth/src/ssynth/Logging.cpp"
36+
"${3RDPARTY_FOLDER}/libssynth/src/ssynth/MiniParser.cpp"
37+
"${3RDPARTY_FOLDER}/libssynth/src/ssynth/RandomStreams.cpp")
38+
target_include_directories(ssynth SYSTEM
39+
PRIVATE "${3RDPARTY_FOLDER}/libssynth/src")
40+
41+
target_link_libraries(ssynth PRIVATE "${QT_PREFIX}::Core" "${QT_PREFIX}::Gui"
42+
"${QT_PREFIX}::Xml" score_lib_base)
5343

5444
if(NOT MSVC)
5545
target_compile_options(ssynth PRIVATE -w)
@@ -60,56 +50,38 @@ add_library(
6050
score_plugin_threedim
6151
Threedim/ModelDisplay/ModelDisplayNode.hpp
6252
Threedim/ModelDisplay/ModelDisplayNode.cpp
63-
6453
Threedim/TinyObj.hpp
6554
Threedim/TinyObj.cpp
6655
Threedim/Ply.hpp
6756
Threedim/Ply.cpp
68-
6957
Threedim/ArrayToGeometry.hpp
7058
Threedim/ArrayToGeometry.cpp
71-
7259
Threedim/StructureSynth.hpp
7360
Threedim/StructureSynth.cpp
74-
7561
Threedim/ObjLoader.hpp
7662
Threedim/ObjLoader.cpp
77-
7863
Threedim/Primitive.hpp
7964
Threedim/Primitive.cpp
80-
8165
Threedim/Noise.hpp
8266
Threedim/Noise.cpp
83-
8467
Threedim/ModelDisplay/Executor.hpp
8568
Threedim/ModelDisplay/Executor.cpp
8669
Threedim/ModelDisplay/Metadata.hpp
8770
Threedim/ModelDisplay/Process.hpp
8871
Threedim/ModelDisplay/Process.cpp
8972
Threedim/ModelDisplay/Layer.hpp
90-
9173
"${3RDPARTY_FOLDER}/miniply/miniply.cpp"
92-
9374
score_plugin_threedim.hpp
94-
score_plugin_threedim.cpp
95-
)
75+
score_plugin_threedim.cpp)
9676

9777
set_property(TARGET score_plugin_threedim PROPERTY SCORE_CUSTOM_PCH 1)
9878
setup_score_plugin(score_plugin_threedim)
9979

100-
target_include_directories(score_plugin_threedim
101-
SYSTEM PRIVATE
102-
"${3RDPARTY_FOLDER}/libssynth/src"
103-
"${3RDPARTY_FOLDER}/vcglib"
104-
"${3RDPARTY_FOLDER}/eigen"
105-
"${3RDPARTY_FOLDER}/miniply"
106-
)
80+
target_include_directories(
81+
score_plugin_threedim SYSTEM
82+
PRIVATE "${3RDPARTY_FOLDER}/libssynth/src" "${3RDPARTY_FOLDER}/vcglib"
83+
"${3RDPARTY_FOLDER}/eigen" "${3RDPARTY_FOLDER}/miniply")
10784

108-
target_link_libraries(score_plugin_threedim
109-
PRIVATE
110-
score_plugin_engine
111-
score_plugin_avnd
112-
score_plugin_gfx
113-
fmt::fmt
114-
ssynth
115-
)
85+
target_link_libraries(
86+
score_plugin_threedim PRIVATE score_plugin_engine score_plugin_avnd
87+
score_plugin_gfx fmt::fmt ssynth)

src/plugins/score-plugin-threedim/Threedim/ModelDisplay/Executor.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ ProcessExecutorComponent::ProcessExecutorComponent(
5252
n->root_inputs().push_back(new ossia::texture_inlet);
5353
n->root_inputs().push_back(new ossia::geometry_inlet);
5454

55-
for (std::size_t i = 2; i <= 8; i++)
55+
for(std::size_t i = 2; i <= 9; i++)
5656
{
5757
auto ctrl = qobject_cast<Process::ControlInlet*>(element.inlets()[i]);
5858
auto& p = n->add_control();

0 commit comments

Comments
 (0)