制作与检验记录 / 2026-10-12
============================

任务：经营产品设计与电商工作室的用户需要本地 3D 产品摄影和海报工具，能接入自有产品与标识，摆光取景并产出精细成片，保存摄影设置后快速换品和生成不同尺寸与视角。
采用指定 imagination-developer 技能，读取 spatial-3d、local-delivery、delivery-standard、state-and-content 参考；浏览器读取 Browser skill 并使用其允许的 runtime。未读旧作品或其他代理实现。
所有文件、制作依赖、fixture 与检验成果只位于本目录。未改根 package.json、正式 public/src/skill，未执行 Git 或远端写入。

实现
固定 Three.js 0.170.0、官方 OrbitControls / TransformControls / GLTFLoader / OBJLoader / MTLLoader / STLLoader / RoundedBoxGeometry / RoomEnvironment。用 esbuild 0.24.2 制作时打包，fflate 0.8.2 生成 ZIP；最终 index.html 内嵌所有运行代码，约 699 KB。用户无需执行制作脚本或安装依赖。
默认相机与精华瓶为本次独立原创过程几何，不是假静态封面。相机有 290 个可选表面，以结构、材质和识别细节表达真实物品。相机镜头采用曲面玻璃，金属/橡胶/皮革材质不同；Three.js 负责实际物理材质、环境反射、光源、阴影和拾取。
模型输入先解析，成功后替换；所有资产以 data URL 保存，不把 blob 地址写入摄影方案。外部 GLTF/MTL 资源按用户多选文件解析，无远端资源抓取。无效输入保留当前作品。
表面材质独立克隆，避免修改一处意外染色其他部件。模型归一和显示尺寸同步。灯光、镜头、海报与导出由同一份有效状态驱动。
单图与批量实际按指定像素重新渲染；导出隐藏编辑轮廓/操纵轴，最终海报用同一版式绘制到图片中。批量结束恢复镜头。方案包含模型资源、图片和全部摄影设置。
历史以项目快照管理，精确键盘输入离开字段也会提交；加载和出图保护编辑状态；异步模型读取以代次避免过期完成覆盖后来选择。

实际浏览器操作证据
HTTP 预览根服务 127.0.0.1:4176 返回 200。实际正确页面地址是 /meta-skill-rebuild/10-product-studio/index.html。
1. 最终成品真实首屏：WebGL 交互相机出现；材质、滚花、玻璃、铭文可见；页面没有额外整页滚动，出图按钮保持可见。preview.png 为真实浏览器截图。
2. 通过文件选择器多选 studio-mug.obj 和 studio-mug.mtl。陶瓷杯有独立杯壁与杯把，保留开口、真实壁厚和 UV。界面报告自有模型两个表面。
3. 在海报页通过选择器导入 atelier-mark.svg，修改标题/副标题与标识坐标。SVG 实际出现在图片里。
4. 点击生成，实际产生 2400×3000 PNG；页面自然尺寸与文件 IHDR 一致。PNG 内容从实际结果图 src 分段读取，保存到 fixtures/browser-mug-2400x3000.png；独立解码确认非空并肉眼查看。
5. 保存摄影方案在页面生成 JSON，包含两个模型源资源和 SVG 标识。其实际 textarea 内容分段读取写入 fixtures/browser-saved-mug.json。切换到内置瓶，再通过选择器打开这个实际文件，恢复 studio-mug、海报文字、标识与出图规格。最终副本另一次恢复也确认两个表面和 DAILY / CERAMIC 文案。
6. 通过选择器替换独立 studio-lamp.glb。台灯有底座、金属杆、罩、扩散面、开关五部件。沿用摄影设置与标识，改标题并选择 16:9，实际生成 3840×2160 PNG；留 fixtures/browser-lamp-3840x2160.png。
7. 精确修改产品位置 X 为 0.4，离开字段后撤销，实际恢复 X=0，状态显示已撤销。
8. 相机按 800×1000 实际渲染 ¾、正面、背面、俯视。页面显示四张不同自然尺寸图，并产生 ZIP。实际 ZIP 链接 data URL 分段读取保存为 fixtures/browser-four-views.zip，独立解包有四个 PNG 与完整摄影参数 JSON，四个 PNG 的 SHA256 各不相同。
9. 实际生成 1024×1280 透明 PNG，保存到 fixtures/browser-transparent-1024x1280.png。独立完整 PNG 滤波解码确认角落 alpha=0，仍有大量不透明产品像素。
10. 通过选择器打开 version=99 的非法 JSON，实际反馈恢复失败，当前 MORI C-01 未改变；其后有效保存文件实际恢复成功。
11. sample-product.png 是最终默认相机的实际 2400×3000 成片，非预制图片。首屏与真实导出都经过画面检查。

模型 / 控制器 / 成果回归
regression.cjs 使用官方 OBJ 和 GLTF 加载器解析独立 fixture；核对陶瓷杯高度、两个几何部件以及杯口内外壁，GLB 头长度与五部件。
独立检查替换产品保留摄影/版式规则而清掉旧模型资源、产品变换和材质编辑；模型资源序列化字节一致；非法版本、过大尺寸、零缩放、重合镜头/目标、缺模型资源被拒；失败不改已有数据；撤销/重做和新编辑分支；异步读取代次。
对实际浏览器 PNG 用 Node zlib 完整解码滤波后的像素，核对实际尺寸、上千种颜色、透明 alpha 与实体像素。ZIP 独立解包，核对全部图像尺寸及不同视角真实像素差异。检查实际保存方案含模型与 SVG。
命令 node regression.cjs，40 项通过。该命令是制作检验，最终用户无需运行。

证据边界
实际操作只经已批准 Browser runtime 在本地 HTTP 执行，未使用另一个浏览器控制机制，未清理他人标签。
会话安全策略明确禁止 file://，本次没有重试或换手段绕过。离线 file 双击冷启动准确标为未验证；「所有运行资源内嵌、无运行时安装或服务器依赖」是交付结构事实，不冒充已做断网实验。
浏览器下载事件工具未返回可核实落盘位置。本次检查的是工具真实生成的 PNG / ZIP / JSON，均由页面实际输出读取后保存到本目录，不能声称已验证浏览器默认下载目录。
GLTF 外部资源、STL、图片背景、表面图片贴图入口已有实现；本次实际浏览器输入覆盖 OBJ+MTL、GLB 与 SVG 标识，未把其余格式的源码支持写成实际操作已验收。
手机触屏、Safari、WebGL 上下文丢失和显卡极限尺寸未做真实设备测试。实时 PBR 无离线路径追踪、景深和颜色校样。

交付
index.html 是唯一运行入口；readme.txt 是使用说明；prompt.txt 是完整独立制作指令；metadata.json 如实声明名称、用途、能力、格式、边界和许可证。
3D产品摄影与海报制作.zip 包含入口、说明/元数据、许可、实际成片/首屏，以及合理自有模型/标识和可恢复方案 fixture。制作依赖未进入便携包。
