Add hierarchy axis motion validation and model deletion
This commit is contained in:
@@ -22,6 +22,8 @@
|
||||
9. 应用后,控制面板程序执行、Jog、RTCP 切换和刀长变化继续以 Worker/WASM 快照为唯一运动输入;模型不得在 React 中重新计算刀尖逆解。
|
||||
10. 导入 GLB 后,若模型已有 `Object3D.children` 层级,右侧必须按原结构显示为树。树节点名称可拖放:GLB 根节点之间管理部件装配父级,同一 GLB 内部节点之间管理内部父级;循环和跨 GLB 内部节点拖放必须拒绝。
|
||||
11. 选择任意树节点时,显示其相对父节点的局部原点 XYZ 坐标。层级和原点读取自解析后的 GLB,导入过程不修改源场景;拖放结果保存为草稿覆盖。
|
||||
12. 导入的整机或部件可删除;删除后释放其 GLB 几何、材质和纹理,移除树及预览引用。
|
||||
13. 树节点可绑定 X/Y/Z/A或B/C 轴角色。层级运动测试输入 XYZ 毫米值和旋转轴角度后,按节点实际父子关系施加局部位移/旋转,并输出各绑定节点的局部位置、世界位置和四元数,用于验证子节点是否正确跟随父节点。
|
||||
|
||||
## 数据和单位
|
||||
|
||||
|
||||
@@ -10,5 +10,6 @@
|
||||
8. `MGR-08`:验证 WASM 关节值到部件链的映射、刀具/工件/路径坐标一致性及 AC/BC 五轴程序。
|
||||
9. `MGR-09`:浏览器交互、错误边界、类型检查、生产构建、截图和报告收口。
|
||||
10. `MGR-12`:按 GLB 原始 `Object3D.children` 显示树,支持根部件和内部节点拖放,选择节点显示父级局部原点;用 MILL700 六层结构验收。
|
||||
11. `MGR-14`:新增导入模型删除、树节点轴绑定和 XYZ/ABC 层级运动测试,输出局部/世界变换;MILL700 主轴链与工作台链验收。
|
||||
|
||||
每轮只推进任务矩阵中依赖已满足的任务。代码完成后必须同步更新 03、04、05;若改变数据契约或坐标定义,先更新 06。
|
||||
|
||||
@@ -34,6 +34,15 @@
|
||||
- 发布 `render-state`、实际 pixel ratio、buffer size 和 GPU 上限诊断;context lost 后停止动画循环,避免重复 framebuffer 错误刷屏。
|
||||
- 模拟页面 `1154x220`、DPR 3:CSS `656x655`、drawing buffer `984x982`、GPU 上限 `8192`,控制台警告/错误 0。MILL700 层级树及 AC/BC 生产回归通过。MGR-13 verified。
|
||||
|
||||
## R07 / 2026-09-20 / 删除与层级运动验证
|
||||
|
||||
- 新增“删除导入模型”,删除后释放源场景资源、移除装配引用、树节点和预览。
|
||||
- 任意 GLB 根/内部树节点可绑定 base、X、Y、Z、tool、A/B、C、work 角色;角色徽标显示在树节点上。同一角色唯一绑定。
|
||||
- 新增层级运动测试输入:XYZ 为 mm,A/B/C 为 deg。预览恢复节点导入基准后施加输入,发布测试姿态及每个角色的 local/world position、local/world quaternion。
|
||||
- MILL700 实测:主轴 JT1/JT2/JT3 绑定 XYZ,输入 10/20/30 mm 后局部坐标分别增加 0.01/0.02/0.03 m;工作台 JT1/JT2 绑定 A/C,输入 15°/45° 后局部旋转严格变化 15°/45°,C 世界坐标随 A 父级变化。
|
||||
- 删除 MILL700 后 part-count=0、树节点=0。整个运动测试期间 WebGL context generation 始终为 1,没有因输入或树操作重建 renderer。
|
||||
- 生产 8 部件 AC/BC 应用、导出和程序运动回归通过,warning/error=0。MGR-14 verified。
|
||||
|
||||
## R02 / 2026-09-20 / 部件装配、标定、应用与验收完成
|
||||
|
||||
- 新增 `machine-manager.ts`:通用自包含 GLB 部件加载、SHA-256、深复制、八角色和两条机械链校验、AC/BC URDF 生成、组合场景、底座/整机 userData、组合哈希。
|
||||
|
||||
@@ -15,3 +15,4 @@
|
||||
|MGR-11 Z-up 机床坐标|verified|MGR-04,MGR-05|`camera.up=(0,0,1)`,机床 Z 竖直、XY 地面;导入模型信息和原始变换不修改|
|
||||
|MGR-12 GLB 层级树管理|verified|MGR-02,MGR-04|原始层级按 tree 显示;根/内部节点拖放、循环拒绝、节点原点坐标和 MILL700 深层结构验收通过|
|
||||
|MGR-13 WebGL 资源稳定性|verified|MGR-10,MGR-12|禁用超限 MSAA;drawing buffer 按 GPU 上限和像素预算缩放;零尺寸/context lost 不连续绘制;短视口 DPR3 无警告|
|
||||
|MGR-14 层级运动验证|verified|MGR-12,MGR-13|模型删除;树节点轴绑定;XYZ mm、A/B/C deg 输入驱动局部层级;local/world 变换和 MILL700 父子联动验收|
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
- 状态:verified;浏览器错误 0。
|
||||
- 覆盖:8 部件导入和预览、原点显隐、数值/TransformControls 变换、组合 GLB 导出、AC/BC 应用、底座 userData、物理零点、非法层级拒绝、BC 五轴程序。
|
||||
- 截图:
|
||||
- `coverage/glb-machine-manager/manager-ac-config.png`,SHA-256 `6e53968722744d8fc4dc753d83ee8bad3c6c3ce0d41c34d64214b5586faf2dc5`
|
||||
- `coverage/glb-machine-manager/manager-ac-config.png`,SHA-256 `5920cce68e8eba3adffdefaab2d475de7e49b62515a9453e76fb994e168e6ce0`
|
||||
- `coverage/glb-machine-manager/managed-bc-running.png`,SHA-256 `2a28290ff58b3a0d3250ee5ebb1bc636a2cc8b8f62828b41764435501f97d385`
|
||||
|
||||
## E03 / R02 / 生产构建浏览器闭环
|
||||
@@ -43,10 +43,10 @@
|
||||
- 状态:verified。
|
||||
- 命令:`PLAYWRIGHT_MODULE=/home/mes006/.npm/_npx/e41f203b7505f1fb/node_modules/playwright/index.mjs node scripts/test_machine_manager_mill700_browser.mjs`
|
||||
- 模型:`MILL700-U_1.glb`,9,418,852 bytes,SHA-256 `bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66`。
|
||||
- report_id:`GLB-MGR-E05`;报告 SHA-256 `7c479b36396abc6f7466ed8b54cc83216dd72c30ba11fa0c667e6491d47c2171`。
|
||||
- report_id:`GLB-MGR-E05`;报告 SHA-256 `11327a756a019ff933759fdf95da5a0e461dcf6987d0fa030d777fe82c96c807`。
|
||||
- 结构:132 节点、126 网格、深度 6、126 材质,其中 110 个 `metalness >= 0.9`。
|
||||
- 检查:已有内部层级完整保留;管理器使用 `studio-pmrem`、sRGB 输出、ACES、曝光 `1.45` 和多向补光;浏览器错误为 0。
|
||||
- 截图:`coverage/glb-machine-manager/mill700/mill700-studio-lighting.png`,SHA-256 `289255511eccce697ec0c6f002a44588475e9042fa12f23646ea02c4c63a3b60`。
|
||||
- 截图:`coverage/glb-machine-manager/mill700/mill700-studio-lighting.png`,SHA-256 `ad1e2a36a5db765a13ba3ce633c9cc0e146867c87397cd284988d2496d950344`。
|
||||
|
||||
## E06 / R04 / Z-up 坐标
|
||||
|
||||
@@ -70,3 +70,12 @@
|
||||
- 修复后:管理器 CSS `656x655`,drawing buffer `984x982`,`MAX_RENDERBUFFER_SIZE=8192`,MSAA=false,控制台 warning/error=0。
|
||||
- renderer 诊断字段:`machine-manager-webgl-antialias=false`、`render-state=ready`、动态 `pixel-ratio/buffer-size/max-buffer`。
|
||||
- MILL700 132 节点树选择/拖放通过;生产 AC/BC 管理器闭环通过,浏览器错误 0。
|
||||
|
||||
## E09 / R07 / MILL700 层级运动验证
|
||||
|
||||
- 状态:verified。
|
||||
- 绑定:`主轴-JT1→X`、`主轴-JT2→Y`、`主轴-JT3→Z`、`工作台-JT1→A`、`工作台-JT2→C`。
|
||||
- 输入:X=10 mm、Y=20 mm、Z=30 mm、A=15°、C=45°。
|
||||
- 结果:XYZ 局部增量依次为 0.01/0.02/0.03 m;A/C 局部旋转增量为 15°/45°;C 世界位置和世界四元数受 A 父节点影响,证明层级联动有效。
|
||||
- 生命周期:输入和树操作期间 `context-generation=1`;warning/error=0。删除后部件数和树节点数均为 0。
|
||||
- 完整变换样本保存在 `coverage/glb-machine-manager/mill700/browser.report.json` 的 `motion.baseline/driven`。
|
||||
|
||||
@@ -43,3 +43,7 @@ GLB 树节点 ID 使用导入时的子节点索引路径,不使用可能重复
|
||||
## D11 / 管理器优先保证 framebuffer 可创建
|
||||
|
||||
管理器不依赖 MSAA;高 DPI 清晰度由受限 DPR 提供。drawing buffer 必须同时满足 GPU 维度上限和 4096² 像素预算,不能把异常 DOM 尺寸直接传给 WebGL。零尺寸和 context lost 视为暂停状态,不继续调用 render 产生重复错误。
|
||||
|
||||
## D12 / 轴值驱动是层级诊断
|
||||
|
||||
管理器的 XYZ/ABC 输入只驱动树中显式绑定的草稿节点,用于验证父子层级和轴向;它不发送 LinuxCNC 运动命令,也不替代 Worker/WASM。正式加工仍由控制面板程序、TP 和运动学驱动。诊断输出同时保留 local/world 变换以区分节点自身运动和父级继承运动。
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
|
||||
现有整机 GLB + 内嵌 URDF 导入能力继续保留。新管理器生成与现有 `linuxcnc.machine/1` 相同的严格结构,再通过已有配置、Worker、WASM 和 Three.js 投影链运行。
|
||||
|
||||
当前状态:MGR-01 至 MGR-13 全部 verified,MILL700 实测覆盖照明、Z-up、132 节点层级树、拖放、节点原点和 WebGL 资源降级。最新台账 R06,浏览器证据 `GLB-MGR-E01/E02/E05/E07/E08`,截图和报告位于 `coverage/glb-machine-manager/`。
|
||||
当前状态:MGR-01 至 MGR-14 全部 verified,MILL700 实测覆盖照明、Z-up、132 节点树、拖放、节点原点、模型删除、轴绑定、XYZ/AC 层级运动和 WebGL 资源降级。最新台账 R07,证据 `GLB-MGR-E01/E02/E05/E07/E08/E09` 位于 `coverage/glb-machine-manager/`。
|
||||
|
||||
文档:
|
||||
|
||||
|
||||
@@ -449,7 +449,7 @@ history rows intentionally share the family ID `mdi-history-select`.
|
||||
| `workspace-case-select` | Web selection of the INI/configuration input | Local selection; selected catalog is restricted to supported XYZAC/XYZBC cases | Does not load or change machine state until `toolbar-load-case` |
|
||||
| `workspace-load-3d-chips` | Web packaged-file equivalent of `open_file_guts` | Fetch published `3D_Chips.ngc`, then `PROGRAM_LOAD`; IDLE only | Same replacement path as Open; retains Live Plot, no automatic Run/Home |
|
||||
| `workspace-rtcp-programs`, `rtcp-program-scope`, `rtcp-program-select`, `rtcp-program-source`, `rtcp-program-load`, `rtcp-program-download` | Web RTCP source-program catalog backed by the locked LinuxCNC tree | The default scope follows the active machine: AC=`XYZAC`, BC=`XYZBC`; catalog/source/download are local file operations, while compatible main programs use the same `PROGRAM_LOAD` transaction and IDLE gate as Open | AC and BC programs are separated by kinematics. The optional all-source scope retains all 32 files for inspection; remap/subroutine/reference and mismatched kinematics cannot be sent as an executable main program |
|
||||
| `machine-manager-settings`, `machine-manager-import`, `machine-manager-files`, `machine-manager-translate`, `machine-manager-rotate`, `machine-manager-role`, `machine-manager-parent`, `machine-manager-show-origin`, `machine-tree-node`, `machine-tree-origin`, `machine-manager-apply`, `machine-manager-export` | Web component-level machine assembly extension | GLB `Object3D.children` render as a tree; selecting a node shows its parent-relative origin, and dragging tree names records validated parent overrides without changing the imported source scene. Apply validates the supported AC/BC hierarchy, generates `linuxcnc.machine/1`, then uses `LOAD_WORKSPACE` + `PROGRAM_LOAD` while OFF and IDLE | Three.js edits draft assembly metadata only; runtime joint motion, tool offset and RTCP remain Worker/WASM authoritative |
|
||||
| `machine-manager-settings`, `machine-manager-import`, `machine-manager-files`, `machine-manager-delete`, `machine-manager-translate`, `machine-manager-rotate`, `machine-manager-role`, `machine-manager-parent`, `machine-manager-show-origin`, `machine-tree-node`, `machine-tree-origin`, `machine-tree-axis-role`, `machine-test-x`, `machine-test-y`, `machine-test-z`, `machine-test-a`, `machine-test-b`, `machine-test-c`, `machine-test-reset`, `machine-test-state`, `machine-manager-apply`, `machine-manager-export` | Web component-level machine assembly extension | GLB `Object3D.children` render as a tree; selecting a node shows its parent-relative origin, dragging records parent overrides, and axis-test inputs drive bound nodes through their actual parent hierarchy without changing the source scene. Imported roots can be deleted. Apply validates AC/BC and then uses `LOAD_WORKSPACE` + `PROGRAM_LOAD` while OFF and IDLE | Axis-test motion is a local hierarchy diagnostic; production task motion, tool offset and RTCP remain Worker/WASM authoritative |
|
||||
| `manual-home-all` | `home_all_joints` | `HOME {all:true}`; ON+IDLE, no concurrent homing/jog | Native homemod selects the configured sequences. No artificial coordinated return-to-zero motion. |
|
||||
| `switchkins-0`, `switchkins-1`, `switchkins-2` | `M429`, `M428`, `M430` remaps and `motion.switchkins-type` | `KINEMATICS_SELECT`; ON, homed, IDLE, empty TP | Identity/XYZAC/User K canonical type, or stable gate reason |
|
||||
| `tab-manual`, `tab-mdi` | `ensure_manual` / `ensure_mdi` | `SET_MODE`; manual_ok and motion exclusion | Task mode acknowledgement and WASM motion mode are monitored separately; no local tab is mode authority. |
|
||||
|
||||
Reference in New Issue
Block a user