# 新哥特式塔楼城市 · 可漫游 3D 场景（任务正文 v1）

单个 HTML 文件的 3D 场景：以真实比例（1 单位 = 1 米）程序化生成一座建在礁岩上的新哥特式塔楼城市，
四面环海，可以自动巡航也可以第一人称漫游。所有几何体、材质、天空、海浪与火焰均由代码生成，
除 Three.js r160（CDN）外没有其他外部资源。

## 打开方式

直接双击 `index.html`，需要联网加载 Three.js（jsDelivr 主源，失败自动回退 unpkg）。

## 场景构成

- **海面**：四组 Gerstner 波叠加（波长 62 / 31 / 17 / 7.5 m），顶点着色器位移并解析求法线，
  片元着色器按菲涅耳混合深浅水色，加太阳高光与碎光带，远处按距离淡入雾色。
- **礁岩**：半径 268–292 m 的岩基 + 一层台地，海平面 y = 0。
- **城市**：默认 46 座塔（12–72 可调），间距 46 m 呈错列街区。核心区塔高 98–172 m、基座更宽，
  边缘区 34–98 m；主轴大街与横向大道留出，中央是圆形广场与喷泉。
- **哥特构件**（全部程序化）：四段收分塔身 + 腰线、八角攒尖顶、四角小尖塔、女儿墙尖柱、
  裙房尖拱门廊、飞扶壁、玫瑰窗（双环 + 八辐条 + 内层玻璃）。
- **窗与街灯**：InstancedMesh 批量渲染，夜间按 `emissiveIntensity` 点亮，街灯配灯杆。
- **火焰**：高塔顶部的火盆，每处 130 个加色混合粒子，GPU 端按生命周期上升、摇曳、变色。
- **海雾**：900 个半透明 Points 缓慢漂移。

## 相机

| 模式 | 操作 |
|---|---|
| 自动巡航 | 沿 CatmullRom 闭合曲线绕城一周并轻微起伏；滚轮调整航高，拖拽微调视角 |
| 自由漫游 | WASD / 方向键移动，拖拽转头，空格上升、X 下降，Shift 加速，滚轮调速；闲置 14 秒自动回到巡航 |

## 面板

时刻（0–24 小时连续调节，联动天空、太阳、月亮、雾、环境光、海面高光与窗火）、海浪强度、
火焰粒子密度、塔楼数量（防抖重建）、窗火与街灯、飞扶壁与尖顶细节、阴影、画质（低 / 中 / 高，
调整像素比、海面网格、窗与雾的实例数）、以及『待确认』清单开关。

## 待确认

按任务正文要求，凡涉及取舍或未做的部分都在页面内的「待确认」面板中列出，包括：CDN 版本锁定、
真实比例的定义、飞扶壁与玫瑰窗为近似几何、海面未做真实反射、火焰与海雾为无贴图 GPU 粒子。

## 性能处理

- 上千个小构件按材质合并为单个 BufferGeometry（自实现 `mergeByMaterial`），draw call 控制在 10 个以内。
- 窗、街灯用 InstancedMesh；高画质下才开启全部窗。
- 阴影默认关闭，可在面板开启（开启后阴影贴图 2048²）。

## 已知边界

- 未使用 `examples/jsm` 的控制器、后处理与几何工具，相机与合并逻辑均为自实现。
- 没有真实反射、SSR 或体积雾；夜空的星点是基于方向量化的伪随机，不是真实星表。
- 塔楼布局是规则网格加随机扰动，不是真实的城市路网。

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

- 实验 ID：`neo-gothic-tower-city--minimax-m3-1-flash-preview-max-r01`
- 模型：MiniMax M3.1 Flash Preview；推理档位：max
- 类型：single-html；预览：static；网络：required
- [完整原始输入快照](prompt.md) · [主题与其他版本](../../../../topic.html?id=neo-gothic-tower-city)
- 输入记录：用户指令、覆盖范围确认与任务正文 v1 原文均已完整留存，无图片、附件或历史上下文。
- 工具：Claude Code（当前会话）。模型 MiniMax M3.1 Flash Preview，推理档位 max，单会话直接执行，未委派子代理。任务正文要求遇到缺漏先标示『待确认』再继续，页面的「待确认」面板按此保留（可用右下开关显示）。Three.js 走 CDN，需要联网。
- 运行方式：浏览器直接打开本目录入口；CDN/外部素材需要联网。
- [3D 场景入口](../../../../demos/neo-gothic-tower-city/runs/minimax-m3-1-flash-preview-max-r01/index.html)

### 部署适配记录

- 性能：城市由上千个小构件组成，改为按材质合并几何体（自实现 mergeByMaterial），把 draw call 从数千级降到 10 个以内；窗与街灯用 InstancedMesh。
- 依赖：任务正文允许自行决定摄像机移动方式，这里未使用 examples/jsm 的 OrbitControls，而是自行实现拖拽转向 + WASD 位移 + 闲置自动回到巡航，避免额外 CDN 模块。
- 归档来源：F:\dev\ai-coding-demo-test（model-test-base 分支）中的 demos/neo-gothic-tower-city/runs/minimax-m3-1-flash-preview-max-r01；保留该测试轮号。
- 2026-10-12: 通过本地 HTTP 预览补拍代表性桌面截图 preview-2026-10-12.png；实验源码和原始输入未修改。
- 维护者于 2026-10-22 按 v3 对本轮桌面、手机及补充状态逐图重评并绑定 captures 证据；旧截图和 v2 评分见 catalog/score-reviews/2026-10-21-v3-source.json。未重跑模型或改写实验源码，截图不证明完整功能、算法、手势或性能。
<!-- archive:end -->
