4.0 KiB
决策记录
D01 / 继续使用 LinuxCNC WASM 作为运动权威
部件编辑器只生成模型结构和标定参数。程序执行、Jog、刀长、运动学类型和关节位置仍来自 Worker/WASM 快照。Three.js 不实现第二套 RTCP 或逆运动学。
D02 / 运行结构保持 linuxcnc.machine/1
现有严格 URDF 校验、配置写入和运行投影已经验收。部件管理器输出同一结构,可复用所有运行能力并避免引入并行格式。编辑草稿使用独立 schema,只有验证成功后才转换成运行结构。
D03 / 编辑层级自由,应用层级受求解器限制
UI 允许用户选择父级以建立层级和发现错误;应用时只接受底座→X→Y→Z→刀具及底座→A/B→C→工件。当前 WASM 只支持这两类 TRT,不能把任意树伪装成可执行机床。
D04 / 原 GLB 不原地改写
导入部件的源字节和场景保持不变。局部原点和平移/旋转存在装配配置中,应用时创建深复制运行场景。标定数据写入运行装配中底座节点及整机场景的 userData;“导出组合 GLB”将该装配序列化为新的自包含 GLB,原部件文件不被覆盖。
D05 / C 原点与 A/B 偏置的唯一映射
沿用 trtfuncs.c 和既有参数契约:C 原点 P 对应 rot-point,A/B 偏置 D 对应 offset;URDF 使用 T=P+D、U=-D、work=-P。该公式是控制模型坐标对应的唯一来源。
D06 / 物理零点是模型校准,不改控制器关节值
物理零点保存为每轴的模型零姿态标定值。渲染位移/转角使用 WASM joint - physicalZero,但不修改 Worker、INI 的回零位置或程序坐标。改变真实回零参数仍应通过机床配置完成。
D07 / 组合 GLB 只通过显式导出生成
普通编辑和“应用到 Web LinuxCNC”不触碰用户原文件。只有用户点击“导出组合 GLB”时才用 GLTFExporter 生成新文件。导出包含部件层级、URDF、底座标定 userData 和整机场景标定 userData。
D08 / 编辑器照明不修改资产材质
模型过暗通过 Three.js 场景的 PMREM 环境、色彩管理、曝光和补光解决。不得为了预览可见而覆盖导入材质的颜色、金属度、粗糙度或纹理,否则导出结果会偏离用户资产。
D09 / 管理器采用相机 Z-up 机床坐标
管理器明确调用 camera.up.set(0, 0, 1),并将默认网格旋转到机床 XY 水平面。GLB 导入不修改模型节点、几何、材质、内部层级或原始变换;相机、轨道控制器和坐标辅助负责呈现 Z-up 场景。只有用户主动编辑部件变换时才记录新的装配值。
D10 / 层级编辑使用稳定源路径覆盖
GLB 树节点 ID 使用导入时的子节点索引路径,不使用可能重复或缺失的节点名称。拖放保存 sourcePath -> targetPath 草稿覆盖,每次从原始场景克隆后应用,因此重复编辑稳定且不污染导入资产。根 GLB 之间继续使用部件 parentId,内部节点不允许跨 GLB 直接重挂。
D11 / 管理器优先保证 framebuffer 可创建
管理器不依赖 MSAA;高 DPI 清晰度由受限 DPR 提供。drawing buffer 必须同时满足 GPU 维度上限和 4096² 像素预算,不能把异常 DOM 尺寸直接传给 WebGL。零尺寸和 context lost 视为暂停状态,不继续调用 render 产生重复错误。
D12 / 轴值驱动是层级诊断
管理器的 XYZ/ABC 输入只驱动树中显式绑定的草稿节点,用于验证父子层级和轴向;它不发送 LinuxCNC 运动命令,也不替代 Worker/WASM。正式加工仍由控制面板程序、TP 和运动学驱动。诊断输出同时保留 local/world 变换以区分节点自身运动和父级继承运动。
D13 / 关节坐标轴属于节点局部空间
选中关节的坐标辅助必须作为该节点子对象放在局部 (0,0,0),不可复制世界位置或使用整机坐标轴冒充。这样关节本身旋转时辅助轴同步旋转,父关节运动时又能自然继承父链,符合 GLB 层级矩阵语义。