Commit Graph

15 Commits

Author SHA1 Message Date
gaozheng 4f6abf0c83 feat(3d-view): 三维体渲染稳定性修复 + 透明度可调/交互优化
- 修偶发"不渲染/淡蓝/很实"根因:合并体值域取"首个到达源色阶"随网络到达
  顺序抖动→改取所有源色阶 vmax 中位者(确定性+抗单线离群)
- 体素标量 double→float:GPU 体绘制对 double 处理不稳/间歇出空,float 更稳且省显存
- 源剖面加载瞬时失败(如后端 502)自动重试,避免一条抖动致整体建不出;失败弹 toast 不再静默
- 退化薄体(共面剖面 ny/nz=1)网格每维补到≥2,避免 vtkGPUVolumeRayCastMapper 拒绝渲染
- 三维体透明度可调:工具条「透」按钮+弹出滑块(默认 0.30,实时改已渲染体)
- 工具条 z 序修复:引导层挂 vtkWidget 并 raise,工具条/提示再 raise 其上(缩小渲染区不再被挡)
- 收起左栏同步 QSplitter 尺寸,消除残留空白
- 切换项目清空三维体/切片/异常列表
- VTK 警告/错误转 Qt 日志,不再弹独立 vtkOutputWindow 窗口
- 勾选非三维体 ds 首次加载也显示等待动画(复选框↔spinner)
- 新建三维体后该行多拍重试滚动到分析栏顶部
2026-06-27 18:32:07 +08:00
gaozheng 52830bbcb0 feat(core): Anomaly volumeDsId→remarkSourceId(挂体/切片)+resolveAnomalyMount+修正spec/plan命名(Task11 Step1) 2026-06-24 20:37:45 +08:00
gaozheng 509ba35a47 feat(geo): build-geo 新增中心线曲线坐标网格化(--curvilinear)+距离加权
取最长线 GPS 轨迹作中心线,把每点投影得(沿路里程 s,带符号横偏 d),
网格 X=s/Y=d/Z=深度,把弯路拉直消假鳍;横向范围用带符号 d 的[1%,99%]分位
(鲁棒于离群桩线、不浪费空白半侧);重叠按到 cell 中心的距离加权(w=1/(1+d^2))
代替等权均值。保留 PCA 版供对照(curvilinear 默认 false)。

GpsTrack 新增 projectToCenterline/resampleAndSmooth(纯函数,含直/弯线单测);
GeoVolumeBuilder 新增 distanceWeight 纯函数。

真实数据(明星路 20 线,cellXY 0.5):曲线版 4487x45x82 填充 68.8%,
PCA 版 4474x52x82 填充 62.2% —— ny 更小(拉直)、填充更密、假鳍明显减少。
2026-06-24 15:24:59 +08:00
gaozheng 8edc1f30ac feat(vtk): build-geo 按真实RTK几何把多线拼成统一路向三维体
新增 GpsTrack(.gps解析+经纬→局部米+里程插值/航向) 与 GeoVolumeBuilder
(PCA路向旋转+多线统一网格重叠均值+量化落盘), gpr_poc 加 build-geo 子命令。
消除顺序拼接退化扁带: 真实明星路20线建体 4474x52x82(≈预测4472x43x81),
填充率62%, 旋转-89.5°, 峰值内存258MB, 各轴≤16384整卷单纹理可渲。
复用 readIprb/IprHeader/GprGeometry/ChunkedVolumeStore/Quant, 未重造IO/store。
2026-06-24 12:34:07 +08:00
gaozheng a9e8eb9d5c feat(core): GPR 结构化建体 buildGprVolume(X/Z 落格 + Y 向 1D 线性插值 → int16 量化体)
- 新增 GprSurvey 规则化建体输入模型(放 core/model 保持 geopro_core 自洽,避免 core->io 反向依赖)
- buildGprVolume: X/Z 取最近道/采样落格,仅跨通道 Y 做 1D 线性插值,边界外不外推
- int16 量化用值域中点为 offset 对称铺满 ~64000 码位,两端留余量不撞 int16/kBlank
- 整型乘积索引走 size_t
2026-06-23 10:45:06 +08:00
gaozheng c6ff9c2271 feat(core): 新增 int16 量化体类型 ScalarVolumeI16 + Quant
GPR 三维体地基:int16 量化标量体,内存/显存/磁盘为 double 体的 1/4。
- Quant: 物理值↔int16 映射,toQ 下钳保留 INT16_MIN 给 kBlank 哨兵
- ScalarVolumeI16: 与 double ScalarVolume 并列,i 最快 k 最慢布局
- idx(i,j,k) 64 位计算(整卷可达约 96 亿体素,防 int 溢出)
- header-only,纯 C++17,零 Qt/VTK
2026-06-23 10:28:40 +08:00
gaozheng 3dea339ddc feat(vtk): P2 三维数据集栏 — 坐标轴/比例/快捷视图/Zoom
- CameraPreset 扩 6 向快捷视图(前后左右上下) + zoomBy(透视改视角/正交改parallelScale) + fitView
- AxesActor(新, vtkCubeAxesActor): 显示模式 标准(外缘)/三维立体(静态边+网格线)/不显示;
  刻度 无/米/英尺(×3.28084)/经纬度(GeoLocalFrame反算); 字号12(字体待1.0确认)
- GeoLocalFrame 补 toLatLon 反算(等距圆柱)
- I3dSceneView 扩 setAxes/applyCameraView/zoom/fitView; VtkSceneController 加对应槽
  (坐标轴随场景重建; 快捷视图/zoom 仅改相机不重建)
- main.cpp 三维视图工具条: 坐标轴/刻度下拉(枚举绑itemData)+比例滑块(1-10)+6向钮+Zoom钮, 仅3D显示
- 测试 +24(toLatLon往返/相机6向/坐标轴单位换算/控制器编排), ctest 196/196

评审修复:
- HIGH rebuildAxes 异步路径坐标轴 prop 累积 → 持 currentAxes_ 重建前先移除(幂等)
- MEDIUM combo index 魔数 → itemData/currentData 取枚举值(防项序调整静默错位)

注: 坐标轴标准/立体语义 + 字体 + O点 为合理近似, 待 Geopro 1.0 实地确认精修
2026-06-15 21:54:48 +08:00
gaozheng 179f46b42c feat(core): Grid 增 NaN 约定 + hasValue(凸包裁剪用) 2026-06-11 11:34:11 +08:00
gaozheng c9d0d90433 feat(render): GeoLocalFrame(经纬→局部米) + CurtainActor(测线竖直帘面) 2026-06-07 22:47:41 +08:00
gaozheng a35ababdd4 feat(core): 补全数据模型(Anomaly + Grid/ScatterField 元字段) 2026-06-07 20:24:05 +08:00
gaozheng 4fdc6f7b86 feat(core): CrsTransform(PROJ 封装, UTM/WGS84/WebMercator 互转)
- RAII 管理 PJ_CONTEXT/PJ;normalize_for_visualization 统一轴序为 (x=经度/东, y=纬度/北)
- vcpkg 加 proj 依赖;core 链接 PROJ::proj(保持 core 纯净,无 Qt/VTK)
- 测试经 CMake gtest_discover_tests 注入 PROJ_DATA,ctest 开箱即用
- 修正用例期望值:UTM49N(516868) 实际经度约 111.16°E(中央经线 111°E);
  WebMercator tfw 原点 114.16°E 在 49N 的 easting 约 825km,均与 PROJ 数据库一致
2026-06-07 20:06:37 +08:00
gaozheng e5a48c5af7 feat(core): IDW 插值器(IInterpolator->ScalarVolume, 含 maxDist 包络裁剪) 2026-06-07 19:53:22 +08:00
gaozheng 868c49ca2c feat(core): 阶梯色阶 colorAt+颜色解析(alpha 量纲按来源) 2026-06-07 19:49:53 +08:00
gaozheng fb0586b6e0 feat(core): 领域模型 ScalarVolume/Grid/ScatterField(点序 i 最快) 2026-06-07 19:46:03 +08:00
gaozheng 238faff56e feat(core): LocalFrame 坐标系(原点偏移+东北轴向+Z基准) 2026-06-07 19:40:23 +08:00