Commit Graph

471 Commits

Author SHA1 Message Date
gaozheng 0a0d3ba017 feat(gpr_poc): 加 view-all 子命令——20 条独立体按真实 GPS 位置/航向摆进同一 3D 场景一起渲
发现 storesDir 下所有 明星路_NNN 体;公共世界原点取全体 .gps 最小经纬;
每条线按其 .gps 起点平移 + 起→止航向绕 Z 旋转定 vtkTransform,整卷体套
UserTransform 全加进同一 renderer 一起渲;仅 Z 方向 exagg 夸张;传函复用 P4
默认醒目版(var4)逐体 2/98 分位标定。--preview 出俯视+斜视两图。
真实位置下同路多趟会重叠成一带,加 --spread M 可沿垂直航向铺开成可分辨测区。
复用 geopro::io::gpr::GpsTrack(parseGps/lonLatToLocalM)。
2026-06-25 09:52:17 +08:00
gaozheng df25836cbd fix(ui): VtkViewToolbar 重做-三段(设置|视图|缩放)+图标(Gear/Plus/Minus/Fit)+悬浮画布(界面修复 2 一版) 2026-06-25 09:47:21 +08:00
gaozheng a990f2ea90 fix(ui): 左面板 QSplitter 可拖改宽(min180/max560)+禁横向滚动条(界面修复 1) 2026-06-25 09:41:06 +08:00
gaozheng beb398d478 fix(ui): 生成按钮移标题行+采集时间改时间段(不限)+切片不单列段(挂三维体树)(界面修复 3/4/5) 2026-06-25 09:34:19 +08:00
gaozheng d70590cbef feat(data): 逐线 GPR 体反量化适配器 + GprVolumeRepository
新增数据层方案A纯数据通道,把逐线 GPR 处理后 int16 量化体(io::gpr
buildLineVolumeFromGpr3dv 产 BuiltI16)反量化成 app 渲染链吃的稠密 float 体
(data::VolumeGrid),使真实雷达三维体可经现成 loadVolume->addVolume->buildVoxel
显示(替 mock),零碰并行会话 UI/树/异常热文件。

- builtI16ToVolumeGrid:纯函数适配器,逐体素 Quant::toPhys 反量化,
  kBlank 空值哨兵->NaN(下游 buildVoxel 映射透明),origin/spacing/vmin-vmax 搬运。
- createGprVolumeGrid(lineDir,linePrefix,coarse=4):走 P1/P2 链建逐线体->适配。
- 单测:适配器逐值反量化/维度/spacing/origin/kBlank->NaN;全链合成多通道
  .iprb 走真链产出有效 VolumeGrid;缺线抛异常。434 测试全过,无回归。
2026-06-25 09:06:15 +08:00
gaozheng 4e2bdc3b81 feat(gpr): build-line 健壮支持任意测线 + 新增 build-all 批量建体(磁盘守护/coarse 下采样)
- 桥接 buildLineVolumeFromGpr3dv 增 coarse 参数:沿测线(道/X 轴)按步长下采样,
  spacing.x ×stride 保持真实世界尺度;通道/样本保留全分辨率。默认 coarse=1 全分辨率,
  对现有调用与测试零影响。
- build-line 增 --coarse F;单线建体核心抽出 buildOneLine,加体维度退化守护
  (短桩线 nx<2 等报因跳过不落盘),整条 try/catch 不崩。
- 新增 build-all <lineDir> --outBase <baseDir> [--levels N] [--coarse F]
  [--minFreeGB G]:扫 *_A<NN>.iprh 发现全部测线,逐条建到 baseDir/<line>/;
  每条建前查磁盘剩余,低于阈值(默认 3G)停并报已建哪些;单条异常捕获跳过不中断批量;
  末尾打印各线状态(成功/跳过+因/维度/大小)与合计占用。
- 通道/道/样本全从数据读,不写死;不破坏现有 gpr/bridge 测试(12/12 通过)。
2026-06-25 08:42:31 +08:00
gaozheng 4330e12c3e feat(vtk): 逐线三维体调亮调清晰(gallery 4 组对照)
P3 默认(seismic+严格梯度门+低 ambient)整体偏暗、均匀层被门全透成空。
本次只调视觉(配色/不透明度/梯度门松弛/光照),不动建体/桥接/异步/LOD:
- 新增调亮版 seismic、增强灰度两套配色
- GalleryVariant 加 gradGateRelax(梯度门松弛 0~1)与 ambient 字段
- makeVariantProperty 按松弛度抬低梯度地板+左移阈值,保留弱结构;ambient 由变体控
- 4 组对照重排:var1 暗版基线 / var2 提亮 seismic / var3 jet 高对比 / var4 增强灰度(默认)
- gallery --out 让出图落在 store 目录(tmp/line001_proc),便于就地对照
- 端点仍按该体 2/98 分位自适应,非写死

实测(tmp/line001_proc):默认 var4 平均亮度 21.97→43.28、结构像素 3.9%→23.1%,
明显更亮更清晰;fps 约 51(交互级)。
2026-06-25 07:36:40 +08:00
gaozheng c94992a8d5 docs: #2/#4/异常详情完成,仅剩 #6 退役旧栏(需补 VE 迁移+setItemChecked) 2026-06-24 21:47:50 +08:00
gaozheng b9a655126f feat: 装置类型枚举接口 listArrayTypes→填字典→段头装置下拉显示+过滤(Task12 #2) 2026-06-24 21:45:38 +08:00
gaozheng a41b428b09 feat: VolumeParamsDialog 扩展-左侧源列表(可增删)+生成位置下拉(GS/TM)+req归属(Task12 #4) 2026-06-24 21:37:33 +08:00
gaozheng 7a294e13ab fix(vtk): 逐线处理后三维体修可见性(传函2/98分位标定+段落取景+段直读)
P2 逐线处理后体(tmp/line001_proc 45305x14x796)渲染近黑。根因:处理后值多集中±360窄带、少量离群±9000,view传函按meta全量化域(±9249)映射→窄带信号近透明→全黑。

修:① 新增 sampleScalarPercentiles 扫该体实际值取2%/98%分位作色阶/不透明度物理端点(裁离群),wired 进 cmdView(底图基准)与 runGalleryVariant(局部段基准);② 默认取景:viewSetupDefaultFrame 直读 level0 沿线中段子体喂高清 mapper(绕开异步LOD在框一段视距下仍选最粗整条细带层),并只框该段包围盒,相机改从+Y正对X-Z宽面(B-scan墙)、小角度取景;梯度不透明度+光照(var4)与exagg仅深度均保留。

效果(tmp/line001_proc --preview):结构像素 0.07%→2.7%(level0),清晰可见GPR内部分层(横向层叠+通道竖纹+基底强反射),fps~78/127(静/交互态)。431 测试全过。
2026-06-24 21:37:10 +08:00
gaozheng cfd242c106 feat: 异常双击详情接入三级树(anomalyById→AnomalyPropertiesDialog)(Task11 Step4b) 2026-06-24 21:24:48 +08:00
gaozheng 7a41fb0f33 docs: 续会话第二批进度(工具条/confType/三级树/异常归属完成)+剩余4项真实状态 2026-06-24 21:16:10 +08:00
gaozheng 1d744bab81 feat(app): 对象树拉取改 checkedSourcesChanged+confType 分流(支持 GS 直挂 ds)(Task12 #1) 2026-06-24 21:13:28 +08:00
gaozheng 6edfad9a2f feat(app): VtkViewToolbar 接入中央画布(view/zoom/fit + axesSettings 弹窗)(Task12 工具条) 2026-06-24 21:10:09 +08:00
gaozheng 2f07e605c8 feat(app): 三维体段「体→切片/异常」三级树注入 + 异常排除渲染勾选 + 创建异常即时进树(Task11 Step4a) 2026-06-24 20:59:21 +08:00
gaozheng a32822f7d6 feat(gpr3dv): 桥接处理后立方体→geopro量化/分块/VTK体绘制(P2 渲第一条线真三维体)
把 gpr3dv(P1)处理链产出的处理后立方体桥接到 geopro 已有的量化+ChunkedVolumeStore
+VTK 体绘制,渲出第一条线(明星路_001)的真三维体。算法零改动,仅复用 geopro 量化/
store/渲染。

- 新增桥接 src/io/gpr/Gpr3dvVolumeBridge.{hpp,cpp}(独立 target geopro_gpr3dv_bridge,
  不污染纯 C++17 解析层):走 P1 原版 API load→buildVolumeData→runPipeline(默认链)
  →再 buildVolumeData(处理后),得 volumeData[通道][道][样本];轴映射 X=道/Y=通道/
  Z=样本;扫值域定 Quant(offset=中点);世界 spacing(dx=道距/dy=通道横距/dz=深度采样距)。
- gpr_poc 加子命令 build-line <lineDir> <linePrefix> --out <store> [--levels N]:
  桥接→ChunkedVolumeStore::write+buildPyramid,报维度/量化/spacing/内存/耗时;view 渲。
- 测试 tests/io/gpr/test_gpr3dv_volume_bridge.cpp:合成 2 通道 Impulse 测线走真链,
  校验轴映射/spacing/量化(offset=中点)/稠密体无 kBlank/缺线抛异常。

真实数据验收(明星路_001):体维度 45305×14×796(道×通道×样本,样本由 821 经零时校正
裁至 796),处理后值域[-9249,9206] scale=0.288 offset=-21.5,spacing dx=0.049/dy=0.105/
dz=0.0101m,落盘 845MB 压缩比 1.14x;view --preview/--base 渲出无纹理错、整卷盖全。
全量测试通过。
2026-06-24 20:50:10 +08:00
gaozheng 8b57dd9679 feat(app): 创建异常按所在切片是否已保存挂体/切片(resolveAnomalyMount, Task11 Step3) 2026-06-24 20:49:19 +08:00
gaozheng 07be3aef21 feat(data): Api3dRepository.anomalyRows 按 remarkSourceId 供三级树注入(Task11 Step2) 2026-06-24 20:45:55 +08:00
gaozheng 52830bbcb0 feat(core): Anomaly volumeDsId→remarkSourceId(挂体/切片)+resolveAnomalyMount+修正spec/plan命名(Task11 Step1) 2026-06-24 20:37:45 +08:00
gaozheng 6e3c810dcc docs: 异常归属设计修订-取消独立异常区,异常按归属挂体/切片+三级树(spec+plan Task11+HANDOFF) 2026-06-24 20:24:24 +08:00
gaozheng 0efd84544c feat(gpr3dv): 拷入 3DGPRViewer 数据生成链(geopro_gpr3dv 静态库)+冒烟
把参考实现的"多通道测线→GPRDataModel立方体→RadarProcessor处理"链
原样 vendored 进 external/gpr3dviewer/(算法零改动),生产管线A地基。

- 拷入: GPRDataModel.h/SurveyGeometry.h/RadarTypes.h/IprhParser/
  ImpulseMultiChannelConverter/Rd3Parser/RadarProcessor/PerformanceLogger
  + third_party/kissfft/*(逐字复制,未动算法体)。
- CMake: geopro_gpr3dv 静态库,链 Qt6::Core+Gui(QVector3D)+OpenMP+kissfft;
  enable_language(C)使kissfft .c入编;接进根构建。
- .gitignore: /external/* + 例外 !/external/gpr3dviewer/ 使 vendored 入库,
  qwt-src/vtk-install 仍忽略。
- 冒烟 tools/gpr3dv_smoke: 走原版 API loadImpulseMultiChannel→buildVolumeData
  →runPipeline(默认流水线)。线001冒烟: 通道数=14(读自数据)、立方体
  14x45305x821、处理前后平均绝对幅值 393.58→360.34(处理生效)。
- 全量构建通过,425/425 测试通过。
2026-06-24 20:19:24 +08:00
gaozheng d539fc1b73 docs: Task12 阶段A(核心数据流)完成 + 剩余6项精修交接 2026-06-24 19:50:36 +08:00
gaozheng 901c84e0ae feat(app): 接通对象树→splitByCategory→三维分析5段数据流+勾选分流渲染+生成入口(Task12 阶段A) 2026-06-24 19:49:18 +08:00
gaozheng 7815bf7d4c docs: VTK 重构实施进度交接(Task 1-10 完成,Task 11-12 接线指引) 2026-06-24 19:28:09 +08:00
gaozheng a06d9e83f8 feat(data): createVolume(VoxelGenerateRequest) 重载+fromRequest 派生+请求体打印(mock) 2026-06-24 19:24:39 +08:00
gaozheng 3af7e44722 feat(ui): VtkViewToolbar 画布工具条 + AxesSettingsDialog 坐标轴设置 2026-06-24 19:18:34 +08:00
gaozheng 98114a36e0 feat(ui): CategoryAnalysisTab(QScrollArea 5段)+ColumnDrawer 两tab(旧栏隐藏过渡) 2026-06-24 19:14:51 +08:00
gaozheng 30e990d967 feat(ui): CategorySection 类型段组件(段头装置/日期筛选+段体可勾选树+生成入口) + DatasetFieldDictionary 缓存类 2026-06-24 19:10:03 +08:00
gaozheng 40646f7d06 refactor(tree): 评审修复-抽 recomputeAllGsStates 去 nullptr 信号 hack + 注释精确化 2026-06-24 18:15:03 +08:00
gaozheng c5b3907fad feat(data): DatasetFieldDictionary 解析 arrayType/collectTime 映射+装置字典(纯函数) 2026-06-24 18:08:45 +08:00
gaozheng 1978a31fa7 feat(tree): GS 三态状态机(停 AutoTristate)+右键 ds/tm + checkedSourcesChanged 源集合
合并 plan Task 4+5:plan Task 4 右键代码已引用 Task 5 的 emitCheckedSources,
二者均改 ObjectTreePanel 且循环依赖,合并实现避免中间不可编译态。
checkedSourcesChanged 与旧 checkedTmsChanged 并存,Task 12 接线切换后删旧。
2026-06-24 18:05:09 +08:00
gaozheng 6b399018d3 test(data): 补 properties[1] 日期项断言(锁定 toVariant().toString() 行为) 2026-06-24 18:04:51 +08:00
gaozheng f00a2143a2 feat(data): VoxelGenerateRequest/SliceGenerateRequest DTO + toJson 2026-06-24 17:52:33 +08:00
gaozheng 07cf75d967 feat(app): CategoryConfig 映射表 + splitByCategory 按 dsTypeCode 分大类 2026-06-24 17:48:47 +08:00
gaozheng 5a719ca16d feat(data): DsRow 加 dsTypeCode/properties + parseDsRows 解析 2026-06-24 17:40:49 +08:00
gaozheng a7d558bbfa docs: VTK 分类视图重构会话交接文档 2026-06-24 17:19:19 +08:00
gaozheng ef10c354c9 docs: VTK 重构实施 plan + 生成三维体入口/归属调整
- 新增实施计划(8 phase/12 task, TDD bite-sized)
- 客户确认变动: 新增三维体入口回段头(数据类型层面)+对话框「生成位置」选归属; 归属放开 GS/项目根/TM(structParentConfType 1或2, 默认单GS挂该GS/跨GS挂项目根)
- spec 同步该变动; openapi 升 v0.6-draft
2026-06-24 17:17:32 +08:00
gaozheng eceb964aa1 docs: VTK 三维分类视图重构 spec + 三维体归属层级修订
- 新增 spec: 按数据类型大类(电阻率/视电阻率/瞬变电磁/三维体/切片)分组视图; 对象树 GS 三态双开关联动 + 项目根固定; 装置类型(arrayType)/采集时间(collectTime)筛选; VTK 画布工具条; createVolume/createSlice 组装真实请求体 DTO(走 mock)
- vtk-3d-openapi.json v0.5-draft: 三维体归属由 TM 改为 GS/项目根(structParentConfType=1)
- 经 opus 子代理评审并据评审修订(GS 三态停用 AutoTristate 改手动/properties 两接口形态澄清/帘面勾选链承接等)
2026-06-24 16:22:26 +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 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 ced2ca7811 feat(render): AsyncRegionBuilder 就绪缓存LRU+预取+相同目标短路
C3-3:为 AsyncRegionBuilder 加按 RegionTarget 键的有界 LRU 就绪缓存
(容量N默认6)、prefetch 后台低优先预取(不抢占主目标)、getReady 非阻塞
缓存命中,并短路 requestTarget 相同目标(修 C3-2 LOW)。worker 每轮主
目标优先,否则建预取队列最新;缓存/refcount 增减全在锁内,析构干净 join。
ViewAdaptiveVolumeSource:updateView 提交主目标后预测下一目标(细一层
同区+沿相机方向平移一格 brick 列)并 prefetch;currentImages 走
getReady(主目标)命中即用否则沿用上一张。线程安全延续 C3-1。
2026-06-24 10:37:12 +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 fa34cb0bc3 feat(render): C3-1 AsyncRegionBuilder 后台异步重组 + 双缓冲交接
抽公共重组核 reorganizeRegion(RegionReorganizer.{hpp,cpp})为单一真源:
C2 ViewAdaptiveVolumeSource 改委托、C3 AsyncRegionBuilder 也调它(真 DRY)。

AsyncRegionBuilder:后台 worker 调重组核构建 vtkImageData,主线程非阻塞
takeLatest 取最新就绪;requestTarget supersede 收敛最新不堆积。线程安全:
vtkImageData refcount 增减全在 mutex 内/单线程独占,析构置 stop 唤醒干净 join。

测试:5 个异步用例(同步一致/supersede 收敛/析构忙时干净 join/并发 400 次不崩
不死锁/takeLatest 非阻塞)全绿;C1+C2 的 17 个 ViewAdaptive* 抽核后回归全绿。
2026-06-24 09:56:55 +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 0da5accebe fix(lod): selectLod 最粗层兜底裁剪,保证返回区间恒不超 maxTextureDim
最粗层 fits||maxLevel 分支原先无条件返回,不校验 fits;合并体最粗层
全可见区间仍 >maxTextureDim 时返回区间会突破单纹理硬上限,C2 重组撞
GL 16384 纹理墙退回慢路。

新增 clampAxisToMaxTexture,在所有返回路径前按可见中心对称裁三轴到
重组单纹理各轴 <= maxTextureDim 的子区间;brick 本身 > maxTextureDim
的退化情形返回单块并由 C2 体素级再裁(契约见 hpp)。补 3 例边界测试
(brick>maxTextureDim、最粗层整卷超限、改写 RespectsMaxTextureDimAlways
为 brick!=maxTextureDim),原有用例全绿。
2026-06-24 09:09:01 +08:00