#include "CentralScene.hpp" #include #include #include #include "CameraPreset.hpp" #include "Scene.hpp" #include "Theme.hpp" #include "actors/CurtainActor.hpp" #include "actors/MapLineActor.hpp" #include "geo/GeoLocalFrame.hpp" namespace geopro::app { void rebuildCentralScene(geopro::render::Scene& scene, vtkRenderer* renderer, vtkRenderWindow* renderWindow, ViewMode mode, const std::vector& sections, bool showCurtain, const geopro::core::GeoLocalFrame& frame, double verticalExaggeration) { scene.clear(); const bool is2D = (mode == ViewMode::Map2D); (void)is2D; // 背景永远深色(规范§0.5 视图区常深,不随明暗切换),让色阶数据更突出。 double bgR, bgG, bgB; geopro::app::vtkBackground(bgR, bgG, bgB); renderer->SetBackground(bgR, bgG, bgB); for (const auto& s : sections) { if (is2D) { auto line = geopro::render::buildSurveyLine(s.grid, frame); if (line) scene.addActor(line); } else if (showCurtain) { auto curtain = geopro::render::buildCurtain(s.grid, s.colorScale, frame); if (curtain) { curtain->SetScale(1.0, 1.0, verticalExaggeration); // 纵向夸张成墙 scene.addActor(curtain); } } } if (is2D) geopro::render::applyTop2D(renderer); else geopro::render::applyFree3D(renderer); renderer->ResetCamera(); renderWindow->Render(); } } // namespace geopro::app