geopro/src/controller/I3dSceneView.hpp

35 lines
1.4 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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;
// 3DDEM 地形 + 影像纹理。
virtual void addTerrain(const geopro::data::TerrainPaths& paths) = 0;
// 应用相机预设2D 俯视 / 3D 自由)并提交渲染。
virtual void render(bool is2D) = 0;
};
} // namespace geopro::controller