# 复兴号两节车：三维构造观察

打开 [列车交互页](../../../interactive/bridge-assembly/train.html)，可旋转、平移、缩放、按组隐藏、单件隐藏或仅看所选、拆分复位，并保存当前画面 PNG。模型在点击“打开三维列车”后才载入。

## 模型与文件

- 原 `cr400af_two_car.glb`：从导入案例“公路桥与复兴号”原样保留于本地，36,794,256 字节，未重建、改尺寸或改网格。网站通过下面的无损压缩分块传输，不直接分发这个大文件。
- SHA-256：`fc79245723f38d7e56ed99e8b132492c964e7f9dcdf4beecfba25f4f9c3ca637`。
- `original/train_hero.png`：原案例的 Blender 渲染预览；它与网页实时画面的光照不同。
- GLB 包含 2552 个网格、10 个功能分组、1,027,338 个三角面和 2 张嵌入纹理；没有外部贴图依赖，也没有动画片段或骨骼。
- 原模型的逐顶点检查见 [train-source-check.json](records/train-source-check.json)，24 项检查通过。页面的浏览器检查见 [train-browser-check.json](records/train-browser-check.json)。

网站载入 [models/train-stream.json](models/train-stream.json)，依次下载 4 个 `cr400af_two_car.glb.gz.part*.bin` 文件。前三块各 3 MiB，最后一块 2,787,083 字节，合计 12,224,267 字节（约 12.2 MB），为原大小的 33.22%。它们按顺序拼成 gzip，在浏览器解压为原来的 36,794,256 字节 GLB，再交给同一个 Three.js 加载器。

这是无损传输压缩，没有简化三角面、降低纹理质量或改变比例。清单记录各块大小、各块 SHA-256、整体压缩数据 SHA-256 及解压后原件 SHA-256。浏览器有 `crypto.subtle` 时执行全部哈希校验；HTTPS 和 localhost 的安全上下文可使用此接口，本次已在 localhost 实测。其他连接若没有该接口，只检查字节数并解析，不能称为已完成浏览器哈希验证。加载状态会显示下载百分比，失败后可重新点击载入。浏览器需要支持 `DecompressionStream('gzip')`。

分块加载与四视角的最后复核见 [train-stream-check.json](records/train-stream-check.json)。原先几何和交互的检查继续适用，因为解压后的 SHA-256 与原件一致。

原始 Blender 和建模程序仍保留在原案例中；本目录是网页展示资产。`train.html`、`train.js` 和 `train.css` 位于教材的 `interactive/bridge-assembly/`，复用该目录已随教材发布的 Three.js、OrbitControls 和 GLTFLoader。

## 哪些尺寸有依据

| 尺寸 | 本模型采用值 | 说明 |
|---|---:|---|
| 头车长度 | 27.91 m | 头车车体外壳 |
| 中间车体长度 | 25.00 m | 一节中间车 |
| 两车间隙 | 0.65 m | 本案例的组合假设 |
| 两车车体组合长度 | 53.56 m | 27.91 + 0.65 + 25.00 |
| 车体最大宽度 | 3.36 m | 不包括门把手等凸出附件 |
| 轨面到车顶的高度 | 4.05 m | 不包括升起的受电弓 |
| 轨距 | 1.435 m | 两根钢轨轨头内侧面之间 |

车体基本尺寸依据曹建等《工程力学》2021 年第 38 卷第 4 期的 [论文第 1.1 节、印刷页 151](https://pubs.cstam.org.cn/em/article/Y2021/I4/150)，并参考 [中车四方产品资料](https://www.crrcgc.cc/sfgf/2015-11/04/article_E7691BD1DADD4C799E29B682C86DADD3.html)。外形为原版银灰/红色 CR400AF 家族的展示模型，只包含两节车，不是完整运营编组。

上述值应与不同包围范围分开：模型车壳自身的竖向厚度为 3.55 m，不能写成“轨面以上车高”；升弓接触条顶约 6.0425 m；包括把手等附件后最大宽度约 3.49177 m。含轨道环境的整个 GLB 长 71 m，也不能当作这两节车的长度。

车头曲面、门窗位置由照片拟合；转向架、设备、内装和受电弓为展示级近似。轮径 0.92 m、转向架轴距 2.5 m、转向架中心距 17.8 m 是原建模程序的假设，未依据厂家完整装配图复核。模型用于辨认构件与空间关系，不用作制造或检修尺寸依据。

## 分组与显隐

| 原分组 | 页面中文名称 | 网格数 | 默认显示 |
|---|---|---:|---|
| `01_Body` | 车体与鼻锥 | 5 | 是 |
| `02_Livery` | 涂装与标识 | 41 | 是 |
| `03_Glass` | 风挡、车窗与灯具 | 131 | 是 |
| `04_Doors` | 车门与密封 | 72 | 是 |
| `05_Bogies` | 转向架与轮对 | 380 | 是 |
| `06_Underfloor` | 车下设备 | 460 | 是 |
| `07_Roof` | 受电弓与车顶设备 | 123 | 是 |
| `08_Interior` | 座椅与驾驶台（示意） | 538 | 是；外壳会遮挡 |
| `09_Gangway` | 车间连接 | 16 | 是 |
| `10_Track` | 钢轨与轨道环境 | 786 | 否；可手动打开 |

“隐藏外壳”同时隐藏车体、涂装、门窗、车顶和车间外壳相关组，以便看到内部。单击模型可查看中文名称，也可在“按名称找构件”中搜索后选择。隐藏单件、仅看所选和分组开关都只控制当前页面显示，原 GLB 不被修改；“恢复显示”恢复当前观察范围，“全部复位”回到两车全貌。

## 四个观察范围

| 按钮 | 实际取景与显示规则 |
|---|---|
| 两节车全貌 | 默认显示轨道以外的 1766 个构件，按列车本体取景，不让 71 m 的轨道扩大镜头范围。 |
| 靠近车头 | 显示头车 `C1_*` 和前方转向架 `Bogie_00_*`；镜头对准实际车头、风挡、驾驶室侧窗和车灯的包围范围。后方车体延续到画面之外属于局部取景。 |
| 车轮上面有什么 | 只显示 `Bogie_00_*` 的 95 个构件，即头车前方的一副转向架。 |
| 看进车厢 | 只显示 `08_Interior` 中头车 `C1_*` 的 197 个构件，外壳移出显示后可见地板、座椅和驾驶台。 |

侧面、上方和“画面放全”均依据当前范围或当前可见部件调整镜头，允许继续自由旋转。没有显示水面、地面或额外网格平面来遮挡下方观察。

## 拆分意味着什么

拆分滑条在浏览器中给原功能分组添加展示位移，例如外壳升高、门窗侧移、车下设备移开。每次都从原始位置加位移，不累计误差；回到 0% 或“合回原位”恢复原装配位置。原始网格顶点、比例和局部变换保持不变。

当前仅显示一类功能组时（如单副转向架或头车内装），按组拆分没有可分开的层次，因此滑条暂时禁用并提示回到两车全貌。它不是装配工艺动画，不代表真实拆装方向、运行运动或允许间隙。

保存 PNG 会输出当前 WebGL 画面，不包含页面按钮。截图只用于教材观察与讨论，不能从透视图量取制造尺寸。
