19｜行李与物品3D装箱规划
制作依据：想象显影机 v3.2 起始快照与完整任务流程。实现前提示词已保留。

创作决定：采用旅行行李牌的钴蓝、浅薄荷和暖橙。三维是有箱盖、内袋、拉链边、提手、轮子与内边界的打开箱体；衣物、单只鞋、洗漱包、书、水杯各有具体造型。二维高度切片承担精确摆位，三维与分层展开承担体积和遮挡解释。清单是真实可编辑的库存表，不把总量仪表当成装箱。

数据与几何：清单条目数量展开成稳定实例 ID；位置与直角朝向在实例层保存，勾选也针对实际单件。六个方向的尺寸来自原始宽/厚/长的排列，三维使用相同欧拉旋转真正转动造型。独立八角点变换核对了所有类别的全部六个方向。默认 12 件实物总包围盒 27.342 L，不以这数字判定可行；真正检查全部物品与箱界及每一对盒体。默认 12 件均找到位置，总质量含空箱 6.32 kg。加入 4.50 kg 礼物后，计划重量 10.82 kg 且 5 件未找到位置，报告明确保留此结果。

真实首轮与修改：review/before-default.png、before-action.png、before-result.png、before-plan-default.png 及 before-index.html 已保留。实际查看发现衣物/收纳包的盒体与椭球拼接出现眼状突起；展开到最大时上层物品贴近画面上边，构图显得拥挤。
修订：重建带圆角环带和倒角的连续网格，替代相互穿插的椭球拼装；衣物仍有折层、领口和接缝。相机随展开量增加距离并提升目标，浏览器控件沿当前方向作同样增量变化，保留用户已转过的方向。修后真实查看默认、最大展开及结果图，上层物品完整进入画面。每个实际物品的渲染顶点检查均位于对应物理包围盒内，记录见 visual-box-check.json。

纯模型与输出核对：使用另一套“至少一个轴分离”判据统计相交对、八角点变换核对旋转后边长；创建体积只占 1.5% 但任何允许直角朝向都过长的物品，明确未放下。还核对 160 件上限的实际 Node 装箱耗时，记录不称浏览器 FPS。JSON 自定义箱宽与数量编辑后回读一致；无效数量拒绝且原文档不变；移动实物清除其勾选。CSV 在 Python 标准读取器中核对 13 件完整清单与未放下标记，所有最终 PNG 完整解码。

结果图：packing-map.png 与 result-map.png 由网页实际 Artwork.sheet() 生成，分别展示默认排布与加礼物后的未放下/超重。overlap-plan.png 是实际主动制造重叠后的高度切片，使用红色与斜线，不只靠颜色。三维 default/action/result/overlap PNG 执行的是最终同源着色器、网格和参数。

范围：启发式寻找轴对齐包围盒位置，既不宣称最优，也不模拟软物压缩或承托。透明箱壁仅为了看清内空间，装饰外壳不是结构/制造模型。不引用航空公司规则。默认图中的物品为原创示例尺寸，用户需要量取自己的东西。

共同资源：Atelier3D 1.0.1 提供三维绘制层，Noto Sans CJK SC 提供中文排版许可资源；具体几何、装箱启发式、输入/编辑/检测/导出和完整工作流为本次制作。不是盲测，不以测试数量等同质量。

尚未完成：DOM/CSS 浏览器实排、真实鼠标/键盘/触屏、首次本地断网双击、各设备字体/WebGL兼容性以及下载对话框验收。原生场景不是网页截图。
