32-32.md 13 KB

32: 管线构件 glTF 素材与实例化渲染(样条/角/阀门/支管四类)

Type: task Status: claimed Label: ready-for-agent Category: frontend-execution

来源

票 24(前端设施点位与管线真实几何图层接线) 收口时维护者 2026-10-12 裁定另立本票。

现状事实(票 24 交付了什么、没交付什么)

票 24 已把真实几何接上图(端点 GET /api/cockpit/v1/infrastructure/geometry,由票 30 提供):

  • 管段:polyline 贴地折线,管径分档映射线宽、行业映射颜色 —— 已是真实几何;
  • 构件:阀门/角管道/支管管道目前用可辨识符号 + 中文标签(point + label)表达,不是 glTF 管道模型。

票 24 明确没有拿临时符号冒充"已建成的管道模型"。本票补上素材与实例化。

交付物

  1. 四类构件素材(维护者 2026-10-12 裁定的建模分类):
    • 样条管道:沿路径点拉伸的管体(管段本身已有折线,本项是把它做成有管径体积的模型);
    • 角管道:预制弯头/转角构件;
    • 阀门管道:含阀门结构的预制件;
    • 支管管道:T 型/十字型分支构件。
  2. 实例化渲染:同一构件类型复用同一份 glTF,按位置/朝向实例化,不得每个构件各加载一份(真实数据 5268 条管线,构件数随行业增长,逐个加载会爆内存)。
  3. 朝向由真实几何决定:管段两端点可算方向;构件朝向目前无来源(gas_pipe_point 无方位字段),只能按管段方向或固定朝向摆放时必须如实说明这是近似,不得声称是真实安装朝向。
  4. 素材缺失时的降级:素材未就位时保持票 24 的符号表达,不得白屏或静默丢弃。

约束

  • 素材放 public/cockpit/...(跟随现有资源归属约定),不进产物源码目录。
  • 渲染层仍是 Cesium(ADR 0005 / 票 24 裁定);若最终判定必须引入 Three.js,需先修订 ADR 0005。
  • 与票 24 的坐标纪律一致:不可上图的构件不渲染,仍进「无地图位置」清单。

验收

浏览器实测:四类构件按素材渲染、类型可辨;大量实例下帧率可接受(给出实测读数);无真实朝向来源的构件如实标注近似;素材缺失时降级为符号而非空白。

关联

由票 24 收口派生;几何契约由票 30 提供(已收口)。

进度

  • 已认领 @me、完整读票并 report。ready-for-agent,无 needs-triage、无阻塞;父 map 允许执行。本轮保留其他任务工作树,提交仅选择本票增量。
  • 用户裁定(2026-10-13补充):低多边形标准示意;地表采样减虚拟埋深2m(非实测);已知管径按mm→m。缺管径允许在同业、端点完全重合且无分叉的连续链上,以两侧不同已知管段为锚点,按缺失段路径中点距离线性插值,保留两侧code/diameterMm、标记interpolated;单侧/无锚点/同一锚点闭环/分叉不补,不吸附邻近端点、不回写。路径不平滑/不生成安装拓扑;未知构件尺寸约1m、固定朝向明示近似;沿用地下视图。原4K平均FPS≥30与构建/回归/浏览器授权保留。
  • 已实施:四类五模板(样条、弯头、阀门、三通、十字);EXT_mesh_gpu_instancing、ENU空间批次、稳定外部bin跨批共享几何;readyEvent后替换备用表达,初始/后续资源或地表失败降级、30s冷却后刷新重试;稳定批不重建,跨首次dynamic import和模型异步的清层代次守卫;已有信息面板展示虚拟埋深/近似与降级原因。
  • 对抗式复核修掉:北向镜像、跨批embedded geometry不共享、稍变就全量拆建、失败永久短路、清层期间首次import迟到复活、terrainFailed未发布。相关新回归及既有t24/t33回归通过;最后全部代码的已授权yarn build成功(退出码0,Vite54.43s),临时public验收页已移除。
  • 隔离浏览器证据:6实例/5批,spline2、elbow/valve/branch/cross各1,pending0/failed0、unknown保留1个符号,虚拟埋深与近似说明可读。窄模拟视口证据不能冒充4K。
  • 真实只读核查更正:旧响应5268条LineString均没有diameter键,不能据此断言数据库全缺管径。后端已有毫米BigDecimal,读模型未透传;本轮提交a96091ce透传原值/显式null。现网5268条均有diameter键,3332条正源管径、18条双侧推算、1918条不补;唯一合法Point仍为窨井YL-YJ-003、pointType=null,另3条不可上图几何保持拦截。真实驾驶舱读到4480管体实例/19批、1919折线/符号,与源3332/推18/未补1918一致,均未覆盖源数据。
  • 管径补全验证:新插值回归与t32/t24/t33既有回归通过;后端针对性21/21、Cockpit全量487/487通过;前端最终构建退出0(Vite55.65s)。复核先复现再修复闭合支路漏算分叉、异常JSON形成伪锚点;覆盖路径长度权重、独立反向、环、多顶点、行业隔离/邻近不吸附等。详情与证据见管径实施记录、真实补全结果、驾驶舱计数截图。窄模拟视口计数证据不代替4K运动帧率。
  • 完整实施与证据:验收记录;隔离画面;复现工具见 tools/pipe-models/README.md。
  • 尚未完成:4K可见窗口45°/10s镜头运动平均FPS≥30(真实降级与明确标识的GPU压力样例分开)、浏览器404素材缺失恢复符号、修复后的完整驾驶舱显隐与状态说明。
  • 当前障碍:browser工具schema要求同时提供互斥的off/device/尺寸、session/requestId等字段;无法去掉移动模拟或清理会话,后续会话失去注册并达5个上限。snapshot/press/screenshot仅取得部分证据,没有绕过技能用外部进程控制。
  • 自动续跑Round1:提交5f091eb,真实Cesium数学/事件加IO替身的adapter回归通过(404保留符号、地表失败原因、模板只取一次/跨批共享URL、metadata零重建、改径仅换一批、late error及destroy)。此为离线证据,不替代浏览器。
  • 自动续跑Round2:工具重载后stop仍报session/requestId互斥;静态确认插件只将action设required,模型收到的工具契约却要求全部字段。已形成可复现诊断,未修改插件/绕过浏览器技能;剩余4K/FPS及故障画面条件不变。
  • 用户可见性反馈(2026-10-14):指定燃气红/供水蓝/污水绿/雨水青/窨井紫,允许比例放大、可读性优先;雨污严格通过remark备注区分,不用名称或编码。后端1d1461a5原样透传remark/显式null(本地未推送;分支分叉提醒保留),真实备注为2526雨水+1209污水,无未分类排水。
  • 本轮可见性已实施(前端独立提交e518ba0):横向显示粗度8倍、限制1.5–3m,源/推算径和路径长度不变,中心线仍虚拟埋深2m;明亮UNLIT语义材质,sRGB转线性后法线明暗;600m外同色4px导引,近景体积,未就绪/失败全距导引;管线视图pitch-35、range×0.2、地形/建筑alpha0.18。窨井独立紫色符号/标签,信息面板加入五色图例和示意说明。
  • 对抗式复核修掉:metadata更新替换PolylineGraphics后600m距离限制丢失;CSS sRGB直接写线性材质颜色漂白。另实测GLSL1 varying在WebGL2导致调色shader停止渲染,改in恢复;同一修复随后已由票36提交850c6c6,本票复用该提交,没有带入其他建筑/图标改动。
  • 实际证据:共用驾驶舱入口3840×2160 viewport、地图canvas3790×1930,真实污水近景通过正式相机控件定位,绿/青/蓝管体清晰;燃气红管体像素差分通过,窨井紫色单独截图可见。隔离页4K canvas隐藏Entities/扣背景绿2369像素通过;严格区分隔离与正式画面,详情见可见性修复与证据及共用近景。临时开发query挂载和public测试页已撤除。
  • 最终已授权验证:前端build退出0(Vite约65s),颜色/备注/显示粗度/导引对象替换、t32模型/补径/404离线回归、t24/t33、t21相机中心保持、t22拾取校核13组脚本通过;后端remark针对性22/22、Cockpit全量488/488通过。
  • 性能尚未通过:原生rAF未加载网也0.987FPS、全量管体0.988FPS、空场景1.015FPS(visible/focused、RTX4060Ti);只能确认当前测量环境约1Hz,具体来源未知,不能当正常桌面GPU性能或满足30FPS。见数值记录。浏览器会话反复失效、stop/off参数互斥仍在,未绕过技能。
  • 用户新反馈(2026-10-14):太常地面近景2D管线消失、城南地面线正常但地下缺少模型。红灯复现:模型ready在所有视图统一隐藏600m内2D线;缺管径路径原模型计划0实例。只读最新几何名称样本统计太常9047条(源8936/推算10/缺101),城南5551条(源523/推算2/缺5026);名称分组仅诊断,不是正式片区字段。
  • 用户确认缺径显示默认:燃气DN160、供水DN400、污水DN800、雨水DN800。已实现display-only visual-default,diameterM仍null、源对象不改、不参与双侧插值;network_level异常但排水用共同DN800灰色占位。
  • 用户最新裁定雨污字段为network_level:仅DRAINAGE适用,0/旧空值为污水、1雨水;非排水忽略。后端几何接口新增camelCase networkLevel透传/排水缺值投影0,不执行表迁移或UPDATE,等待新数据后续按原字段导入。此前remark雨污分类已被此规则替代。
  • 地面视图始终全距保留2D导引;pipeline视图仅对3D batch ready的近景管隐藏导引(600m外仍显示),缺径视觉默认段也可ready并显示3D。管线模式经独立setPipeViewMode更新Cesium层,latest模式贯穿async import/模型ready/error,切换不重建批次。失效/高程失败仍全距导引。
  • 新增回归已红转绿:等级0/1/空值/非法/行业免疫;缺径默认DN/源径保真;地面与地下近景规则;实际Cesium数据源的异步视图切换、ready、model-error、属性更新替换及清层。相关既有T32补径/模型/资源生命周期、T24/T33领域与渲染回归通过。
  • 后端独立提交7150d431;后端几何Service+Controller23/23、Cockpit全量489/489通过;不改旧表数据。共享依赖不完整,@cesium/engine、@babel/parser、cross-env缺失。Cesium adapter通过已有Cesium官方bundle验证;需Vue的回归由parser缺失阻断,yarn build因cross-env缺失未启动。未安装依赖/改锁文件/启服务器;统一8000页面和本轮截图验证未执行。
  • 此前4K正常桌面FPS≥30、browser404和四类完整画面仍未验收;票保持claimed/open,满足上述门槛前不关闭/不追加完成gist。详细边界见修复记录。

Labels: ready-for-agent

Comments

local — 2026-10-14T04:10:23.357Z

This was generated by AI during triage.

提醒一句(来自票 35 会话,2026-10-14):后端 a96091ce 仍未推送,且本分支基底已变

本会话在做票 35 后端修复时动到了同一个后端仓库 E:\pipe-ner-server,只此一件事需要你们知道(未代你们提交或推送任何东西):

现状

项 值
后端 local master a96091ce(= 你们那条「透传管径原值/显式 null」,见本票进度第 5 条)
后端 origin/master 05c23774(我的票 35 提交,落在远端较新基底 5a821872 上)
两者关系 已分叉:a96091ce 与 origin/master 均非对方祖先,local master 落后远端 5 个提交

要点

  1. 什么都没丢:a96091ce 仍是有效对象(git cat-file -t = commit);你们那 4 个几何源文件 + .idea 的未提交在制品完好无损(我按字节校验过,git hash-object 与暂存时逐一致)。
  2. 但不要直接 git push:现在从 local master 直推会被拒(non-fast-forward)。请先 git fetch,再以 origin/master 为基变基(或 reset --hard origin/master 后重新 cherry-pick a96091ce),保留你们的在制品再推。
  3. a96091ce 仍只存在于本机:它不在任何远端分支上(与我会话开始时一致)——所以「远端缺管径透传」这件事仍未解决,随你们推送才会解决。
  4. 期间我做的唯一分支操作:为把票 35 推到远端,我 rebase 时它曾把 a96091ce 一并带上;我随即 reset 回 origin/master 只 cherry-pick 我自己的提交,再把分支 tip 复位成会话开始时的 a96091ce —— 即 local master 与我会话开始时完全一致,未改动你们的分支语义。

注意:远端基底在我会话前就已前进(含「移动端-工单管理」等提交),所以分叉不是我造成的;我只是在远端新基底上多加了 1 个提交。你们推 a96091ce 时本来也需要先变基。

Answer