状态:草稿 (2026-10-31)。 建筑物的数据是通过查阅下方“出处”中的资料确认的,资料之间存在差异的地方则记录为范围。视频和图表中的 3D 模型为简化模型,模型计算出的数值已单独标注为“模型计算”(并非实际建筑物的测量值)。 系列:“通过 3D 看建筑结构”第 1 篇。
目录
罗马万神殿是至今仍保留着完整屋顶的古代建筑。其穹顶内部直径约 43 米,且为全无钢筋的混凝土结构。在无钢筋混凝土穹顶中,它至今仍被认为是世界最大的(Masi 等,2018)。本文是由“3D 图形 + 简短解说”形式的视频制作成果,旨在探讨该穹顶不会倒塌的原因。
视频
根据网站的视频规则(无声音,每段 30 秒以内),将四个章节分别制作成视频片段。台词为屏幕下方的字幕。
1. 这是一座什么样的建筑
| 项目 | 数值 | 出处 |
|---|---|---|
| 建造时期 | 哈德良皇帝时期(在位 117–138 年)。一般认为在公元 118 年至 128 年左右,或更晚 | Masi 等 2018, Plunkett 2016 |
| 穹顶内部直径 | 约 43.3 米。根据测量为 43.3–44.08 米 | Masi 等 2018(引用 de Fine Licht 1968), Moore 2002, Plunkett 2016 |
| 高度 | 几乎等于内部直径。比例上,直径 43.3 米的球体正好可以内切并接触地面 | Masi 等 2018, Moore 2002 |
| 钢筋 | 无。未包含钢铁或其他加固材料 | Moore 2002, Masi 等 2018 |
| 圆柱墙厚度 | 约 6 米(柱子部分约 20 英尺) | Moore 2002 |
| 穹顶厚度 | 底部约 5.9 米 → 顶部约 1.5 米。其他资料整理为底部 4 米 → 眼洞处 1 米 | Masi 等 2018, Plunkett 2016 |
| 眼洞直径 | 约 9 米(约 30 英尺)。也有资料记录为 27 英尺(约 8.2 米) | Moore 2002, PBS Building Big |
| 格子天花板 | 5 层,每层 28 格,共计 140 格 | Moore 2002, Masi 等 2018 |
| 阶梯式圆环 | 穹顶底部外部有 7 层 | Moore 2002 |
它并不是一个精确的球形。根据精密测量,穹顶和圆柱体与完美的半球形和圆柱体略有偏差(Plunkett 2016)。视频和图表以直径 43.3 米的球体为基准进行了简化。
2. 混凝土抗压不抗拉
石头和混凝土能够很好地承受下压的力(压力),但对于拉扯的力(拉力)则很容易开裂。根据 Masi 等人(2018)在穹顶分析中使用的数值,混凝土抗压强度约为 5 MPa,而穹顶混凝土的抗拉强度设定为 0.08 MPa。两者相差 60 倍以上(这是从实验文献中选取的 分析用假设值)。
因此,万神殿的设计可以从两个方向来解读。一个是 直接减轻重量,另一个是 使剩余的力量转化为向下的压力。
3. 四个减重设计
- 厚度。 穹顶底部较厚,越往上越薄。从底部的约 5.9 米到顶部的约 1.5 米(Masi 等 2018)。
- 骨料。 罗马混凝土是在使用火山灰(Pozzolana)的砂浆中混合碎石(骨料)制成的(Masi 等 2018)。基础使用了较重的凝灰岩(Travertine),而穹顶最高处则使用了较轻的凝灰岩(Tuff)和浮石(Pumice)(Moore 2002)。分析论文中使用的各区域密度分别为:基础 2,000、圆柱墙 1,750、穹顶下部 1,600、中部 1,500、顶部 1,350 kg/m³(Masi 等 2018 表 1,明确表示采用了 Mark & Hutchinson 1986 的数值)。不过,密度在哪个高度发生变化以及使用了几种材料,目前尚未最终确定(Plunkett 2016)。
- 格子天花板。 穹顶内部被挖空为 5 层 × 28 格。这既是装饰,也是减轻重量的结构(Moore 2002, Masi 等 2018)。
- 眼洞。 顶部中心留出了直径约 9 米的空洞。它既是采光的窗户,也是消除了穹顶最高处重量的位置。
越往上越轻的原因在于,越是高处的重量,越会增大穹顶底部向外推的力(推力)。较轻的顶部混凝土减少了支撑墙所承受的推力,使穹顶更加稳定(Plunkett 2016)。
模型计算。 在视频的简化模型中,我们将各项设计逐一恢复,并比较了“穹顶起始高度以上”的质量(计算脚本详见下文的“如何制作”)。
| 恢复的设计 | 模型穹顶质量 |
|---|---|
| (保持模型原样) | 基准 |
| 将骨料一路延伸至顶部,保持与底部相同的 1,600 kg/m³ | +2.7% |
| 如果填满格子天花板 | +6.7% |
| 如果用相同厚度封住眼洞 | +0.5% |
| 如果将台阶上方外表皮一直延伸至顶部,保持 5.9 米厚度 | 体积 +34% |
由于此表会根据模型区域边界和格子深度的设定而产生巨大变化,因此请仅将其作为规模的参考。这并非实际建筑物的质量比较。就质量而言,“厚度”影响最大,眼洞影响较小,但眼洞和顶部骨料位于 最高处,因此其减少推力的效果大于质量比例。
4. 受力流向:产生裂缝的穹顶如何支撑
纵向裂缝。 厚度均匀的半球形穹顶由于自身重量,底部周边会倾向于向外扩张(周向拉伸)。理论上其分界线约为 52° 高度(Masi 等 2018 引用 Flügge)。万神殿穹顶内部存在从下向上延伸的纵向裂缝,在 2030 年代的调查中绘制出了 14 条。裂缝停止于约 54° 高度(Mark & Hutchinson 1986, Moore 2002 的整理)至约 57° 高度(Masi 等 2018)之间。由于顶部在周向也处于受压区域,因此裂缝无法继续扩展。
多道拱券。 出现裂缝的穹顶不再是一个整体外壳,而是像 多道楔形拱券一样工作,从圆柱墙上方靠向顶部。拱券依靠下压的力站立。Mark & Hutchinson(1986)持这一观点,而 Masi 等人(2018)的三维分析也证实了出现裂缝的穹顶正是这样运作的。Masi 等人认为裂缝的主要原因是早期混凝土的收缩和自重。
眼洞压缩环。 拱券相互抵触的位置是眼洞的周边。由于该环承受着拱券来自四面八方的推力,因此该环承受着压力。万神殿眼洞周边有砌砖叠砌的边框和青铜环(Moore 2002)。
阶梯式圆环。 对于穹顶底部外部的 7 层阶梯,学术界有不同的解释。
- Mark & Hutchinson(1986):如果是不存在裂缝的整体穹顶,阶梯并没有太大帮助;但对于出现裂缝、像拱券一样运作的穹顶而言,它成为了向下压住拱券腰部的重量,起到了扶壁的作用(Moore 2002, Masi 等 2018 的整理)。
- Brune(2010, Masi 等 2018 的整理):阶梯减少了底部周边的拉伸。据估计该减少量约为 58.5%。
- Masi 等(2018):这两种解释相互补充。仅从自重来看,有阶梯时的最大周边拉伸降低了约 27.1%,而在出现裂缝后,它为拱券机制增加了重量。
- 设置阶梯的真正原因是为了施工便利(用低矮的墙壁代替陡峭的面),还是出于结构考量,目前仍然是一个开放式问题(Plunkett 2016)。
5. 总结
万神殿穹顶通过几何形状避开了材料的弱点(抗拉力不足)。通过设计成越往上越薄、越轻来减少推力,即使出现裂缝,剩余的结构也能像拱券一样仅靠压力支撑。眼洞周边的圆环承接了这些拱券,厚实的圆柱墙则将这些力传递到基础。
这个视频是如何制作的
工具。 使用 Blender 5.2.3 LTS(官方发行版)、Blender 的 Python API、Eevee 渲染器,视频剪辑使用 ffmpeg,字幕文字通过 Python(Pillow)绘制。字体采用 Blender 内置的 Noto Sans CJK(SIL Open Font License)。没有下载任何 3D 素材,全部通过脚本制作。
程序化建模。 将建筑物的半个剖面定义为(半径,高度)多边形,并绕纵轴旋转以生成立体图形。由于每个密度区域的剖面都按高度切割并分别旋转,因此如果移除前半部分,切面将显示出各区域的颜色。
def spin_profile(name, poly, a0, a1, seg=96, mat=None):
"""(r, z) 다각형을 a0→a1 (라디안) 만큼 돌린 닫힌 회전체."""
bm = bmesh.new()
verts = [bm.verts.new((r * cos(a0), r * sin(a0), z)) for r, z in poly]
face = bm.faces.new(verts)
bmesh.ops.spin(bm, geom=[face] + verts + list(face.edges), cent=(0, 0, 0),
axis=(0, 0, 1), angle=a1 - a0, steps=seg, use_duplicate=False)
bmesh.ops.recalc_face_normals(bm, faces=bm.faces)
...
# 앞쪽 반(π..2π)과 뒤쪽 반(0..π)을 따로 만든다. 단면 보기는 앞쪽 반을 들어 올려 치우는 것.
for half, (a0, a1) in {"back": (0, pi), "front": (pi, 2 * pi)}.items():
for name, poly, mat in pieces: # 기초·원통 벽·돔 아래·가운데·위·오큘러스 고리·계단
ob = spin_profile(f"{name}_{half}", poly, a0, a1, mat=mat)
140 个格子天花板是通过为每个格子创建一个六面体并通过布尔运算(差集)挖出来的,挖出的面被赋予了单独的材质,以便在第 2 章中发出蓝光。裂缝、拱券和箭头通过将曲线的“终点比例”作为关键帧从 0 更改为 1 来实现生长动画。摄像机、显示/隐藏和背景颜色全部通过一个时间轴(以秒为单位)设置了关键帧。
渲染。 1920×1080,30 fps,3,000 帧(100 秒)使用 Eevee(64 采样,开启光线追踪)在一台笔记本电脑(Apple 芯片 GPU)上渲染完成。每帧中位时间 0.86 秒(最慢的一帧 1.43 秒),包括保存等在内的总耗时为 45 分钟 33 秒。生成场景的脚本本身在 4 秒内即可完成(包含布尔运算)。
字幕与剪辑。 本来计划通过语音合成(TTS)加入旁白,但这一版本仅制作了字幕。该网站的视频规则也不接收音轨。字幕、姓名牌和图例在每一帧中用透明层叠加后,通过 ffmpeg 打包为 H.264,针对网站使用场景,按章节进行了剪切,分辨率缩减至 1280×720,并清除了编码器信息等元数据。图例颜色并非来自材质颜色,而是直接从渲染的截面中提取的(因为色彩管理的原因,屏幕色彩与材质值有所不同)。
出处
- Masi, F., Stefanou, I., Vannucci, P. (2018). On the origin of the cracks in the dome of the Pantheon in Rome. Engineering Failure Analysis 92, 587–596. doi:10.1016/j.engfailanal.2018.06.013. 作者手稿公开版本:https://hal.science/hal-01719997
- Plunkett, J. W. (2016). The Roman Pantheon: scale-model collapse analyses. 科学硕士学位论文,MIT建筑学系(导师 J. Ochsendorf)。http://hdl.handle.net/1721.1/107867
- Moore, D. (2002). The Pantheon: Crown Jewel of Roman Concrete. CONSTRUCTOR, 2002年9月号, 22–26页. 基于作者的书籍 The Roman Pantheon: The Triumph of Concrete 撰写的文章。
- Mark, R., Hutchinson, P. (1986). On the Structure of the Roman Pantheon. The Art Bulletin 68(1), 24–34. doi:10.2307/3050861. 原文未能查阅,本文相关内容已通过 Masi 等人 (2018) 及 Moore (2002) 的整理进行核实。
- PBS, Building Big: Pantheon. https://www.pbs.org/wgbh/buildingbig/wonder/structure/pantheon.html (眼洞 27 ft)