ReUseX  0.0.5
3D Point Cloud Processing for Building Reuse
Loading...
Searching...
No Matches
panorama_handler.hpp
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2025 Povl Filip Sonne-Frederiksen
2//
3// SPDX-License-Identifier: GPL-3.0-or-later
4
5#pragma once
6
7#include "processing_observer.hpp"
9
10#include <vtkProp.h>
11#include <vtkRenderer.h>
12#include <vtkSkybox.h>
13#include <vtkSmartPointer.h>
14
15#include <filesystem>
16#include <memory>
17#include <vector>
18
19namespace rux::view {
20
21namespace fs = std::filesystem;
22
25 bool immersive = false;
26 int active_index = -1;
27 std::vector<PanoramaInfo> infos;
28 vtkSmartPointer<vtkSkybox> skybox;
29
31 struct SavedView {
32 double cam_pos[3], cam_focal[3], cam_up[3];
33 std::vector<vtkSmartPointer<vtkProp>>
36};
37
44vtkRenderer *
46 int viewport);
47
53 const fs::path &db_path, const PanoramaInfo &info,
54 vtkSmartPointer<vtkSkybox> &skybox,
55 const rux::VizualizationObserver::ViewerPtr &viewer, int viewport);
56
59 const vtkSmartPointer<vtkSkybox> &skybox,
60 const rux::VizualizationObserver::ViewerPtr &viewer, int viewport);
61
63void enter_panorama_mode(std::shared_ptr<PanoramaState> state, int pano_index,
64 const fs::path &project_path,
66 const std::vector<int> &viewports);
67
69void exit_panorama_mode(std::shared_ptr<PanoramaState> state,
71 const std::vector<int> &viewports);
72
73} // namespace rux::view
std::shared_ptr< pcl::visualization::PCLVisualizer > ViewerPtr
vtkRenderer * viewport_renderer(const rux::VizualizationObserver::ViewerPtr &viewer, int viewport)
Get the VTK renderer for a PCL viewport index.
void activate_panorama_skybox(const fs::path &db_path, const PanoramaInfo &info, vtkSmartPointer< vtkSkybox > &skybox, const rux::VizualizationObserver::ViewerPtr &viewer, int viewport)
Activate the panorama skybox in the VTK renderer.
void exit_panorama_mode(std::shared_ptr< PanoramaState > state, const rux::VizualizationObserver::ViewerPtr &viewer, const std::vector< int > &viewports)
Exit immersive panorama mode: restore scene and camera.
void deactivate_panorama_skybox(const vtkSmartPointer< vtkSkybox > &skybox, const rux::VizualizationObserver::ViewerPtr &viewer, int viewport)
Remove the skybox actor from the VTK renderer.
void enter_panorama_mode(std::shared_ptr< PanoramaState > state, int pano_index, const fs::path &project_path, const rux::VizualizationObserver::ViewerPtr &viewer, const std::vector< int > &viewports)
Enter immersive panorama mode: hide all scene geometry, show skybox.
Metadata for a panoramic image (pixel data loaded on-demand).
Saved viewer state for restoration on exit.
std::vector< vtkSmartPointer< vtkProp > > hidden_props
All props hidden on enter.
State for immersive panorama viewing.
bool immersive
Currently in panorama mode.
int active_index
Which panorama is displayed.
vtkSmartPointer< vtkSkybox > skybox
Reusable skybox actor.
std::vector< PanoramaInfo > infos
All panorama metadata.
struct rux::view::PanoramaState::SavedView saved