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
|
90abeaa9b6
|
fix(vtk): 垂直夸张只放大深度Z(修路被压胖) + 底图按高清块cropping挖空消双渲发白 + 降高光
三处真视觉 bug 修复(tmp/geo 全路段体上复现):
- exagg 轴误用:view 的底图/高清两 actor 原 SetScale(1,exagg,exagg) 把横向路宽(Y)
与深度(Z)一起放大,2237m 长路被压成胖块;改为 SetScale(1,1,exagg) 只放大深度,
路恢复真实细长(长:宽≈86:1,4474:52 cells)。两 actor scale 保持一致。
- 两层重叠双渲:底图(整卷)与高清(局部)vtkVolume 空间重叠,重叠区双渲发白且随相机
移动;给底图 mapper 开 Cropping,裁剪平面=高清单图模型盒(GetBounds,与底图同坐标系),
CroppingRegionFlags=0x7ffffff&~VTK_CROP_SUBVOLUME(挖掉中心盒、渲盒外),高清换位时
同步更新;高清未就绪/base 预览时关 cropping 全渲(永不空白)。
- 降高光:var4 光照 Specular 0.2→0.05,消除旋转时视角相关高光游走形成的移动白斑,
保留 ambient/diffuse 立体感。
- 验收:--preview --shots 多旋转角离屏出图;398 测试全过。
|
2026-06-24 14:04:00 +08:00 |
gaozheng
|
d028994324
|
feat(vtk): C4 体绘制梯度不透明度+光照,内部分层界面透出
view --gallery 改为 4 组 C4 对照(纯标量/+梯度不透明度/+光照/全开):
- GalleryVariant 增 useGradientOpacity/useShade 字段(默认关,不改既有行为)
- makeVariantProperty 叠加 SetGradientOpacity(按实测梯度分位 median/p90/p99
标定:均匀层透明、界面/异常显形)+ ShadeOn(Ambient/Diffuse/Specular 立体明暗)
- 纯标量组 max0.45;开梯度门的组 max0.6(净不透明度=标量×梯度,层面才浮实)
- 交互 view 默认变体(var4 全开)从常驻底图实测梯度分布标定阈值
tmp/geo 真实全路段体(4474x52x82)实测:纯标量糊成半透明实心块仅端面可读;
开梯度不透明度后均匀块透出内部水平分层界面,光照令界面带立体感。
fps:纯标量155→梯度门48(画廊),交互默认98静态/267拖动态,均交互级。
398 测试全过。
|
2026-06-24 13:45:17 +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
|
fb944f706f
|
feat(vtk): 常驻粗底图+局部高清叠加(永不空白)
ViewAdaptiveVolumeSource 构造时一次性在主线程建整卷最粗「各轴≤16384」层
单纹理底图 baseImage(),永远持有、永不释放、绝不被异步路径触碰——任何视角/
任何运动中底图都盖住整个体,拖动/缩放绝不空白。高清(currentImages)异步重组
当前视野后叠在底图之上局部覆盖,未就绪时只显底图。gpr_poc view 用两个 vtkVolume
(底图先渲、高清叠加),新增 --preview --base 出整卷概览底图截图。为 morph(C3-4)/
运动跟踪(C3-7)打两层结构。
|
2026-06-24 12:03:10 +08:00 |
gaozheng
|
a4db37735a
|
perf(vtk): view 开交互式采样距离自适应修长板填屏 ray-march 慢
POC 当初为离屏基准把 AutoAdjustSampleDistances/InteractiveAdjustSampleDistances
关掉(求恒定全质量),交互场景长板填屏每像素沿超长轴海量采样 → 2.8fps。开启二者
并设 interactor DesiredUpdateRate(15)/StillUpdateRate(0.5):拖动期按目标帧率拉大
SampleDistance 降采样(快、跟手),松手恢复小步长全质量。--preview 加交互态(降采样)
fps 与全质量静态对照量化提速。merged_b6 全路段实测提速 14.9x~21.2x,交互态 ≥15fps。
|
2026-06-24 11:09:25 +08:00 |
gaozheng
|
cec41e3539
|
feat(vtk): ViewAdaptive 接异步重组(update 不阻塞,view 拖动不卡)+修 C2 维度用 store.dims
把 C3-1 AsyncRegionBuilder 接进 ViewAdaptiveVolumeSource:updateView 只提交目标
(selectLod→RegionTarget→requestTarget),不在主线程重组、立即返回;currentImages/
sliceSource 经 builder.takeLatest 取最新已就绪(没新结果用上一张),空选区不提交、
保留上一张。新增 AsyncRegionBuilder::takeLatest(int&) 非破坏式重载随结果回传 level,
供 lastLevel 同步。
C2 MEDIUM:RegionReorganizer 维度改用 store.dims(level)(单一真源),弃自算
ceil(n/2^level),防 store 降采样规则漂移。
gpr_poc view 切异步:拖动中 InteractionEvent 持续提交目标(非阻塞)+33ms 重复定时器
非阻塞拉取后台就绪纹理换上→主线程不被重组卡住(跟手);preview/smoke/默认取景用
阻塞轮询保证拿到首图。
测试:ViewAdaptive 9 测(原 6 调为异步轮询版+新增 3:AsyncUpdateEventuallyReady/
UpdateDoesNotBlock(<50ms)/UsesStoreDimsNotSelfComputed),AsyncRegionBuilder 5 测仍绿;
全量 382 测通过。
|
2026-06-24 10:22:22 +08:00 |
gaozheng
|
fc9ea58cb5
|
feat(vtk): ViewAdaptiveVolumeSource 视野区域单纹理重组(C2)
用 C1 selectLod 选层选区,从 ChunkedVolumeStore 把当前视野区域重组为单张
VTK_SHORT vtkImageData(各轴 ≤16384,世界 origin/spacing 按 level+exagg),实现
IVolumeRenderSource。核心 updateView(CameraView,VolumeView) headless 可测。
gpr_poc view 切到该源(退掉 MultiBlock/budget 简化路径),--preview 渲默认视角存
PNG,--smoke 离屏不崩且 LOD 随缩放切换。
|
2026-06-24 09:24:31 +08:00 |
gaozheng
|
ba59c8861a
|
feat(poc): build-stream 多线合并流式建体 + Track B 总验收实测
|
2026-06-24 08:08:28 +08:00 |
gaozheng
|
0537e938b4
|
feat(vtk): 12d 打磨探针-梯度不透明度+光照,出体内部对比3图
新增 gpr_poc polish 子命令:同一全分辨率 level0 局部段 + 斜穿俯视视角离屏渲三图对比体内部白雾能否靠打磨解决。梯度不透明度 piecewise 按实测梯度幅值分布(median/p90/p99)标定。三图唯一变量为梯度不透明度/光照:a 基线白雾、b 加梯度不透明度、c 加梯度+光照。各报结构像素/亮度/真实fps。结论:打磨消雾并让强梯度层界面浮出,但沿线长均匀段固有偏雾,梯度不透明度无法凭空长出层。
|
2026-06-23 20:53:42 +08:00 |
gaozheng
|
fb175d6d3d
|
fix(gpr_poc): view 交互窗口统一走单纹理快路,去 MultiBlock 分块
交互 view 任何相机位置都只渲一张 vtkImageData + 单 vtkSmartVolumeMapper,
与 --preview 走完全同一条产单图 + 同一 mapper 的路径:
- LOD 选层:远观/中景升到最细的整卷各轴<=16384 层(L2/L3)整卷一张纹理;
拉近取 level0 视野覆盖的 X 子区域重组一张纹理。两条都用 buildLevelImage /
buildLocalLevel0Image 产单图。
- 去掉交互路径的 OutOfCoreSource/BrickPager/MultiBlock + budget 分块渲染
(renderC 等 POC 子命令仍保留)。
- LOD 随缩放真切换,只在 EndInteraction 重组一次。
- 新增 view --preview --near 拉近预览(view-near.png),与真窗口同路径。
- parseArgs 支持无值布尔旗标(--preview --near 不再误吞)。
修复:开窗+拉近无缺块(整张纹理),fps 从个位数升到几十~上百。
|
2026-06-23 20:15:28 +08:00 |
gaozheng
|
f4922dd6e2
|
feat(gpr_poc): view 交互窗口默认视觉参数采用 gallery var4
无 --gallery/--preview 的交互窗口此前用旧暗默认,现统一为 var4:
seismic 配色 + V 形实体不透明度包络(floor0.035/mid0.38/max0.84) +
取景(El18/Az22/Zoom2.0) + exagg8 + 略亮冷灰背景。
- 抽出 kViewDefaultVariant 引用 kGalleryVariants 末项(var4)作单一来源,
交互默认与 view-var4 走同一份参数,避免复制粘贴漂移(DRY)。
- 新增 makeVariantProperty 统一按包络建体属性,gallery 与交互默认共用。
- viewSetupDefaultFrame 取景角度改取自 var4;cmdView 配色/包络/背景/exagg
默认改为 var4;--exagg/--opacity 显式传入仍覆盖。
- 验证:view --preview 产出 view-default.png 与 view-var4 一致
(结构像素 30.18% vs 30.11%、亮度 33.9 vs 33.7、fps 77 vs 75);
view --smoke 仍 OK。
|
2026-06-23 19:52:35 +08:00 |
gaozheng
|
9af363080a
|
feat(poc): view 视觉调参画廊 4 组离屏 preview
view 加 --gallery / --preview --variant N:同一沿线中段局部段+同一相机框法,渲 4 组不同视觉参数(不透明度包络/配色/取景/背景)各存 PNG 供挑选。
新增 makeSeismicColorScale(红白蓝高对比)、makeJetColorScale(全程高饱和)、makeSolidVolumeProperty(V形实体感包络:近零背景压低但可见、中高值段普遍 0.3~0.85、半透明实心内部层次可读)、meanBrightness(画面均亮度度量)。
基线默认结构像素仅 0.07%(几乎全黑、缩角落);4 组拉到 17~30%,亮度显著提升,fps 76~86(≫30)。推荐 var4 作默认。
|
2026-06-23 19:40:52 +08:00 |
gaozheng
|
b1a8d1365d
|
fix(gpr_poc): view 默认取景改局部段+加 --preview+fps 显真实帧率
修 view 开窗空白:默认相机框整条 2.2km 线(横截面 1:34),即便 exagg=8
也是隐形细带。三处修复:
1. 默认取景改对准沿线中段一个 ~256 道(4 brick 列)的全分辨率局部体,
ResetCamera+Zoom 框满画面,首帧即见层状结构(同 lod-tuned-local.png 取景)。
2. 新增 view --preview:用与真窗口完全相同的相机/source/exagg/传函离屏渲一帧
存 view-default.png,旋 N 帧报真实 fps+结构像素数(排除深蓝灰背景)+纹理错。
3. fps 文本改为松手时连渲 3 帧累计实际 Render 耗时取均值,不再把空闲间隔算进去。
实测 preview:默认视角有结构(结构像素>0)、无纹理错、真实渲染 ~185fps。
|
2026-06-23 19:27:39 +08:00 |
gaozheng
|
07309da1b3
|
fix(gpr_poc): 修复 view 子命令无限渲染循环导致窗口卡死
EndEvent 观察者会在每次 Render() 结束触发,而回调内部又调用
rw->Render(),那次 Render 再触发 EndEvent → 再进回调,形成无限
递归重渲,窗口无响应、fps 趋近 0。
- 删除 rw->AddObserver(EndEvent, cb) 自激源
- 保留 iren EndInteractionEvent 观察者(仅松手触发一次,不自激)
- viewOnInteract 加 inCb 防重入布尔(双保险)
- 整卷粗层 cachedWholeLevel 缓存不变,概览级别不变时不重建 image
|
2026-06-23 19:09:17 +08:00 |
gaozheng
|
bdc6c90db8
|
fix(gpr_poc): view 概览整卷渲染修空窗 + 控制台 UTF-8 修乱码
概览/中远视角相机选中粗层时,viewRefreshBlocks 升到最细的整卷各轴
≤16384 的 level(本数据 level0/1 长线 X 超 16384 → 升 level2),用
buildLevelImage 整卷重组单块渲(忽略 budget),不再被 budget=64 砍成
64/696 稀疏块;仅相机选中 level0 全分辨率才走分块+budget(同 12c)。
main 入口 SetConsoleOutputCP(CP_UTF8) 修 Windows 中文控制台 GBK 乱码。
|
2026-06-23 18:58:42 +08:00 |
gaozheng
|
bec6a376d5
|
fix(ui): 详情对话框页脚/表单改走 FormKit 符合视觉规范(去Arco式大按钮)
之前为"像原版"手搭 QFormLayout + Arco式页脚(45%等宽/两端对齐/多主按钮/顺序反),
违反 Geopro3.0 视觉规范 §6.7/§7.5/§7.0.10。改为规范实现(字段结构/API 不动):
- 白化/另存/滤波/网格化:页脚改 formkit::addDialogButtons(右对齐 取消+确定,主按钮蓝);
异步确认改接 Ok 按钮 clicked(校验/whitenData/save 成功才 accept);表单改 makeEditForm
+editLabel+capField+addSection;宽度按规范(白化560/另存420/滤波保留宽/网格分组)
- 滤波"保存设置"作次按钮(ActionRole)不抢 primary;网格化 上一步(次)左+取消/确定右
- 快查:ScatterFilterDialog 可编辑输入改 makeEditForm;AutoAnnotation 主操作 setDefault
- 异常各弹窗/反演表单 已合规未动
build all 绿,341/341。
|
2026-06-23 18:40:11 +08:00 |
gaozheng
|
824898a65c
|
feat(poc): gpr_poc renderLOD 探针验证 LOD-fps 全量交互渲染可行性
四件事全离屏双闸实测(本机 RTX3060):
(a)粗层概览 level2 ~752fps (b)全分辨率局部 level0 ~380fps
(c)LOD 切换过渡切换帧 ~5.5ms 无可感知卡顿 (d)存 3 张对比 PNG。
双闸:无 3D 纹理维度错误 + 三段均回读非空像素,fps 可信。
判据:两端均达交互级且切换无卡顿 -> LOD-based C 路线钉死可行。
最低配未验,需目标机复测。tools CMake 加 IOImage 供 PNG 截图。
|
2026-06-23 17:49:11 +08:00 |
gaozheng
|
f51706b4b3
|
feat(poc): renderC-partitioned 单 mapper SetPartitions 整卷体绘制 fps 探针
整卷喂单个 vtkOpenGLGPUVolumeRayCastMapper + SetPartitions(ceil(nx/16384),1,1),
绕过 GL_MAX_3D_TEXTURE_SIZE 纹理墙。双闸(纹理错捕获+真实回读非空像素)防假帧率。
实测(44476x29x162,398MB):SetPartitions(3,1,1) 真渲出(非空 1264px,无纹理错),
体绘制 ~8.8-11fps,峰值内存 ~556-653MB。绕过纹理墙成功但未达交互级(<15fps),
与 renderC MultiBlock 9.5 静态同档 → 瓶颈在全分辨率整卷 ray cast 本身,
非每块一 mapper。VTK 这条路交互级天花板暴露。
|
2026-06-23 17:10:49 +08:00 |
gaozheng
|
2beb97fa73
|
feat(vtk): 核外分块体绘制 OutOfCoreSource + renderC 基准(POC-C 命门探针)
OutOfCoreSource 实现 IVolumeRenderSource:相机选 LOD + 视锥裁剪选视野块 →
BrickPager(LRU,内存恒定)→ 每块 ≤64³ vtkImageData(带世界坐标)。renderC 用
vtkMultiBlockVolumeMapper 渲染工作集,绕开 GL_MAX_3D_TEXTURE_SIZE(16384)单轴墙。
实测(单线 store nx=44476>16384,renderB INVALID):
- 分块核外真渲出(非空像素,无纹理维度错),对照 renderB 整卷上传失败。
- 内存恒定:budget=64 驻留 64 块 / 220MB,与体总量无关。
- 静态工作集 9.5 fps;动态换页 1.45 fps(qUncompress 解压+每帧重建 mapper 177ms/帧,
撞墙);fps 随块数近似反比劣化(256 块 0.47 fps)。结论与缓解见 poc-results-C.md。
含单元测试(纹理安全/budget 恒定/块世界坐标)。
|
2026-06-23 15:07:09 +08:00 |
gaozheng
|
03805f4326
|
feat(poc): POC-B 离屏 GPU 渲染基准(offscreen-smoke 闸门 + renderB 体绘制/切片 fps)
- gpr_poc 新增 offscreen-smoke: 离屏 vtkRenderWindow + cube + 读回像素, 闸门验证离屏 GL 可用
- gpr_poc 新增 renderB: 整卷 VTK_SHORT 体绘制(旋相机) + 切片扫描(reslice 沿 Z) fps 实测
- 关键发现: line 001 cellXY=0.05 整卷 44476x29x162, X 维超 GL_MAX_3D_TEXTURE_SIZE(16384),
vtkVolumeTexture 上传失败, 体绘制 fps 如实标 INVALID(绝不上报假帧率); 切片 54.6fps 真实流畅
- 用 CapturingOutputWindow 捕获纹理维度错误 + 维度超限双判据, 避免误把空纹理假帧率当性能
- CMakeLists 补 RenderingVolume/RenderingVolumeOpenGL2/ImagingCore/InteractionStyle 组件
|
2026-06-23 13:52:51 +08:00 |
gaozheng
|
bfd7d4aafd
|
feat(poc): gpr_poc headless 度量 CLI(地基端到端串联)
串起 assembleGprSurvey→buildGprVolume→ChunkedVolumeStore::write→
buildPyramid→WholeVolumeSource,提供 build/load/selftest 三子命令,
输出建体耗时/维度/体积/压缩比/加载/峰值内存指标(Psapi 峰值工作集)。
selftest 合成数据端到端 PASS。真实明星路数据 BLOCKED:前置 readIprb
的 traces=lastTrace+1 严格校验与真实文件「道数=lastTrace」系统性不符,
装配阶段即抛异常,未擅自改前置/其单测,如实记录于 poc-results-B.md。
|
2026-06-23 12:27:10 +08:00 |
gaozheng
|
acbc6d5b46
|
spike: 准备 S1 冒烟构建 + voxel 离线验证
- tools/validate_voxel.py: 两交叉剖面 IDW+maxDist 成体素, 切片可视化; 实证 105k 体素仅 15.9% 有约束(可信体需≥3线/3D网格)
- CMakeLists: VTK find_package 指定 COMPONENTS(VTK9 必需, 否则 VTK_LIBRARIES 空)
- vcpkg.json: 依赖按层递增, 当前仅 gtest(免 S1 被 GDAL/PROJ 拖慢)
|
2026-06-07 19:17:11 +08:00 |
gaozheng
|
fe7737b175
|
chore: 登录机制核实 + 样本离线渲染验证
- 登录: JSEncrypt RSA-2048, login2(/admin/tenant/auth), token=data.accessToken
- tools/validate_samples.py: 复现 #17 散点/#18 网格等值面, 验证解析+色阶+异常逻辑
- 量化两剖面几何(夹角77.7度,十字支撑), 佐证可信体数据依赖(需>=3线/3D网格)
- spec §8 更新登录细节; _validate 产物已忽略
|
2026-06-07 17:35:38 +08:00 |