# 体素微缩建筑工地沙盘（DeepSeek-V4.1-Flash-0731 · high · r01）

单文件网页，直接打开 [index.html](index.html) 即可运行。**需要联网**：通过 import map 从 unpkg 加载 Three.js r160 与 `BufferGeometryUtils`。没有后端、没有构建步骤。

## 原始提示词

见 [完整原始输入](prompt.md)；任务正文与 [v1 任务正文](../../prompts/v1/prompt.md) 逐字一致。

## 实现要点

- **尺度**：1 体素 = 0.02 m。工作桌面 2.6 × 1.8 m；沙盘占地 1.76 × 1.16 m，共 13,089 个静态体素，全部落在桌面上。挖掘机机身 0.28 m，塔吊 1.05 m，板房层高 0.17 m，工人 0.09 m。
- **分区**：左后钢筋加工棚、中后在建楼房基座（钢筋柱 + 脚手架）、右后物料堆放、左中与中中基坑开挖（挖掘机环绕）、右中塔吊、左前新增环保设施区、中前渣土堆与装卸点、右前临时板房与门卫。
- **新增场景**（题面末尾「添加新场景进去」）：场地西南角的三级沉淀池 + 车辆洗车槽，沉淀池用隔墙分三级并带水面，洗车槽为下沉混凝土槽并架设喷淋管。
- **性能**：13,089 个静态体素合并为**一个 InstancedMesh**（1 次 draw call）；机械零件用 `mergeGeometries` 按部件合并，每台机械只有数个网格；56 名工人用一个 InstancedMesh + 每帧矩阵更新驱动动作。设备像素比上限 1.5，阴影贴图 2048，4 盏探照灯只在夜间开启。
- **不穿模的约束方式**：所有静态元素按米制矩形分区摆放并做重叠检查；挖掘机机身完全落在基坑之外，只让铲斗探入坑内作业；渣土车的整条往返车道位于基坑以东，不穿越坑体；塔吊吊臂以「朝向场地中心」为基准摆动（摆动幅度 0.42~0.5 rad），吊钩最低高度 0.28 m 高于场内最高构筑物 0.24 m，因此吊物既不越出沙盘也不穿过建筑。
- **昼夜循环**：太阳按时间沿弧线升落，天色在黎明 / 正午 / 黄昏 / 夜晚之间连续插值；夜间探照灯与板房窗户亮起；暴雨时照明亮度提升（题面要求）。
- **暴雨**：空格切换。雨滴粒子（自定义着色器）、天色压暗、地面湿滑——所有体素与机械材质在雨中降低粗糙度并提高金属度，灯光在表面拖出高光。
- **交互**：拖拽环视、滚轮缩放、闲置 20 秒后自动缓慢环绕；点击桌面前方的三个实体旋钮分别切换「设备运行速度 / 昼夜循环 / 施工尘土」，旋钮指示角随设置转动，右上角面板同步显示当前值。

## 待确认项

任务正文内部存在一处矛盾：既要求「Three.js r160 CDN」，又要求「不引用任何外部资源」。本次采用的理解是——**库本身从 CDN 加载，几何体、材质与贴图全部由代码生成**，没有引用任何外部图片、模型或字体文件。这一点无法从正文本身判定，标记为待确认。若必须完全离线，需要把 Three.js 内联进文件。

## 验收自测

无头 Chromium + SwiftShader 软件 WebGL：

| 检查项 | 实测 |
|---|---|
| 无脚本错误 | `pageerror` 与 console error 均为空 |
| 场景规模 | 静态体素 13,089；21~24 FPS（软件渲染） |
| 自动环视 | 间隔 4 秒两次截图不同 |
| 拖拽环视 / 滚轮缩放 | 均改变画面 |
| 三个旋钮可点击并生效 | 速度 1.0×→2.0×；昼夜 开→关；尘土 中→高 |
| 空格触发暴雨 | 天气变为「暴雨」，画面改变 |
| 日夜循环四套天色齐全 | 依次观测到 正午 → 黄昏 → 夜晚 → 黎明，26 次采样画面两两不同 |
| 390px 无水平溢出 | 溢出 0px |

帧率为软件渲染（SwiftShader）下的数值，**不能作为「稳定 60FPS」的结论**；该目标需要在真实 GPU 上验证。

## 运行与复盘

- 运行方式：联网状态下用浏览器直接打开本目录 `index.html`；或使用根目录 `npm run preview` 后的静态托管地址。
- 复盘：首轮生成后经多轮自查修正，均为首轮内部问题，不属于部署适配，`changes` 为空。主要修正：① 静态体素全黑——`vertexColors: true` 会让着色器去读几何体的 `color` 属性，而 InstancedMesh 的逐实例颜色需要几何体自带（白色）颜色属性才能相乘生效；② 场景雾密度误设为 0.42，2 米外即有 50% 雾，整体糊成褐色；③ 分区初版有重叠，且道路半径超出场地，重排为按米制矩形分区的布局；④ 塔吊吊臂会扫出沙盘边界，改为以场地中心为基准的内向摆动并缩短臂长；⑤ 湿滑效果原先只改了一个未被任何网格使用的材质，已改为遍历所有体素质感材质；⑥ 围挡原高 0.25 m（约为工人身高的 2.8 倍），降到 0.18 m。此外还加粗了雨滴并压暗雨天天色。

<!-- archive:start -->
## 当前归档信息（自动生成）

- 实验 ID：`voxel-construction-site--deepseek-v4-1-flash-0731-high-r01`
- 模型：DeepSeek-V4.1-Flash-0731；推理档位：high
- 类型：single-html；预览：static；网络：required
- [完整原始输入快照](prompt.md) · [主题与其他版本](../../../../topic.html?id=voxel-construction-site)
- 输入记录：本次批量执行的完整指令 + 主题任务正文；正文与 demos/voxel-construction-site/prompts/v1/prompt.md 逐字一致。历史来源为 demos/voxel-construction-site/runs/gpt-6-astra-xhigh-r01/prompt.md，当时围绕任务正文的模型与归档要求未留存。
- 工具：Claude Code。模型名称由用户指定为 DeepSeek-V4.1-Flash-0731；会话内模型标识为 deepseek-flash[1m]。单会话直接执行，未委派子代理。Windows 11 + Node 22.16.0。验收在无头 Chromium 的 SwiftShader（软件 WebGL）下完成，所记帧率为软件渲染值，不足以代表真机 60FPS 目标。
- 运行方式：浏览器直接打开本目录入口；CDN/外部素材需要联网。
- 费用记录：Deepseek 批次合计 2.71 CNY（11 个案例；批次 deepseek-v4-1-flash-0731-high-2026-10-13；未记录单案例费用）
- [主页面](../../../../demos/voxel-construction-site/runs/deepseek-v4-1-flash-0731-high-r01/index.html)

### 部署适配记录

- 迁移来源：F:\dev\ai-coding-demo-test（model-test-base 工作区）/demos/voxel-construction-site/runs/deepseek-v4-1-flash-high-r01；保留原测试轮次 r01 与完整输入快照。
- 迁移验收：通过本地 HTTP 实际入口补拍 desktop screenshot.png；390px 页面无横向溢出。静态入口也通过 file:// 直接打开检查。
- 模型与实验目录标识按用户确认更新为 DeepSeek-V4.1-Flash-0731；历史输入、评分、产物与迁移来源保留。
- 维护者于 2026-10-22 按 v3 对本轮桌面、手机及补充状态逐图重评并绑定 captures 证据；旧截图和 v2 评分见 catalog/score-reviews/2026-10-21-v3-source.json。未重跑模型或改写实验源码，截图不证明完整功能、算法、手势或性能。
<!-- archive:end -->
