实现 geopro::render::BrickPager:驻留 ≤ budget 个解压块, 按 LRU 淘汰,与体总大小无关。requestVisible 按请求顺序更新 LRU 并淘汰至预算;get 命中返回数据指针、不改 LRU。 键为完整 BrickId(含 level);std::list 记录 recency + unordered_map 存数据与迭代器,touch/淘汰均 O(1)。 TDD:test_brick_pager 验证恒定驻留与最早块淘汰。 |
||
|---|---|---|
| .. | ||
| actors | ||
| ground | ||
| interact | ||
| source | ||
| CMakeLists.txt | ||
| CameraPreset.cpp | ||
| CameraPreset.hpp | ||
| ColorLutBuilder.cpp | ||
| ColorLutBuilder.hpp | ||
| ContourBands.cpp | ||
| ContourBands.hpp | ||
| README.md | ||
| Scene.cpp | ||
| Scene.hpp | ||
| VoxelFromScatters.cpp | ||
| VoxelFromScatters.hpp | ||
README.md
render — VTK 渲染层
独占 vtkRenderWindow,统一创建/持有所有 actor(view 不持有 actor)。单一场景 + 相机预设(设计 §4)。
子目录:
Scene— 场景图、项目世界坐标空间、可见性;持有 RenderWindowactors/— ScatterActor, GridContourActor, VoxelVolumeActor, AnomalyActor, TerrainActorcolor/— ColorLutBuilder(colorBar → 离散 vtkLookupTable), ScalarBarcamera/— CameraPreset(Top2D / Free3D)interact/— SlicePlaneMath(纯几何,可测)+ SliceTool(vtkImagePlaneWidget:轴向 + 任意 45° reslice 着色剖面)+ PickInteractorStyle(拾取/双击正视/滚轮)+ InteractionManager(持切片/选中态/分发)。切片走 vtkImageReslice 路线(vtkImagePlaneWidget 内部 reslice + 纹理),非 vtkCutter(spec §9.1)ground/— IGroundLayer + DemImageGroundLayer(M1);TileGroundLayer(M1.5)
网格管线:vtkImageData(+vtkWarpScalar) → vtkDataSetSurfaceFilter → vtkBandedPolyDataContourFilter(GenerateContourEdgesOn)(设计 §4.3)。