35 lines
1.4 KiB
C++
35 lines
1.4 KiB
C++
#pragma once
|
||
#include "model/ColorScale.hpp"
|
||
#include "model/Field.hpp"
|
||
#include "repo/I3dSceneRepository.hpp"
|
||
|
||
namespace geopro::controller {
|
||
|
||
// 三维场景视图抽象(编排层与 VTK 渲染解耦的缝):
|
||
// VtkSceneController 只发出"清场 / 加某类图元 / 提交渲染"指令,不认 vtkActor/vtkVolume;
|
||
// 真实实现(VtkSceneView)调 render actor + Scene;测试用 fake 记录调用断言编排。
|
||
// verticalExaggeration 由视图统一作用于 3D 图元(actor SetScale(1,1,VE) / image z 烤入)。
|
||
class I3dSceneView {
|
||
public:
|
||
virtual ~I3dSceneView() = default;
|
||
|
||
virtual void clear() = 0;
|
||
virtual void setVerticalExaggeration(double ve) = 0;
|
||
|
||
// 2D:俯视测线红线(z=0)。
|
||
virtual void addSurveyLine(const geopro::core::Grid& grid) = 0;
|
||
// 3D:竖直帘面(grid + colorScale 着色)。
|
||
virtual void addCurtain(const geopro::core::Grid& grid,
|
||
const geopro::core::ColorScale& cs) = 0;
|
||
// 3D:体绘制(IDW 体素 + colorScale)。
|
||
virtual void addVolume(const geopro::data::VolumeGrid& vol,
|
||
const geopro::core::ColorScale& cs) = 0;
|
||
// 3D:DEM 地形 + 影像纹理。
|
||
virtual void addTerrain(const geopro::data::TerrainPaths& paths) = 0;
|
||
|
||
// 应用相机预设(2D 俯视 / 3D 自由)并提交渲染。
|
||
virtual void render(bool is2D) = 0;
|
||
};
|
||
|
||
} // namespace geopro::controller
|