gaozheng
|
eef8188bcb
|
feat(3d): 色阶跨视图同步真源 + 三维体/切片白化与不透明度重做
- 跨视图色阶单一真源 DatasetViewState:2D详情/3D帘面体共用按dsId的色阶,编辑→真源
→各视图实时联动且无信号回环;散点(type1) load-then-save 回写,避免覆盖网格的
lineConfig/层级方案(共享同一条 businessCode="" 后端记录)。
- 色阶两级透明度:ColorScale.globalOpacity 独立存储不烘焙、渲染时与每色 alpha 相乘;
对话框回显真实值、单色独立;properties 补全 lvlSchemeType/logLinesCount/
equalAreaLayerCount,避免整条覆盖写清空;"整体透明度"改名"不透明度"、显示 0~100。
- 切片白化:SetWindowLevel 钉死 [vmin,vmax] + LUT 0号白化槽,哨兵真透明
(tests/spike/slice_alpha_probe.cpp 真 widget 离屏实测);同时纠正切片颜色映射。
- 切片不透明度:与三维体解耦的独立模型(100%/三维体+50%/跟随),默认100%;保存切片建
自己的色阶对象(颜色快照+不透明度),已保存切片走列表右键"色阶"编辑自身。
- 三维体白化:二值 mask 真白化(NoData 排除出插值,符合 ESRI/GDAL/Surfer 标准);改体
色阶改为原地更新传函(不重建image),未保存切片不再被刷掉且跟随改色;GPU 探测+CPU
回退;体不透明度归一为色阶"不透明度"单一控制(去 kMaxOpacity、移除工具条"透"滑块)。
- 持久化:网格视图补 saveColorGradation;DatasetChartDto.parseColorBar 回读 opacity。
详见 docs/superpowers/specs/2026-06-27-inversion-3d-volume-surfer-method-and-gaps.md §7。
|
2026-06-28 22:14:46 +08:00 |
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
|
7ff6f184e9
|
fix(vtk): 坐标轴/树/筛选跟进修复 + VE保留相机重建 + 异常删除刷actor
坐标轴(5.4/5.5):
- 放大系数改回「点应用才生效」(不再实时):VE 回 applied 信号一并下发;滑块 setPageStep(1)
修「点轨道直接跳到10」;放大系数组与上方留间距
- 5.4 改VE不再先跳远视角:setVerticalExaggeration 走保留相机重建(preserveCameraOnRebuild)→
render(resetCamera=false) 不 ResetCamera、fitOnArrival=false,异步到场数据在当前相机下重绘
树:
- #2 撤销 #6 容器复选框列预留(它造成容器名与展开图标间大留白);容器名紧跟展开图标(小留白)
- #3 时间下拉 chevron 跑左上角:`right 8px center` 是CSS偏移语法Qt不认→改 `right center`+origin
异常:
- 右键删除异常只刷列表没刷actor(场景仍渲染)→ deleteAnomaly 成功回调加 refreshAnomalies(技术债)
CLAUDE.md:新增「发现技术债务必须修,不以'非本轮引入'为由搁置」绑定规则
构建:app 链接通过
|
2026-06-25 17:31:55 +08:00 |
gaozheng
|
6c8069b87d
|
feat(vtk): 坐标轴设置真正生效-单位(米/英尺)换算+每轴显示开关+自定义刻度范围 打通 render→controller→view→面板
|
2026-06-25 14:16:27 +08:00 |
gaozheng
|
5e60446210
|
feat(vtk): 色阶编辑器(2D/3D共享)+模板库后端+剖面着色修正+二维数据集足迹
本会话主要交付:
- 色阶配置对话框 1:1 复刻原版(colorLevel/contourLevel/contourLine/colorEditor + colorUtils):
左三列⚙表格(层级/线形/颜色) + 层级⚙/线形⚙/颜色⚙ 子对话框 + 连续渐变(直方图/读出/min-max/反转)
+ .lvl/.clr 导入导出;文案/校验对齐原版精确 i18n。
- lvl/clr 模板库接真实后端:IColorTemplateRepository + ApiColorTemplateRepository,
另存/打开/新建色阶/配色方案下拉 经仓储注入 2D(GridDataChartView)与 3D(主对话框)。
- 剖面帘面着色对齐原版 threeContour.js getTerrainColor:上界 stop 取色 + 满 RGB,
修正"色带整体下移一格 / 发浅发灰 / 丢 alpha"导致与原版差异大的问题。
- 二维数据集视图首切片:勾选轨迹类数据集 → 足迹平铺进 View3D 地图
(Api3dRepository::loadMapLine 走 dd/ert/trajectory/line + MapLineActor + col2D 接线),
view2DMode 控摆放高度,顶/底锚真实地表高程(zRefElev)。
- 测试 252 全绿。
并含本分支前序未提交的 UI 工作(ToastOverlay/TopBar/Theme/DynamicForm/若干 panel),
经 CMakeLists/main.cpp 纠缠,随此 checkpoint 一并提交。未纳入未跟踪的 png/yml 及审查报告 txt。
|
2026-06-22 12:48:45 +08:00 |
gaozheng
|
44d31a824d
|
feat(vtk): 异常列表选中→VTK高亮联动(#4c-2, R84 list→VTK)
- I3dSceneView::setSelectedAnomaly + VtkSceneView 实现(选中异常 actor 加粗高亮、其余恢复);
anomalyProps_ 改 vtkActor 以设线宽/点尺寸
- main:Column3DAnalysis::anomalySelected → sceneView->setSelectedAnomaly
- FakeView 补 setSelectedAnomaly 空实现
编译全绿(build.bat all);用户实测通过。
反向(VTK点异常→回选列表)本期未做(需异常 actor 拾取)。
|
2026-06-18 19:06:14 +08:00 |
gaozheng
|
4e1b8e7635
|
feat(vtk): 异常3D基础(#4a)-Anomaly补3D几何+buildAnomaly3D+视图异常方法+Api mock持久化(挂三维体)
异常功能地基(对象→三维体→异常;异常挂三维体非切片,见记忆 vtk-3d-persistence-structure):
- core::Anomaly 补 id/volumeDsId(=remarkSourceId)/consortiumId/worldPts(3D世界点)/planeNormal·planeOrigin,
保留 2D localPts(剖面详情兼容)
- render::buildAnomaly3D(单异常→世界坐标 点/折线/闭合多边形 actor,不翻y/不压z;抽 buildActor 共享 2D/3D)
- I3dSceneView + VtkSceneView:addAnomaly/removeAnomaly/clearAnomalies/setAnomalyVisible(按 id 跟踪 actor,
worldPts 已含VE 故不再 SetScale;clear 一并清异常)
- Api3dRepository:StoredAnomaly + saveAnomaly/loadAnomalyTree(按 volumeDsId 过滤+consortiumId 分组异常体)/
deleteAnomaly/deleteAnomalyGroup 内存 mock(取代 stub onErr)
同时修复测试漂移(此前 3a 加 isVolumeDataset 纯虚 + 3c 改 loadVolume 回调签名后,geopro_tests 一直未随之更新):
- FakeView 补异常方法;FakeSceneRepo 补 isVolumeDataset(可配置 volumeIds)+修 loadVolume 签名
- test_3d_repo loadVolume 回调改 (VolumeGrid,ColorScale)
- 控制器测试 View3DWithVoxelAddsVolume 按新"类型分流"语义重写为 View3DVolumeDatasetAddsVolume(体素XOR帘面)
编译全绿(build.bat all);228/228 单元测试通过。4a 为地基(无 UI 接线、尚不可见),圈定/保存见 4b。
|
2026-06-18 13:04:14 +08:00 |
gaozheng
|
c03dc35469
|
feat(vtk): 勾选/取消增量渲染-按ds跟踪图元,diff增删不全量重建;clear保留底图;增量不重置相机(全量/首批才取景)
|
2026-06-17 10:49:06 +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
|
0f521c5b24
|
feat(vtk): P1 复活中央渲染 — VtkSceneController + I3dSceneRepository + Scene加vtkProp
复活被 6241eb3 摘除的中央 VTK 数据驱动渲染:
- Scene 新增 addViewProp(vtkProp*):体绘制 vtkVolume(非 vtkActor)经此进场
- I3dSceneRepository(异步回调契约) + LocalSample3dRepository:dimensionOf 维度映射 /
loadVolume→VolumeGrid(std::array 去裸数组) / loadTerrainPaths;data 层零 VTK 依赖
- VtkSceneController(QObject) 取代 main.cpp 死掉的 rebuildCentral lambda + 裸 show* 标志:
勾选数据集/视图模式/图层/比例 → 经仓储取 core::* → I3dSceneView 重建场景;
QPointer+generation 守异步回调生命周期与新鲜度;inRebuild_ 避免同步路径双 render
- I3dSceneView 抽象解耦编排与 VTK(VtkSceneView 真实现 + 测试 fake)
- 删除被取代的 CentralScene;main.cpp 接线 对象勾选/2D-3D/图层/主题(主题 context 用 sceneCtrl 防悬垂)
- 新增测试 14(Scene/3d-repo/VtkSceneController),ctest 172/172 全绿
构建基建修复(本就潜在缺陷,任何 clean 构建/新人 checkout 都会撞):
- vcpkg.json 加 builtin-baseline:新版 vcpkg manifest 模式必需,否则全新 checkout 无法 configure
- build.bat 修 vswhere(VS2026 预览 -latest 恒空 → -all -prerelease -requires VC.Tools)
+ 括号块内路径变量加引号(防 Program Files (x86) 的 ) 提前闭合)
|
2026-06-15 21:01:26 +08:00 |