数字我 Digital Me:全量入库(大文件走 Git LFS)
nginx serve /uploads direct (audio speed) / patch-nginx (push) Failing after 1m34s
@@ -0,0 +1,65 @@
|
||||
<!doctype html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta name="theme-color" content="#eee8dc" />
|
||||
<meta name="description" content="三国六场关键战役与政变的独立图文故事集,供 Digital Me 后续统一接入。" />
|
||||
<title>三国故事集|六卷历史画卷</title>
|
||||
<link rel="stylesheet" href="./styles.css" />
|
||||
</head>
|
||||
<body>
|
||||
<a class="skip-link" href="#stories">跳到故事列表</a>
|
||||
<div class="calligraphy" aria-hidden="true">
|
||||
<span>永和九年岁在癸丑暮春之初</span><span>会于会稽山阴之兰亭修禊事也</span><span>群贤毕至少长咸集此地有崇山峻岭</span><span>茂林修竹又有清流激湍映带左右</span><span>仰观宇宙之大俯察品类之盛</span><span>所以游目骋怀足以极视听之娱</span><span>夫人之相与俯仰一世或取诸怀抱</span><span>虽无丝竹管弦之盛一觞一咏</span><span>足以畅叙幽情信可乐也</span>
|
||||
</div>
|
||||
<header class="hero">
|
||||
<p>THREE KINGDOMS · ILLUSTRATED CHRONICLE</p>
|
||||
<h1><span>三国</span>故事集</h1>
|
||||
<div><b>六卷历史画卷</b><span>战役与政变 · 独立成篇 · 可直接接入</span></div>
|
||||
<a href="#stories">向下翻阅</a>
|
||||
</header>
|
||||
<main id="stories">
|
||||
<header class="section-title"><p>STORY COLLECTION</p><h2>乱世的六个切面</h2><span>每一卷均为独立静态页面,不依赖转场素材。</span></header>
|
||||
<div class="story-grid">
|
||||
<article class="story-card">
|
||||
<a href="./stories/jieting-battle/index.html" aria-label="阅读街亭之战·诸葛亮第一次北伐">
|
||||
<figure><img src="./stories/jieting-battle/assets/images/01-three-commandaries-rise.webp" alt="街亭之战·诸葛亮第一次北伐卷首画面" loading="eager" /><span>01</span></figure>
|
||||
<div><p>三国·蜀汉建兴六年/曹魏太和二年</p><h3>街亭之战·诸葛亮第一次北伐</h3><span>228年春 · 5幕</span><small>马谡舍水上山,张郃绝其汲道而大破蜀军;街亭失守使诸葛亮第一次北伐失去前进支点,最终退回汉中。</small><b>进入画卷 →</b></div>
|
||||
</a>
|
||||
</article>
|
||||
<article class="story-card">
|
||||
<a href="./stories/wuzhang-plains/index.html" aria-label="阅读五丈原之战(诸葛亮卒于军)">
|
||||
<figure><img src="./stories/wuzhang-plains/assets/images/01-cross-xie-valley.webp" alt="五丈原之战(诸葛亮卒于军)卷首画面" loading="eager" /><span>02</span></figure>
|
||||
<div><p>三国·蜀汉建兴十二年/曹魏青龙二年</p><h3>五丈原之战(诸葛亮卒于军)</h3><span>234年春至八月 · 5幕</span><small>诸葛亮据五丈原屯田久驻,司马懿奉诏坚壁拒守;两军相持百余日后诸葛亮病卒军中,蜀军整阵退还。</small><b>进入画卷 →</b></div>
|
||||
</a>
|
||||
</article>
|
||||
<article class="story-card">
|
||||
<a href="./stories/gaopingling-coup/index.html" aria-label="阅读高平陵之变">
|
||||
<figure><img src="./stories/gaopingling-coup/assets/images/01-imperial-procession-gaoping.webp" alt="高平陵之变卷首画面" loading="lazy" /><span>03</span></figure>
|
||||
<div><p>三国·曹魏正始十年(同年四月改元嘉平)</p><h3>高平陵之变</h3><span>正始十年正月甲午(249年2月5日)至正月戊戌(249年2月9日) · 5幕</span><small>司马懿趁魏帝曹芳与曹爽兄弟出城谒陵控制洛阳,迫使曹爽交权,随后诛灭曹爽集团,曹魏实权由此转入司马氏之手。</small><b>进入画卷 →</b></div>
|
||||
</a>
|
||||
</article>
|
||||
<article class="story-card">
|
||||
<a href="./stories/cao-mao-death/index.html" aria-label="阅读高贵乡公曹髦之死">
|
||||
<figure><img src="./stories/cao-mao-death/assets/images/01-a-throne-without-power.webp" alt="高贵乡公曹髦之死卷首画面" loading="lazy" /><span>04</span></figure>
|
||||
<div><p>三国·曹魏甘露五年(后改元景元)</p><h3>高贵乡公曹髦之死</h3><span>260年五月己丑 · 5幕</span><small>二十岁的魏帝曹髦不愿坐受废辱,率少数宿卫出宫讨司马昭,行至南阙被贾充所部阻截,太子舍人成济持戈行刺;曹髦死后,司马昭仍掌朝政。</small><b>进入画卷 →</b></div>
|
||||
</a>
|
||||
</article>
|
||||
<article class="story-card">
|
||||
<a href="./stories/wei-conquest-shu/index.html" aria-label="阅读魏灭蜀之战(邓艾钟会伐蜀·刘禅出降)">
|
||||
<figure><img src="./stories/wei-conquest-shu/assets/images/01-三路入汉中.webp" alt="魏灭蜀之战(邓艾钟会伐蜀·刘禅出降)卷首画面" loading="lazy" /><span>05</span></figure>
|
||||
<div><p>三国·曹魏景元四年/蜀汉炎兴元年</p><h3>魏灭蜀之战(邓艾钟会伐蜀·刘禅出降)</h3><span>263年秋至冬 · 5幕</span><small>钟会主力进入汉中却受阻剑阁,邓艾由阴平险道迂回江油、击破绵竹;刘禅在成都出降,蜀汉灭亡。</small><b>进入画卷 →</b></div>
|
||||
</a>
|
||||
</article>
|
||||
<article class="story-card">
|
||||
<a href="./stories/zhong-hui-rebellion/index.html" aria-label="阅读钟会之乱(邓艾、钟会之死)">
|
||||
<figure><img src="./stories/zhong-hui-rebellion/assets/images/01-arrest-deng-ai.webp" alt="钟会之乱(邓艾、钟会之死)卷首画面" loading="lazy" /><span>06</span></figure>
|
||||
<div><p>三国·曹魏景元五年(264年;同年五月改元咸熙)</p><h3>钟会之乱(邓艾、钟会之死)</h3><span>264年正月;钟会正月十五日至成都、十六日起兵、十八日兵败身死,邓艾随后遇害 · 5幕</span><small>灭蜀后,钟会先促成邓艾被捕,继而在成都起兵失败;钟会与姜维死于兵变,刚被旧部救出的邓艾也与子邓忠在绵竹西被杀。</small><b>进入画卷 →</b></div>
|
||||
</a>
|
||||
</article>
|
||||
</div>
|
||||
</main>
|
||||
<footer><span>Digital Me · 三国故事集</span><a href="./manifest.json">接入清单</a></footer>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,94 @@
|
||||
{
|
||||
"collection": "三国故事集",
|
||||
"version": 1,
|
||||
"generatedAt": "2026-08-26",
|
||||
"entry": "index.html",
|
||||
"storyCount": 6,
|
||||
"transitionAssetsIncluded": false,
|
||||
"stories": [
|
||||
{
|
||||
"id": "jieting-battle",
|
||||
"title": "街亭之战·诸葛亮第一次北伐",
|
||||
"entry": "stories/jieting-battle/index.html",
|
||||
"sourceFolder": "../街亭之战·诸葛亮第一次北伐",
|
||||
"cover": "stories/jieting-battle/assets/images/01-three-commandaries-rise.webp",
|
||||
"era": "三国·蜀汉建兴六年/曹魏太和二年",
|
||||
"date": "228年春",
|
||||
"place": "街亭(今址有争议;常见考订指今甘肃天水秦安陇城一带)",
|
||||
"summary": "马谡舍水上山,张郃绝其汲道而大破蜀军;街亭失守使诸葛亮第一次北伐失去前进支点,最终退回汉中。",
|
||||
"sceneCount": 5,
|
||||
"narrationSeconds": 82,
|
||||
"hasAudio": false
|
||||
},
|
||||
{
|
||||
"id": "wuzhang-plains",
|
||||
"title": "五丈原之战(诸葛亮卒于军)",
|
||||
"entry": "stories/wuzhang-plains/index.html",
|
||||
"sourceFolder": "../五丈原之战(诸葛亮卒于军)",
|
||||
"cover": "stories/wuzhang-plains/assets/images/01-cross-xie-valley.webp",
|
||||
"era": "三国·蜀汉建兴十二年/曹魏青龙二年",
|
||||
"date": "234年春至八月",
|
||||
"place": "武功五丈原、渭水南岸(今陕西省宝鸡市岐山县五丈原一带)",
|
||||
"summary": "诸葛亮据五丈原屯田久驻,司马懿奉诏坚壁拒守;两军相持百余日后诸葛亮病卒军中,蜀军整阵退还。",
|
||||
"sceneCount": 5,
|
||||
"narrationSeconds": 86,
|
||||
"hasAudio": true
|
||||
},
|
||||
{
|
||||
"id": "gaopingling-coup",
|
||||
"title": "高平陵之变",
|
||||
"entry": "stories/gaopingling-coup/index.html",
|
||||
"sourceFolder": "../高平陵之变",
|
||||
"cover": "stories/gaopingling-coup/assets/images/01-imperial-procession-gaoping.webp",
|
||||
"era": "三国·曹魏正始十年(同年四月改元嘉平)",
|
||||
"date": "正始十年正月甲午(249年2月5日)至正月戊戌(249年2月9日)",
|
||||
"place": "洛阳、高平陵、伊水南与洛水浮桥一带",
|
||||
"summary": "司马懿趁魏帝曹芳与曹爽兄弟出城谒陵控制洛阳,迫使曹爽交权,随后诛灭曹爽集团,曹魏实权由此转入司马氏之手。",
|
||||
"sceneCount": 5,
|
||||
"narrationSeconds": 82,
|
||||
"hasAudio": false
|
||||
},
|
||||
{
|
||||
"id": "cao-mao-death",
|
||||
"title": "高贵乡公曹髦之死",
|
||||
"entry": "stories/cao-mao-death/index.html",
|
||||
"sourceFolder": "../高贵乡公曹髦之死",
|
||||
"cover": "stories/cao-mao-death/assets/images/01-a-throne-without-power.webp",
|
||||
"era": "三国·曹魏甘露五年(后改元景元)",
|
||||
"date": "260年五月己丑",
|
||||
"place": "洛阳宫城云龙门、东止车门至南阙一带",
|
||||
"summary": "二十岁的魏帝曹髦不愿坐受废辱,率少数宿卫出宫讨司马昭,行至南阙被贾充所部阻截,太子舍人成济持戈行刺;曹髦死后,司马昭仍掌朝政。",
|
||||
"sceneCount": 5,
|
||||
"narrationSeconds": 95,
|
||||
"hasAudio": false
|
||||
},
|
||||
{
|
||||
"id": "wei-conquest-shu",
|
||||
"title": "魏灭蜀之战(邓艾钟会伐蜀·刘禅出降)",
|
||||
"entry": "stories/wei-conquest-shu/index.html",
|
||||
"sourceFolder": "../魏灭蜀之战(邓艾钟会伐蜀·刘禅出降)",
|
||||
"cover": "stories/wei-conquest-shu/assets/images/01-三路入汉中.webp",
|
||||
"era": "三国·曹魏景元四年/蜀汉炎兴元年",
|
||||
"date": "263年秋至冬",
|
||||
"place": "汉中、剑阁、阴平、江油、绵竹、成都",
|
||||
"summary": "钟会主力进入汉中却受阻剑阁,邓艾由阴平险道迂回江油、击破绵竹;刘禅在成都出降,蜀汉灭亡。",
|
||||
"sceneCount": 5,
|
||||
"narrationSeconds": 88,
|
||||
"hasAudio": false
|
||||
},
|
||||
{
|
||||
"id": "zhong-hui-rebellion",
|
||||
"title": "钟会之乱(邓艾、钟会之死)",
|
||||
"entry": "stories/zhong-hui-rebellion/index.html",
|
||||
"sourceFolder": "../钟会之乱(邓艾、钟会之死)",
|
||||
"cover": "stories/zhong-hui-rebellion/assets/images/01-arrest-deng-ai.webp",
|
||||
"era": "三国·曹魏景元五年(264年;同年五月改元咸熙)",
|
||||
"date": "264年正月;钟会正月十五日至成都、十六日起兵、十八日兵败身死,邓艾随后遇害",
|
||||
"place": "益州成都、绵竹西",
|
||||
"summary": "灭蜀后,钟会先促成邓艾被捕,继而在成都起兵失败;钟会与姜维死于兵变,刚被旧部救出的邓艾也与子邓忠在绵竹西被杀。",
|
||||
"sceneCount": 5,
|
||||
"narrationSeconds": 89,
|
||||
"hasAudio": false
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1787640980513" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="14469" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M962 962H62V62h900v900zM162 862h700V162H162v700z" p-id="14470" fill="#2c2c2c"></path></svg>
|
||||
|
After Width: | Height: | Size: 425 B |
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1787640936341" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="12356" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M64.164369 555.936675 64.164369 466.466967l894.496507 0 0 89.469708L64.164369 555.936675 64.164369 555.936675zM466.676745 958.450075 466.676745 63.953567l89.469708 0 0 894.497531L466.676745 958.451098 466.676745 958.450075z" fill="#2c2c2c" p-id="12357"></path></svg>
|
||||
|
After Width: | Height: | Size: 600 B |
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1787640959653" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13428" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M512 928C282.624 928 96 741.376 96 512S282.624 96 512 96s416 186.624 416 416-186.624 416-416 416z m0-768C317.92 160 160 317.92 160 512s157.92 352 352 352 352-157.92 352-352S706.08 160 512 160z" fill="#2c2c2c" p-id="13429"></path></svg>
|
||||
|
After Width: | Height: | Size: 569 B |
@@ -0,0 +1,318 @@
|
||||
{
|
||||
"event": {
|
||||
"canonicalName": "高贵乡公曹髦之死",
|
||||
"aliases": [
|
||||
"曹髦讨司马昭",
|
||||
"曹髦遇弑"
|
||||
],
|
||||
"era": "三国·曹魏甘露五年(后改元景元)",
|
||||
"date": "260年五月己丑",
|
||||
"place": "洛阳宫城云龙门、东止车门至南阙一带",
|
||||
"summary": "二十岁的魏帝曹髦不愿坐受废辱,率少数宿卫出宫讨司马昭,行至南阙被贾充所部阻截,太子舍人成济持戈行刺;曹髦死后,司马昭仍掌朝政。"
|
||||
},
|
||||
"narration": {
|
||||
"language": "zh-CN",
|
||||
"estimatedSeconds": 95,
|
||||
"fullText": "甘露五年五月,二十岁的魏帝曹髦,已经只剩皇帝的名号。朝政尽入大将军司马昭之手,连他借“潜龙”自况,也招来猜忌。己丑日,曹髦召来王沈、王经、王业,掷下黄素诏:“司马昭之心,路人所知也。吾不能坐受废辱。”王经劝他再三详察,王沈、王业却转身奔告司马昭。曹髦没有回头。他拔剑登车,只带殿中宿卫、苍头官僮,鼓噪出云龙门。东止车门的守兵一度奔散;到了南阙,中护军贾充已经领兵挡住去路。兵众想退,成济问该怎么办。贾充只答:司马公养你们,正为今日。成济抽戈向前,曹髦就此遇弑,年仅二十。事后,太后诏令先将他废为庶人、以民礼下葬;太傅司马孚等再请,才改以王礼。王经及家属被收治,成济兄弟后来被夷族,王沈反而封侯,司马昭仍旧执政。陈寿赞曹髦“才慧夙成”,也责他“轻躁忿肆”。可在最冷的本纪里,这场宫门血变只剩一句:五月己丑,高贵乡公卒,年二十。"
|
||||
},
|
||||
"scenes": [
|
||||
{
|
||||
"id": "01",
|
||||
"title": "被架空的天子",
|
||||
"timePlace": "260年五月前,洛阳宫城",
|
||||
"purpose": "交代曹髦虽居帝位却失去实权,以及他为何走向孤注一掷。",
|
||||
"narration": "甘露五年五月,二十岁的魏帝曹髦,已经只剩皇帝的名号。朝政尽入大将军司马昭之手,连他借“潜龙”自况,也招来猜忌。",
|
||||
"overlay": {
|
||||
"heading": "被架空的天子",
|
||||
"line": "他仍坐在帝位上,却已经无法决定帝国的方向。"
|
||||
},
|
||||
"people": [
|
||||
{
|
||||
"name": "曹髦",
|
||||
"office": "曹魏皇帝、高贵乡公",
|
||||
"action": "时年二十,威权日去,以《潜龙诗》自况"
|
||||
},
|
||||
{
|
||||
"name": "司马昭",
|
||||
"office": "曹魏大将军、录尚书事",
|
||||
"action": "掌握朝政;本幕不直接入画"
|
||||
}
|
||||
],
|
||||
"image": {
|
||||
"original": "images/01-a-throne-without-power.png",
|
||||
"delivery": "images/01-a-throne-without-power.webp",
|
||||
"alt": "冷灰宫室中,二十岁的曹髦独立在黄素诏旁,门外官员和卫士排列成压迫性的长廊。",
|
||||
"prompt": "Use case: historical-scene. Scene 1 of a five-image Digital Me sequence about Cao Mao in 260 CE. The twenty-year-old emperor stands isolated beside a low desk and bronze lamp in a late Cao Wei palace; officials and armored guards form cold geometric corridors beyond layered screens. A rolled yellow-silk edict has no legible writing. Smoke-black, faded vermilion, oxidized bronze and blue-gray dawn; 16:9 prestige historical realism, negative space for overlay. Strict third-century China; no Ming/Qing costume, fantasy, modern objects, readable text, logos, UI or watermark.",
|
||||
"visualInference": "曹髦独立案前、官员与卫士列成长廊,是把“威权日去”转译成空间压迫的象征构图;并非史书记载的某次具体朝会。"
|
||||
},
|
||||
"sources": [
|
||||
"《资治通鉴·卷七十七·魏纪九》",
|
||||
"《三国志·魏书·三少帝纪》"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "02",
|
||||
"title": "黄素诏落地",
|
||||
"timePlace": "260年五月己丑,洛阳宫中",
|
||||
"purpose": "呈现曹髦公开决断,以及王经与王沈、王业的不同选择。",
|
||||
"narration": "己丑日,曹髦召来王沈、王经、王业,掷下黄素诏:“司马昭之心,路人所知也。吾不能坐受废辱。”王经劝他再三详察,王沈、王业却转身奔告司马昭。",
|
||||
"overlay": {
|
||||
"heading": "行之决矣",
|
||||
"line": "“正使死,何惧?”——黄素诏落地,退路也随之断了。"
|
||||
},
|
||||
"people": [
|
||||
{
|
||||
"name": "曹髦",
|
||||
"office": "曹魏皇帝",
|
||||
"action": "召三臣示以黄素诏,决意亲自讨司马昭"
|
||||
},
|
||||
{
|
||||
"name": "王经",
|
||||
"office": "尚书",
|
||||
"action": "劝曹髦审慎,拒绝随王沈、王业奔告司马昭"
|
||||
},
|
||||
{
|
||||
"name": "王沈",
|
||||
"office": "侍中",
|
||||
"action": "离宫奔告司马昭"
|
||||
},
|
||||
{
|
||||
"name": "王业",
|
||||
"office": "散骑常侍",
|
||||
"action": "与王沈一同奔告司马昭"
|
||||
}
|
||||
],
|
||||
"image": {
|
||||
"original": "images/02-yellow-silk-edict.png",
|
||||
"delivery": "images/02-yellow-silk-edict.webp",
|
||||
"alt": "曹髦按着铺开的黄素诏作出决断,王经忧心留在身边,王沈和王业正走向宫门。",
|
||||
"prompt": "Use case: historical-scene. Match the established twenty-year-old Cao Mao exactly. In a private late Cao Wei palace chamber he has thrown a blank yellow-silk edict onto a low table and speaks with resolved anger. Wang Jing remains near him, worried; Wang Shen and Wang Ye move toward the open doorway. Rain-gray light, one bronze lamp, black and faded vermilion palette, 16:9 prestige historical realism. No legible writing, battle, gore, Ming/Qing costume, fantasy, modern objects, subtitles, logos, UI or watermark.",
|
||||
"visualInference": "人物站位、转身的同一瞬间、室内灯光均为镜头化重构;黄素诏及三人的不同选择有史料依据。"
|
||||
},
|
||||
"sources": [
|
||||
"《三国志·魏书·三少帝纪》裴松之注引《汉晋春秋》",
|
||||
"《资治通鉴·卷七十七·魏纪九》"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "03",
|
||||
"title": "出云龙门",
|
||||
"timePlace": "260年五月己丑,洛阳宫城云龙门至东止车门",
|
||||
"purpose": "表现曹髦真正能够调动的人手极少,以及这次行动从开始便力量悬殊。",
|
||||
"narration": "曹髦没有回头。他拔剑登车,只带殿中宿卫、苍头官僮,鼓噪出云龙门。东止车门的守兵一度奔散。",
|
||||
"overlay": {
|
||||
"heading": "出云龙门",
|
||||
"line": "没有禁军万骑,只有一位天子和一支小得可怜的宫中队伍。"
|
||||
},
|
||||
"people": [
|
||||
{
|
||||
"name": "曹髦",
|
||||
"office": "曹魏皇帝",
|
||||
"action": "拔剑升辇,亲率宫中少数人马出门"
|
||||
},
|
||||
{
|
||||
"name": "司马伷",
|
||||
"office": "屯骑校尉、司马昭之弟",
|
||||
"action": "在东止车门遭遇曹髦;其部众受呵斥后一度奔散"
|
||||
},
|
||||
{
|
||||
"name": "殿中宿卫、苍头官僮",
|
||||
"office": "曹髦临时带出的宫中人员",
|
||||
"action": "随辇鼓噪而出,人数与装备处于明显劣势"
|
||||
}
|
||||
],
|
||||
"image": {
|
||||
"original": "images/03-through-yunlong-gate.png",
|
||||
"delivery": "images/03-through-yunlong-gate.webp",
|
||||
"alt": "乌云下,曹髦持剑立在驶出云龙门的车上,少数宿卫、官僮和一面战鼓跟随其后。",
|
||||
"prompt": "Use case: historical-scene. Match the established Cao Mao and black-red costume. Cao Mao leaves a vast late Cao Wei palace gate in a modest wooden imperial carriage, sword drawn, followed by only a small group of palace guards, attendants, servants and one compact war drum. The huge empty forecourt makes the party look exposed and inadequate. Cold overcast light, wind and forward motion, 16:9 historical realism. No giant army, combat, gore, Ming/Qing armor, fantasy, readable flags, modern objects, subtitles, logos, UI or watermark.",
|
||||
"visualInference": "云龙门的具体建筑形制、车驾外观、随行人数的可视规模与阴天均为视觉设计;史料只明确列出宿卫、苍头官僮等。"
|
||||
},
|
||||
"sources": [
|
||||
"《三国志·魏书·三少帝纪》裴松之注引《汉晋春秋》",
|
||||
"《资治通鉴·卷七十七·魏纪九》"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "04",
|
||||
"title": "南阙抽戈",
|
||||
"timePlace": "260年五月己丑,洛阳宫城南阙",
|
||||
"purpose": "交代贾充阻截、成济行刺的直接过程,同时以克制画面避免消费死亡。",
|
||||
"narration": "到了南阙,中护军贾充已经领兵挡住去路。兵众想退,成济问该怎么办。贾充只答:司马公养你们,正为今日。成济抽戈向前,曹髦就此遇弑,年仅二十。",
|
||||
"overlay": {
|
||||
"heading": "南阙抽戈",
|
||||
"line": "戈刃向前的一刻,魏国的皇权也被公开刺穿。"
|
||||
},
|
||||
"people": [
|
||||
{
|
||||
"name": "曹髦",
|
||||
"office": "曹魏皇帝",
|
||||
"action": "在南阙亲自持剑,遭成济行刺而死"
|
||||
},
|
||||
{
|
||||
"name": "贾充",
|
||||
"office": "中护军、司马昭亲信",
|
||||
"action": "率兵迎击曹髦,并授意成济不要再问"
|
||||
},
|
||||
{
|
||||
"name": "成济",
|
||||
"office": "太子舍人、骑督成倅之弟",
|
||||
"action": "持戈行刺曹髦"
|
||||
}
|
||||
],
|
||||
"image": {
|
||||
"original": "images/04-halberd-at-south-gate.png",
|
||||
"delivery": "images/04-halberd-at-south-gate.webp",
|
||||
"alt": "南阙狭窄门道里,曹髦在车上持剑,贾充所部拦路,成济持戈迈向车前,致命接触被车栏遮住。",
|
||||
"prompt": "Use case: historical-scene. Match the established Cao Mao, carriage and late Cao Wei world. At the South Gate, Cao Mao stands in his halted carriage with sword raised while Jia Chong's compact armored line blocks the corridor. Cheng Ji advances with a plausible late-Han ge halberd; its point and Cao Mao's torso are hidden by the carriage rail and curtain. Storm gray, black lacquer and faded vermilion, 16:9 prestige realism. Show fatal intent but no penetration, blood, wound or corpse. No heroic duel, giant armies, Ming/Qing armor, fantasy, modern objects, readable text, subtitles, logos, UI or watermark.",
|
||||
"visualInference": "图像停在致命接触前,以车栏遮挡戈刃;史书对曹髦最终在车中还是车下的表述不同,画面不作强行裁断。"
|
||||
},
|
||||
"sources": [
|
||||
"《三国志·魏书·三少帝纪》裴松之注引《汉晋春秋》",
|
||||
"《晋书·帝纪第二·文帝纪》",
|
||||
"《资治通鉴·卷七十七·魏纪九》"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "05",
|
||||
"title": "卒,年二十",
|
||||
"timePlace": "曹髦死后,洛阳",
|
||||
"purpose": "用处置结果与本纪的一句冷记,收束弑君之后权力并未易手的现实。",
|
||||
"narration": "事后,太后诏令先将曹髦废为庶人、以民礼下葬;太傅司马孚等再请,才改以王礼。王经及家属被收治,成济兄弟后来被夷族,王沈反而封侯,司马昭仍旧执政。陈寿赞曹髦“才慧夙成”,也责他“轻躁忿肆”。可在最冷的本纪里,这场宫门血变只剩一句:五月己丑,高贵乡公卒,年二十。",
|
||||
"overlay": {
|
||||
"heading": "卒,年二十",
|
||||
"line": "一位皇帝的遇弑,在本纪里只被压成了一行冷字。"
|
||||
},
|
||||
"people": [
|
||||
{
|
||||
"name": "曹髦",
|
||||
"office": "高贵乡公",
|
||||
"action": "先被令以民礼下葬,后经司马孚等请奏改以王礼"
|
||||
},
|
||||
{
|
||||
"name": "王经",
|
||||
"office": "尚书",
|
||||
"action": "与家属被收付廷尉,随后遇害"
|
||||
},
|
||||
{
|
||||
"name": "成济兄弟",
|
||||
"office": "行刺者及其兄",
|
||||
"action": "事后被司马昭归为大逆不道,夷其族"
|
||||
},
|
||||
{
|
||||
"name": "王沈",
|
||||
"office": "侍中",
|
||||
"action": "因奔告司马昭而封安平侯"
|
||||
},
|
||||
{
|
||||
"name": "司马昭",
|
||||
"office": "大将军",
|
||||
"action": "弑君事件后仍掌曹魏朝政"
|
||||
}
|
||||
],
|
||||
"image": {
|
||||
"original": "images/05-only-one-line-remains.png",
|
||||
"delivery": "images/05-only-one-line-remains.webp",
|
||||
"alt": "冷暮色中,空下来的帝车留在南阙,远处王礼葬仪离去,一名史官在灯下展开无字记录。",
|
||||
"prompt": "Use case: historical-scene. Final scene matching the established late Cao Wei carriage and palette. At cold dusk the empty imperial carriage remains under the South Gate, curtain lowered, with a sheathed sword and blank yellow silk inside. A restrained royal funeral procession recedes through mist; a lone court clerk holds a blank record under one lamp while armed guards still control the gate. Wet-stone reflections, large negative space, 16:9 prestige historical realism. No corpse, gore, execution, later Buddhist funeral imagery, Ming/Qing costume, fantasy, modern objects, readable writing, subtitles, logos, UI or watermark.",
|
||||
"visualInference": "空车、远去葬仪和史官同框是跨时压缩的象征构图;没有史料记载三者在同一时刻同一地点出现。"
|
||||
},
|
||||
"sources": [
|
||||
"《三国志·魏书·三少帝纪》",
|
||||
"《三国志·魏书·三少帝纪》裴松之注引《汉晋春秋》",
|
||||
"《三国志·魏书·三少帝纪》陈寿评",
|
||||
"《资治通鉴·卷七十七·魏纪九》"
|
||||
]
|
||||
}
|
||||
],
|
||||
"bgm": {
|
||||
"catalogId": "mingchangmian:jiangdugongbian#0",
|
||||
"title": "江都宫变·一条练巾了结帝国",
|
||||
"version": "电影级配乐(仅使用纯器乐/伴奏 stem)",
|
||||
"status": "pending-export",
|
||||
"pathOrUrl": "",
|
||||
"usage": "只取纯器乐或去人声伴奏,不使用该曲关于隋炀帝的歌词;旁白开始后整体压低,南阙遇弑处也不做动作片式爆点。",
|
||||
"reason": "项目曲库里没有曹髦或司马昭专曲;这首同为宫变与帝王坠落主题,情绪从巨大静默持续下沉、没有凯旋反弹,最适合这场短促而不可逆的宫门悲剧。曲库接口当前显示 hasAudio: false,因此素材包只给出选曲与剪辑方案,不伪造音频文件。",
|
||||
"cues": [
|
||||
{
|
||||
"from": "00:00",
|
||||
"to": "00:16",
|
||||
"scene": "01",
|
||||
"direction": "由近乎静默的低层氛围进入,让空宫与官列先建立压迫感。"
|
||||
},
|
||||
{
|
||||
"from": "00:16",
|
||||
"to": "00:36",
|
||||
"scene": "02",
|
||||
"direction": "黄素诏落地时给一次轻而干的低音落点;王沈、王业转身后继续下行。"
|
||||
},
|
||||
{
|
||||
"from": "00:36",
|
||||
"to": "00:54",
|
||||
"scene": "03",
|
||||
"direction": "加入克制脉冲承托车轮与鼓噪,但保持队伍渺小,不做出征凯歌。"
|
||||
},
|
||||
{
|
||||
"from": "00:54",
|
||||
"to": "01:15",
|
||||
"scene": "04",
|
||||
"direction": "南阙对峙逐步抽空;“成济抽戈”前短暂近静音,致命瞬间只落一个闷重音。"
|
||||
},
|
||||
{
|
||||
"from": "01:15",
|
||||
"to": "01:35",
|
||||
"scene": "05",
|
||||
"direction": "回到低沉下行并逐层撤去;“卒,年二十”后留一秒空白再结束。"
|
||||
}
|
||||
]
|
||||
},
|
||||
"sources": [
|
||||
{
|
||||
"claim": "曹髦之死的本纪日期、年龄与“卒”字书法",
|
||||
"citation": "《三国志·魏书·三少帝纪·高贵乡公髦纪》"
|
||||
},
|
||||
{
|
||||
"claim": "召王沈、王经、王业,黄素诏、出云龙门、南阙遇弑等过程",
|
||||
"citation": "《三国志·魏书·三少帝纪》裴松之注引《汉晋春秋》"
|
||||
},
|
||||
{
|
||||
"claim": "成济持戈行刺与曹髦死于车驾附近的直接记载",
|
||||
"citation": "《晋书·帝纪第二·文帝纪》"
|
||||
},
|
||||
{
|
||||
"claim": "事件完整次序、王经被诛、王沈封侯、王礼下葬、成济兄弟夷族",
|
||||
"citation": "《资治通鉴·卷七十七·魏纪九》",
|
||||
"url": "https://zh.wikisource.org/zh/資治通鑑/卷077"
|
||||
},
|
||||
{
|
||||
"claim": "项目事件条目、人物关系与音乐曲库方案",
|
||||
"citation": "digital-me-backend/src/rujuDashi/wei.js;digital-me-backend/src/chao/wei.js;digital-me-backend/src/chao/xijin.js;digital-me-backend/src/dizan.js;digital-me-backend/src/data/music-library.json"
|
||||
}
|
||||
],
|
||||
"blacklist": [
|
||||
"把事件写成司马昭亲手刺杀曹髦",
|
||||
"把曹髦随行者画成数万禁军或大规模野战军",
|
||||
"让司马昭本人出现在南阙现场并直接下令",
|
||||
"把王经写成告密者;奔告司马昭的是王沈、王业",
|
||||
"把成济处理写成现场立即灭族;史料记载的是事后追究",
|
||||
"把曹髦死在车中或车下写成毫无异文的唯一结论",
|
||||
"把太后诏书的政治动机写成无证据的内心独白",
|
||||
"使用《三国演义》增加的夸张台词、司马昭佯哭等戏剧桥段",
|
||||
"直观展示戈刃穿体、喷血、尸体或处刑场面",
|
||||
"明清式盔甲、宫殿、帝冠、京剧脸谱、仙术或现代军事元素",
|
||||
"在生成图片里烘焙人名、字幕、旗号、Logo、UI 或水印"
|
||||
],
|
||||
"storyWeb": {
|
||||
"entry": "../index.html",
|
||||
"template": "historical-battle-assets/story-template-v1",
|
||||
"calligraphy": {
|
||||
"text": "兰亭集序",
|
||||
"font": "../assets/fonts/YunFengJingLongXingShu-2.ttf",
|
||||
"required": true
|
||||
},
|
||||
"previews": [
|
||||
"../preview-desktop.png",
|
||||
"../preview-mobile.png"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,158 @@
|
||||
# 高贵乡公曹髦之死|素材说明
|
||||
|
||||
- 规范事件名:高贵乡公曹髦之死
|
||||
- 别称:曹髦讨司马昭、曹髦遇弑
|
||||
- 时代:三国·曹魏甘露五年(后改元景元)
|
||||
- 时间:260年五月己丑
|
||||
- 地点:洛阳宫城云龙门、东止车门至南阙一带
|
||||
- 一句话结论:二十岁的魏帝曹髦不愿坐受废辱,率少数宿卫出宫讨司马昭,行至南阙被贾充所部阻截,太子舍人成济持戈行刺;曹髦死后,司马昭仍掌朝政。
|
||||
|
||||
## 约 95 秒主旁白
|
||||
|
||||
甘露五年五月,二十岁的魏帝曹髦,已经只剩皇帝的名号。朝政尽入大将军司马昭之手,连他借“潜龙”自况,也招来猜忌。己丑日,曹髦召来王沈、王经、王业,掷下黄素诏:“司马昭之心,路人所知也。吾不能坐受废辱。”王经劝他再三详察,王沈、王业却转身奔告司马昭。
|
||||
|
||||
曹髦没有回头。他拔剑登车,只带殿中宿卫、苍头官僮,鼓噪出云龙门。东止车门的守兵一度奔散;到了南阙,中护军贾充已经领兵挡住去路。兵众想退,成济问该怎么办。贾充只答:司马公养你们,正为今日。成济抽戈向前,曹髦就此遇弑,年仅二十。
|
||||
|
||||
事后,太后诏令先将曹髦废为庶人、以民礼下葬;太傅司马孚等再请,才改以王礼。王经及家属被收治,成济兄弟后来被夷族,王沈反而封侯,司马昭仍旧执政。陈寿赞曹髦“才慧夙成”,也责他“轻躁忿肆”。可在最冷的本纪里,这场宫门血变只剩一句:五月己丑,高贵乡公卒,年二十。
|
||||
|
||||
## 分幕素材
|
||||
|
||||
### 第一幕|被架空的天子
|
||||
|
||||
- 时间地点:260年五月前,洛阳宫城
|
||||
- 叙事作用:交代曹髦虽居帝位却失去实权,以及他为何走向孤注一掷。
|
||||
- 旁白:甘露五年五月,二十岁的魏帝曹髦,已经只剩皇帝的名号。朝政尽入大将军司马昭之手,连他借“潜龙”自况,也招来猜忌。
|
||||
- 叠字标题:被架空的天子
|
||||
- 一句短文案:他仍坐在帝位上,却已经无法决定帝国的方向。
|
||||
- 人物标签:
|
||||
- 曹髦/曹魏皇帝、高贵乡公/时年二十,威权日去,以《潜龙诗》自况
|
||||
- 司马昭/曹魏大将军、录尚书事/掌握朝政;本幕不直接入画
|
||||
- 图片:`images/01-a-throne-without-power.png`、`images/01-a-throne-without-power.webp`
|
||||
- 画面说明:曹髦独立在冷灰宫室案前,门外官员和卫士排列成压迫性的长廊;黄素诏没有可读文字。
|
||||
- 替代文本:冷灰宫室中,二十岁的曹髦独立在黄素诏旁,门外官员和卫士排列成压迫性的长廊。
|
||||
- 视觉补全:人物独立案前、官员与卫士列成长廊,是把“威权日去”转译成空间压迫的象征构图,并非某次具体朝会。
|
||||
- 史实依据:《资治通鉴·卷七十七·魏纪九》《三国志·魏书·三少帝纪》。
|
||||
|
||||
### 第二幕|黄素诏落地
|
||||
|
||||
- 时间地点:260年五月己丑,洛阳宫中
|
||||
- 叙事作用:呈现曹髦公开决断,以及王经与王沈、王业的不同选择。
|
||||
- 旁白:己丑日,曹髦召来王沈、王经、王业,掷下黄素诏:“司马昭之心,路人所知也。吾不能坐受废辱。”王经劝他再三详察,王沈、王业却转身奔告司马昭。
|
||||
- 叠字标题:行之决矣
|
||||
- 一句短文案:“正使死,何惧?”——黄素诏落地,退路也随之断了。
|
||||
- 人物标签:
|
||||
- 曹髦/曹魏皇帝/召三臣示以黄素诏,决意亲自讨司马昭
|
||||
- 王经/尚书/劝曹髦审慎,拒绝随王沈、王业奔告司马昭
|
||||
- 王沈/侍中/离宫奔告司马昭
|
||||
- 王业/散骑常侍/与王沈一同奔告司马昭
|
||||
- 图片:`images/02-yellow-silk-edict.png`、`images/02-yellow-silk-edict.webp`
|
||||
- 画面说明:曹髦按着铺开的黄素诏作出决断,王经忧心留在身边,王沈和王业正走向宫门。
|
||||
- 替代文本:曹髦按着铺开的黄素诏作出决断,王经忧心留在身边,王沈和王业正走向宫门。
|
||||
- 视觉补全:人物站位、转身的同一瞬间、室内灯光均为镜头化重构;黄素诏及三人的不同选择有史料依据。
|
||||
- 史实依据:《三国志·魏书·三少帝纪》裴松之注引《汉晋春秋》《资治通鉴·卷七十七·魏纪九》。
|
||||
|
||||
### 第三幕|出云龙门
|
||||
|
||||
- 时间地点:260年五月己丑,洛阳宫城云龙门至东止车门
|
||||
- 叙事作用:表现曹髦真正能够调动的人手极少,以及这次行动从开始便力量悬殊。
|
||||
- 旁白:曹髦没有回头。他拔剑登车,只带殿中宿卫、苍头官僮,鼓噪出云龙门。东止车门的守兵一度奔散。
|
||||
- 叠字标题:出云龙门
|
||||
- 一句短文案:没有禁军万骑,只有一位天子和一支小得可怜的宫中队伍。
|
||||
- 人物标签:
|
||||
- 曹髦/曹魏皇帝/拔剑升辇,亲率宫中少数人马出门
|
||||
- 司马伷/屯骑校尉、司马昭之弟/在东止车门遭遇曹髦;其部众受呵斥后一度奔散
|
||||
- 殿中宿卫、苍头官僮/曹髦临时带出的宫中人员/随辇鼓噪而出,人数与装备处于明显劣势
|
||||
- 图片:`images/03-through-yunlong-gate.png`、`images/03-through-yunlong-gate.webp`
|
||||
- 画面说明:乌云下,曹髦持剑立在驶出云龙门的车上,少数宿卫、官僮和一面战鼓跟随其后。
|
||||
- 替代文本:乌云下,曹髦持剑立在驶出云龙门的车上,少数宿卫、官僮和一面战鼓跟随其后。
|
||||
- 视觉补全:云龙门的具体建筑形制、车驾外观、随行人数的可视规模与阴天均为视觉设计;史料只明确列出宿卫、苍头官僮等。
|
||||
- 史实依据:《三国志·魏书·三少帝纪》裴松之注引《汉晋春秋》《资治通鉴·卷七十七·魏纪九》。
|
||||
|
||||
### 第四幕|南阙抽戈
|
||||
|
||||
- 时间地点:260年五月己丑,洛阳宫城南阙
|
||||
- 叙事作用:交代贾充阻截、成济行刺的直接过程,同时以克制画面避免消费死亡。
|
||||
- 旁白:到了南阙,中护军贾充已经领兵挡住去路。兵众想退,成济问该怎么办。贾充只答:司马公养你们,正为今日。成济抽戈向前,曹髦就此遇弑,年仅二十。
|
||||
- 叠字标题:南阙抽戈
|
||||
- 一句短文案:戈刃向前的一刻,魏国的皇权也被公开刺穿。
|
||||
- 人物标签:
|
||||
- 曹髦/曹魏皇帝/在南阙亲自持剑,遭成济行刺而死
|
||||
- 贾充/中护军、司马昭亲信/率兵迎击曹髦,并授意成济不要再问
|
||||
- 成济/太子舍人、骑督成倅之弟/持戈行刺曹髦
|
||||
- 图片:`images/04-halberd-at-south-gate.png`、`images/04-halberd-at-south-gate.webp`
|
||||
- 画面说明:曹髦在车上持剑,贾充所部拦路,成济持戈迈向车前;致命接触被车栏遮住,无血腥展示。
|
||||
- 替代文本:南阙狭窄门道里,曹髦在车上持剑,贾充所部拦路,成济持戈迈向车前,致命接触被车栏遮住。
|
||||
- 视觉补全:图像停在致命接触前,以车栏遮挡戈刃;史书对曹髦最终在车中还是车下的表述不同,画面不作强行裁断。
|
||||
- 史实依据:《三国志·魏书·三少帝纪》裴松之注引《汉晋春秋》《晋书·帝纪第二·文帝纪》《资治通鉴·卷七十七·魏纪九》。
|
||||
|
||||
### 第五幕|卒,年二十
|
||||
|
||||
- 时间地点:曹髦死后,洛阳
|
||||
- 叙事作用:用处置结果与本纪的一句冷记,收束弑君之后权力并未易手的现实。
|
||||
- 旁白:事后,太后诏令先将曹髦废为庶人、以民礼下葬;太傅司马孚等再请,才改以王礼。王经及家属被收治,成济兄弟后来被夷族,王沈反而封侯,司马昭仍旧执政。陈寿赞曹髦“才慧夙成”,也责他“轻躁忿肆”。可在最冷的本纪里,这场宫门血变只剩一句:五月己丑,高贵乡公卒,年二十。
|
||||
- 叠字标题:卒,年二十
|
||||
- 一句短文案:一位皇帝的遇弑,在本纪里只被压成了一行冷字。
|
||||
- 人物标签:
|
||||
- 曹髦/高贵乡公/先被令以民礼下葬,后经司马孚等请奏改以王礼
|
||||
- 王经/尚书/与家属被收付廷尉,随后遇害
|
||||
- 成济兄弟/行刺者及其兄/事后被司马昭归为大逆不道,夷其族
|
||||
- 王沈/侍中/因奔告司马昭而封安平侯
|
||||
- 司马昭/大将军/弑君事件后仍掌曹魏朝政
|
||||
- 图片:`images/05-only-one-line-remains.png`、`images/05-only-one-line-remains.webp`
|
||||
- 画面说明:冷暮色中,空下来的帝车留在南阙,远处王礼葬仪离去,一名史官在灯下展开无字记录。
|
||||
- 替代文本:冷暮色中,空下来的帝车留在南阙,远处王礼葬仪离去,一名史官在灯下展开无字记录。
|
||||
- 视觉补全:空车、远去葬仪和史官同框是跨时压缩的象征构图;没有史料记载三者在同一时刻同一地点出现。
|
||||
- 史实依据:《三国志·魏书·三少帝纪》《资治通鉴·卷七十七·魏纪九》及陈寿评。
|
||||
|
||||
## BGM 选择
|
||||
|
||||
- 选中曲目:`mingchangmian:jiangdugongbian#0`《江都宫变·一条练巾了结帝国》
|
||||
- 版本:电影级配乐;只使用纯器乐或伴奏 stem
|
||||
- 项目状态:待生成/待导出;本地曲库已有曲目方案,但接口显示 `hasAudio: false`,素材包不附 MP3。
|
||||
- 使用限制:不使用该曲关于隋炀帝的歌词,只取器乐氛围;旁白开始后整体压低,南阙遇弑处也不做动作片式爆点。
|
||||
- 选择理由:项目曲库里没有曹髦或司马昭专曲;这首同为宫变与帝王坠落主题,情绪从巨大静默持续下沉、没有凯旋反弹,最适合这场短促而不可逆的宫门悲剧。
|
||||
|
||||
### Cue sheet
|
||||
|
||||
| 时间 | 幕次 | 剪辑方向 |
|
||||
| --- | --- | --- |
|
||||
| 00:00–00:16 | 01 | 由近乎静默的低层氛围进入,让空宫与官列先建立压迫感。 |
|
||||
| 00:16–00:36 | 02 | 黄素诏落地时给一次轻而干的低音落点;王沈、王业转身后继续下行。 |
|
||||
| 00:36–00:54 | 03 | 加入克制脉冲承托车轮与鼓噪,但保持队伍渺小,不做出征凯歌。 |
|
||||
| 00:54–01:15 | 04 | 南阙对峙逐步抽空;“成济抽戈”前短暂近静音,致命瞬间只落一个闷重音。 |
|
||||
| 01:15–01:35 | 05 | 回到低沉下行并逐层撤去;“卒,年二十”后留一秒空白再结束。 |
|
||||
|
||||
## 史实边界
|
||||
|
||||
### 史实依据
|
||||
|
||||
- 《三国志·魏书·三少帝纪·高贵乡公髦纪》:本纪仅冷记“五月己丑,高贵乡公卒,年二十”;裴松之注引《汉晋春秋》补足宫变过程。
|
||||
- 《三国志》裴注引《汉晋春秋》:曹髦召王沈、王经、王业,示黄素诏;王沈、王业奔告司马昭;曹髦率宿卫、苍头官僮出云龙门,最终在南阙遇弑。
|
||||
- 《晋书·帝纪第二·文帝纪》:成济抽戈行刺,并留下“崩于车中”的直接表述。
|
||||
- 《资治通鉴·卷七十七·魏纪九》:整合事件次序,并记王经被诛、王沈封侯、王礼下葬与成济兄弟夷族。
|
||||
- 项目内核对文件:`digital-me-backend/src/rujuDashi/wei.js`、`digital-me-backend/src/chao/wei.js`、`digital-me-backend/src/chao/xijin.js`、`digital-me-backend/src/dizan.js`、`digital-me-backend/src/data/music-library.json`。
|
||||
|
||||
### 异文与表达选择
|
||||
|
||||
- 《三国志》裴注与《资治通鉴》作曹髦“殒于车下”,《晋书》作“崩于车中”。旁白只写“遇弑”,第四幕停在致命接触前,不把异文强行裁成唯一结论。
|
||||
- “司马昭之心,路人所知也”出自裴注引《汉晋春秋》,不是《三国志》本纪正文;素材中明确按该来源使用。
|
||||
- 陈寿“才慧夙成”“轻躁忿肆”是史家评价,不作为曹髦内心或现代价值判断。
|
||||
- 图中人物面貌、宫门具体形制、天气、时刻、车驾与站位均为视觉重构,不作为史实断言。
|
||||
|
||||
### 禁用元素
|
||||
|
||||
- 不写司马昭亲手刺杀曹髦;直接行刺者是成济,南阙阻截者是贾充所部。
|
||||
- 不让司马昭本人出现在南阙现场并直接下令;现有史料不支持这一画面。
|
||||
- 不把王经写成告密者;奔告司马昭的是王沈、王业。
|
||||
- 不把曹髦随行者画成数万禁军或大规模野战军;史料只列少数宫中人员。
|
||||
- 不把成济处理写成现场立即灭族;史料记载的是事后追究。
|
||||
- 不使用《三国演义》增加的夸张对白、司马昭佯哭等戏剧桥段。
|
||||
- 不展示戈刃穿体、喷血、尸体或处刑场面。
|
||||
- 不使用明清式盔甲、宫殿、帝冠、京剧脸谱、仙术或现代军事元素。
|
||||
- 不在生成图片中烘焙人名、字幕、旗号、Logo、UI 或水印。
|
||||
|
||||
## 生成说明
|
||||
|
||||
- 图片由内置图像生成工具制作,共 5 张原始 PNG(1672×941)与 5 张 WebP。
|
||||
- 图片统一保留后期叠字空间,没有烘焙人物姓名、字幕、Logo 或水印。
|
||||
- 五张图的最终完整提示词与视觉补全说明保存在 `manifest.json`。
|
||||
@@ -0,0 +1,211 @@
|
||||
<!doctype html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta name="theme-color" content="#eee8dc" />
|
||||
<meta name="description" content="二十岁的魏帝曹髦不愿坐受废辱,率少数宿卫出宫讨司马昭,行至南阙被贾充所部阻截,太子舍人成济持戈行刺;曹髦死后,司马昭仍掌朝政。" />
|
||||
<title>高贵乡公曹髦之死|一剑出宫,皇权止于南阙</title>
|
||||
<link rel="stylesheet" href="./styles.css" />
|
||||
</head>
|
||||
<body>
|
||||
<a class="skip-link" href="#story">跳到正文</a>
|
||||
<a class="collection-back" href="../../index.html" aria-label="返回三国故事集">返回故事集</a>
|
||||
|
||||
<div class="page-motifs" aria-hidden="true">
|
||||
<div class="flow-grid flow-grid--primary"></div>
|
||||
<div class="flow-grid flow-grid--secondary"></div>
|
||||
<img class="ambient-shape ambient-shape--01 orbit-a" src="./assets/meta/十字-01.svg" alt="" />
|
||||
<img class="ambient-shape ambient-shape--02 orbit-b" src="./assets/meta/形状-椭圆形.svg" alt="" />
|
||||
<img class="ambient-shape ambient-shape--03 orbit-c" src="./assets/meta/tx-正方形.svg" alt="" />
|
||||
<img class="ambient-shape ambient-shape--04 orbit-b" src="./assets/meta/十字-01.svg" alt="" />
|
||||
<img class="ambient-shape ambient-shape--05 orbit-a" src="./assets/meta/形状-椭圆形.svg" alt="" />
|
||||
<img class="ambient-shape ambient-shape--06 orbit-c" src="./assets/meta/tx-正方形.svg" alt="" />
|
||||
<img class="ambient-shape ambient-shape--07 orbit-a" src="./assets/meta/十字-01.svg" alt="" />
|
||||
<img class="ambient-shape ambient-shape--08 orbit-b" src="./assets/meta/形状-椭圆形.svg" alt="" />
|
||||
<img class="ambient-shape ambient-shape--09 orbit-c" src="./assets/meta/tx-正方形.svg" alt="" />
|
||||
<div class="motion-matrix motion-matrix--01"><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i></div>
|
||||
<div class="motion-matrix motion-matrix--02"><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i></div>
|
||||
<div class="motion-matrix motion-matrix--03"><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i></div>
|
||||
<div class="motion-matrix motion-matrix--04"><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i></div>
|
||||
</div>
|
||||
<div class="calligraphy-field" id="calligraphy-field" aria-hidden="true"></div>
|
||||
|
||||
<header class="site-header">
|
||||
<a class="brand" href="#top" aria-label="返回卷首">
|
||||
<span class="brand__seal">髦</span>
|
||||
<span class="brand__copy"><b>曹髦之死</b><small>ILLUSTRATED CHRONICLE</small></span>
|
||||
</a>
|
||||
<nav aria-label="主导航">
|
||||
<a href="#story">卷首</a><a href="#chronicle">画卷</a><a href="#timeline">编年</a><a href="#archive">人物</a>
|
||||
</nav>
|
||||
<span class="site-header__volume">三国纪 · 260</span>
|
||||
<i class="site-header__progress" aria-hidden="true"></i>
|
||||
</header>
|
||||
|
||||
<main>
|
||||
<section class="collage" id="top" aria-label="高贵乡公曹髦之死五幕历史画卷">
|
||||
<div class="collage__field" aria-hidden="true">
|
||||
<figure class="collage-card collage-card--01" style="--r: -3.5deg"><img src="./assets/images/01-a-throne-without-power.webp" alt="" /></figure>
|
||||
<figure class="collage-card collage-card--02" style="--r: 2.8deg"><img src="./assets/images/02-yellow-silk-edict.webp" alt="" /></figure>
|
||||
<figure class="collage-card collage-card--03" style="--r: -1.8deg"><img src="./assets/images/03-through-yunlong-gate.webp" alt="" /></figure>
|
||||
<figure class="collage-card collage-card--04" style="--r: 3.2deg"><img src="./assets/images/04-halberd-at-south-gate.webp" alt="" /></figure>
|
||||
<figure class="collage-card collage-card--05" style="--r: -2.2deg"><img src="./assets/images/05-only-one-line-remains.webp" alt="" /></figure>
|
||||
</div>
|
||||
<div class="collage__veil"></div>
|
||||
<div class="collage__title">
|
||||
<p><span>三国·曹魏甘露五年(后改元景元)</span><i></i><span>260年五月己丑</span></p>
|
||||
<h1>高贵乡公<br />曹髦之死</h1>
|
||||
<div class="collage__summary"><b>一剑出宫,皇权止于南阙</b><span>甘露五年洛阳宫门血变</span></div>
|
||||
</div>
|
||||
<div class="collage__stamp" aria-hidden="true"><span>历史画卷</span><b>伍</b></div>
|
||||
<div class="collage__caption"><span>洛阳宫城云龙门、东止车门至南阙一带</span><span>伍幕 / 约95秒</span></div>
|
||||
<a class="collage__scroll" href="#story"><span>向下翻阅</span><i></i></a>
|
||||
</section>
|
||||
|
||||
<section class="story-intro" id="story" aria-labelledby="story-title">
|
||||
<div class="story-intro__grid">
|
||||
<aside class="story-intro__chapter" data-reveal data-direction="left"><span>CHAPTER</span><b>甘露<br />五年</b><i></i></aside>
|
||||
<div class="story-intro__title" data-reveal data-direction="left">
|
||||
<p class="eyebrow"><span></span> ILLUSTRATED RECORD</p>
|
||||
<h2 id="story-title">帝位尚在,<br />权力已经离席。</h2>
|
||||
</div>
|
||||
<div class="story-intro__lead" data-reveal data-direction="right">
|
||||
<p>二十岁的魏帝曹髦不愿坐受废辱,率少数宿卫出宫讨司马昭,行至南阙被贾充所部阻截,太子舍人成济持戈行刺;曹髦死后,司马昭仍掌朝政。</p>
|
||||
<dl><div><dt>时间</dt><dd>260年五月己丑</dd></div><div><dt>地点</dt><dd>洛阳宫城云龙门、东止车门至南阙一带</dd></div><div><dt>核心</dt><dd>二十岁的魏帝曹髦不愿坐受废辱,率少数宿卫出宫讨司马昭,行至南阙被贾充所部阻截,太子舍人成济持戈行刺;曹髦死后,司马昭仍掌朝政。</dd></div></dl>
|
||||
</div>
|
||||
</div>
|
||||
<figure class="story-intro__image" data-reveal data-direction="up">
|
||||
<img src="./assets/images/01-a-throne-without-power.webp" alt="冷灰宫室中,二十岁的曹髦独立在黄素诏旁,门外官员和卫士排列成压迫性的长廊。" />
|
||||
<figcaption><span>图一 · 被架空的天子</span><small>260年五月前,洛阳宫城</small></figcaption>
|
||||
</figure>
|
||||
</section>
|
||||
|
||||
<section class="chronicle" id="chronicle" aria-label="图文叙事画卷">
|
||||
<header class="chronicle__header">
|
||||
<p data-reveal data-direction="left">画卷 / PICTORIAL RECORD</p><span data-reveal data-direction="right">五幕,从黄素诏到南阙之后</span>
|
||||
</header>
|
||||
<article class="chronicle-entry" data-scene="01">
|
||||
<figure data-reveal data-direction="left">
|
||||
<img src="./assets/images/01-a-throne-without-power.webp" alt="冷灰宫室中,二十岁的曹髦独立在黄素诏旁,门外官员和卫士排列成压迫性的长廊。" loading="lazy" />
|
||||
<figcaption><span>01 / 被架空的天子</span><small>260年五月前,洛阳宫城</small></figcaption>
|
||||
</figure>
|
||||
<div class="chronicle-entry__copy" data-reveal data-direction="right">
|
||||
<time datetime="260">260年五月前,洛阳宫城</time>
|
||||
<h2><span>01</span>被架空的天子</h2>
|
||||
<p>甘露五年五月,二十岁的魏帝曹髦,已经只剩皇帝的名号。朝政尽入大将军司马昭之手,连他借“潜龙”自况,也招来猜忌。</p>
|
||||
<aside><b>画面札记</b><span>他仍坐在帝位上,却已经无法决定帝国的方向。</span></aside>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="chronicle-entry chronicle-entry--reverse" data-scene="02">
|
||||
<figure data-reveal data-direction="right">
|
||||
<img src="./assets/images/02-yellow-silk-edict.webp" alt="曹髦按着铺开的黄素诏作出决断,王经忧心留在身边,王沈和王业正走向宫门。" loading="lazy" />
|
||||
<figcaption><span>02 / 黄素诏落地</span><small>260年五月己丑,洛阳宫中</small></figcaption>
|
||||
</figure>
|
||||
<div class="chronicle-entry__copy" data-reveal data-direction="left">
|
||||
<time datetime="260">260年五月己丑,洛阳宫中</time>
|
||||
<h2><span>02</span>行之决矣</h2>
|
||||
<p>己丑日,曹髦召来王沈、王经、王业,掷下黄素诏:“司马昭之心,路人所知也。吾不能坐受废辱。”王经劝他再三详察,王沈、王业却转身奔告司马昭。</p>
|
||||
<aside><b>画面札记</b><span>“正使死,何惧?”——黄素诏落地,退路也随之断了。</span></aside>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="chronicle-entry" data-scene="03">
|
||||
<figure data-reveal data-direction="left">
|
||||
<img src="./assets/images/03-through-yunlong-gate.webp" alt="乌云下,曹髦持剑立在驶出云龙门的车上,少数宿卫、官僮和一面战鼓跟随其后。" loading="lazy" />
|
||||
<figcaption><span>03 / 出云龙门</span><small>260年五月己丑,洛阳宫城云龙门至东止车门</small></figcaption>
|
||||
</figure>
|
||||
<div class="chronicle-entry__copy" data-reveal data-direction="right">
|
||||
<time datetime="260">260年五月己丑,洛阳宫城云龙门至东止车门</time>
|
||||
<h2><span>03</span>出云龙门</h2>
|
||||
<p>曹髦没有回头。他拔剑登车,只带殿中宿卫、苍头官僮,鼓噪出云龙门。东止车门的守兵一度奔散。</p>
|
||||
<aside><b>画面札记</b><span>没有禁军万骑,只有一位天子和一支小得可怜的宫中队伍。</span></aside>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="chronicle-entry chronicle-entry--reverse" data-scene="04">
|
||||
<figure data-reveal data-direction="right">
|
||||
<img src="./assets/images/04-halberd-at-south-gate.webp" alt="南阙狭窄门道里,曹髦在车上持剑,贾充所部拦路,成济持戈迈向车前,致命接触被车栏遮住。" loading="lazy" />
|
||||
<figcaption><span>04 / 南阙抽戈</span><small>260年五月己丑,洛阳宫城南阙</small></figcaption>
|
||||
</figure>
|
||||
<div class="chronicle-entry__copy" data-reveal data-direction="left">
|
||||
<time datetime="260">260年五月己丑,洛阳宫城南阙</time>
|
||||
<h2><span>04</span>南阙抽戈</h2>
|
||||
<p>到了南阙,中护军贾充已经领兵挡住去路。兵众想退,成济问该怎么办。贾充只答:司马公养你们,正为今日。成济抽戈向前,曹髦就此遇弑,年仅二十。</p>
|
||||
<aside><b>画面札记</b><span>戈刃向前的一刻,魏国的皇权也被公开刺穿。</span></aside>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="chronicle-entry" data-scene="05">
|
||||
<figure data-reveal data-direction="left">
|
||||
<img src="./assets/images/05-only-one-line-remains.webp" alt="冷暮色中,空下来的帝车留在南阙,远处王礼葬仪离去,一名史官在灯下展开无字记录。" loading="lazy" />
|
||||
<figcaption><span>05 / 卒,年二十</span><small>曹髦死后,洛阳</small></figcaption>
|
||||
</figure>
|
||||
<div class="chronicle-entry__copy" data-reveal data-direction="right">
|
||||
<time>曹髦死后,洛阳</time>
|
||||
<h2><span>05</span>卒,年二十</h2>
|
||||
<p>事后,太后诏令先将曹髦废为庶人、以民礼下葬;太傅司马孚等再请,才改以王礼。王经及家属被收治,成济兄弟后来被夷族,王沈反而封侯,司马昭仍旧执政。陈寿赞曹髦“才慧夙成”,也责他“轻躁忿肆”。可在最冷的本纪里,这场宫门血变只剩一句:五月己丑,高贵乡公卒,年二十。</p>
|
||||
<aside><b>画面札记</b><span>一位皇帝的遇弑,在本纪里只被压成了一行冷字。</span></aside>
|
||||
</div>
|
||||
</article>
|
||||
<blockquote class="chronicle-quote" data-reveal data-direction="up">
|
||||
<p>一位皇帝的遇弑,在本纪里只被压成了一行冷字。</p>
|
||||
<cite>高贵乡公曹髦之死 · 卷末语</cite>
|
||||
</blockquote>
|
||||
</section>
|
||||
|
||||
<section class="record-line" id="timeline" aria-labelledby="timeline-title">
|
||||
<header data-reveal data-direction="left">
|
||||
<p class="eyebrow"><span></span> CHRONOLOGY</p>
|
||||
<h2 id="timeline-title">五个节点,<br />串起高贵乡公曹髦之死。</h2>
|
||||
</header>
|
||||
<ol>
|
||||
<li data-reveal data-direction="right"><time>260年五月前,洛阳宫城</time><i></i><div><b>被架空的天子</b><p>甘露五年五月,二十岁的魏帝曹髦,已经只剩皇帝的名号。朝政尽入大将军司马昭之手,连他借“潜龙”自况,也招来猜忌。</p></div></li>
|
||||
<li data-reveal data-direction="right"><time>260年五月己丑,洛阳宫中</time><i></i><div><b>行之决矣</b><p>己丑日,曹髦召来王沈、王经、王业,掷下黄素诏:“司马昭之心,路人所知也。吾不能坐受废辱。”王经劝他再三详察,王沈、王业却转身奔告司马昭。</p></div></li>
|
||||
<li data-reveal data-direction="right"><time>260年五月己丑,洛阳宫城云龙门至东止车门</time><i></i><div><b>出云龙门</b><p>曹髦没有回头。他拔剑登车,只带殿中宿卫、苍头官僮,鼓噪出云龙门。东止车门的守兵一度奔散。</p></div></li>
|
||||
<li data-reveal data-direction="right"><time>260年五月己丑,洛阳宫城南阙</time><i></i><div><b>南阙抽戈</b><p>到了南阙,中护军贾充已经领兵挡住去路。兵众想退,成济问该怎么办。贾充只答:司马公养你们,正为今日。成济抽戈向前,曹髦就此遇弑,年仅二十。</p></div></li>
|
||||
<li data-reveal data-direction="right"><time>曹髦死后,洛阳</time><i></i><div><b>卒,年二十</b><p>事后,太后诏令先将曹髦废为庶人、以民礼下葬;太傅司马孚等再请,才改以王礼。王经及家属被收治,成济兄弟后来被夷族,王沈反而封侯,司马昭仍旧执政。陈寿赞曹髦“才慧夙成”,也责他“轻躁忿肆”。可在最冷的本纪里,这场宫门血变只剩一句:五月己丑,高贵乡公卒,年二十。</p></div></li>
|
||||
</ol>
|
||||
</section>
|
||||
|
||||
<section class="archive" id="archive" aria-labelledby="archive-title">
|
||||
<header data-reveal data-direction="left">
|
||||
<p class="eyebrow"><span></span> CHARACTER FILES</p>
|
||||
<h2 id="archive-title">身在局中,<br />各有其位。</h2>
|
||||
</header>
|
||||
<div class="archive__list">
|
||||
<article data-reveal data-direction="up"><span>01</span><h3>曹髦</h3><p><b>曹魏皇帝、高贵乡公</b>时年二十,威权日去,以《潜龙诗》自况</p></article>
|
||||
<article data-reveal data-direction="up"><span>02</span><h3>司马昭</h3><p><b>曹魏大将军、录尚书事</b>掌握朝政;本幕不直接入画</p></article>
|
||||
<article data-reveal data-direction="up"><span>03</span><h3>王经</h3><p><b>尚书</b>劝曹髦审慎,拒绝随王沈、王业奔告司马昭</p></article>
|
||||
<article data-reveal data-direction="up"><span>04</span><h3>王沈</h3><p><b>侍中</b>离宫奔告司马昭</p></article>
|
||||
<article data-reveal data-direction="up"><span>05</span><h3>王业</h3><p><b>散骑常侍</b>与王沈一同奔告司马昭</p></article>
|
||||
<article data-reveal data-direction="up"><span>06</span><h3>司马伷</h3><p><b>屯骑校尉、司马昭之弟</b>在东止车门遭遇曹髦;其部众受呵斥后一度奔散</p></article>
|
||||
<article data-reveal data-direction="up"><span>07</span><h3>殿中宿卫、苍头官僮</h3><p><b>曹髦临时带出的宫中人员</b>随辇鼓噪而出,人数与装备处于明显劣势</p></article>
|
||||
<article data-reveal data-direction="up"><span>08</span><h3>贾充</h3><p><b>中护军、司马昭亲信</b>率兵迎击曹髦,并授意成济不要再问</p></article>
|
||||
<article data-reveal data-direction="up"><span>09</span><h3>成济</h3><p><b>太子舍人、骑督成倅之弟</b>持戈行刺曹髦</p></article>
|
||||
<article data-reveal data-direction="up"><span>10</span><h3>成济兄弟</h3><p><b>行刺者及其兄</b>事后被司马昭归为大逆不道,夷其族</p></article></div>
|
||||
<p class="archive__ending" data-reveal data-direction="up">二十岁的魏帝曹髦不愿坐受废辱,率少数宿卫出宫讨司马昭,行至南阙被贾充所部阻截,太子舍人成济持戈行刺;曹髦死后,司马昭仍掌朝政。</p>
|
||||
</section>
|
||||
|
||||
<footer class="source-notes">
|
||||
<div><p class="eyebrow"><span></span> HISTORICAL SOURCES</p><h2>史实边界</h2></div>
|
||||
<div class="source-notes__copy">
|
||||
<p>事实叙述以《三国志·魏书·三少帝纪·高贵乡公髦纪》、《三国志·魏书·三少帝纪》裴松之注引《汉晋春秋》、《晋书·帝纪第二·文帝纪》、《资治通鉴·卷七十七·魏纪九》为边界;图片中的天气、人物站位、光线与建筑细部属于可视化补全,均不作为史书记载。演义、神异与后世附会不写成确定事实。</p>
|
||||
<nav aria-label="在线史料"><a href="./data/素材说明.md">本地素材说明</a><a href="./data/manifest.json">结构化史料清单</a></nav>
|
||||
</div>
|
||||
</footer>
|
||||
</main>
|
||||
|
||||
|
||||
<div class="experience-controls" aria-label="页面体验控制">
|
||||
|
||||
<button class="motion-toggle" id="motion-toggle" type="button" aria-pressed="false">暂停动态</button>
|
||||
</div>
|
||||
<noscript>
|
||||
<style>[data-reveal] { opacity: 1 !important; filter: none !important; transform: none !important; }</style>
|
||||
<div class="no-script">当前为静态阅读模式。</div>
|
||||
</noscript>
|
||||
<script src="./main.js" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,191 @@
|
||||
(() => {
|
||||
const body = document.body;
|
||||
const root = document.documentElement;
|
||||
const header = document.querySelector('.site-header');
|
||||
const revealItems = [...document.querySelectorAll('[data-reveal]')];
|
||||
const cards = [...document.querySelectorAll('.collage-card')];
|
||||
const motionToggle = document.querySelector('#motion-toggle');
|
||||
const musicToggle = document.querySelector('#music-toggle');
|
||||
const backgroundMusic = document.querySelector('#background-music');
|
||||
const calligraphyField = document.querySelector('#calligraphy-field');
|
||||
const collectionBack = document.querySelector('.collection-back');
|
||||
const reduceMotion = window.matchMedia('(prefers-reduced-motion: reduce)');
|
||||
let motionPaused = reduceMotion.matches;
|
||||
let frameRequested = false;
|
||||
let calligraphyResizeTimer = 0;
|
||||
let calligraphyWidth = window.innerWidth;
|
||||
|
||||
collectionBack?.addEventListener('click', (event) => {
|
||||
if (window.parent === window) return;
|
||||
event.preventDefault();
|
||||
window.parent.postMessage(
|
||||
{ type: 'three-kingdoms-story-close' },
|
||||
window.location.origin,
|
||||
);
|
||||
});
|
||||
|
||||
const lantingPreface = `
|
||||
永和九年歲在癸丑暮春之初會於會稽山陰之蘭亭修禊事也群賢畢至少長咸集
|
||||
此地有崇山峻嶺茂林修竹又有清流激湍映帶左右引以為流觴曲水列坐其次
|
||||
雖無絲竹管弦之盛一觴一詠亦足以暢敘幽情是日也天朗氣清惠風和暢
|
||||
仰觀宇宙之大俯察品類之盛所以遊目騁懷足以極視聽之娛信可樂也
|
||||
夫人之相與俯仰一世或取諸懷抱晤言一室之內或因寄所託放浪形骸之外
|
||||
雖趣舍萬殊靜躁不同當其欣於所遇暫得於己快然自足不知老之將至
|
||||
及其所之既倦情隨事遷感慨係之矣向之所欣俯仰之間已為陳跡
|
||||
猶不能不以之興懷況修短隨化終期於盡古人云死生亦大矣豈不痛哉
|
||||
每覽昔人興感之由若合一契未嘗不臨文嗟悼不能喻之於懷
|
||||
固知一死生為虛誕齊彭殤為妄作後之視今亦猶今之視昔悲夫
|
||||
故列敘時人錄其所述雖世殊事異所以興懷其致一也後之覽者亦將有感於斯文
|
||||
`.replace(/[^\u3400-\u9fff]/g, '');
|
||||
|
||||
const randomBetween = (minimum, maximum) => minimum + Math.random() * (maximum - minimum);
|
||||
|
||||
const createCalligraphyField = () => {
|
||||
if (!calligraphyField) return;
|
||||
|
||||
const isCompact = window.innerWidth <= 680;
|
||||
const columnCount = isCompact ? 36 : Math.min(72, Math.max(48, Math.ceil(window.innerWidth / 28)));
|
||||
const source = lantingPreface + lantingPreface;
|
||||
const fragment = document.createDocumentFragment();
|
||||
const tones = ['#2d2821', '#2d2821', '#2d2821', '#874734', '#345f63'];
|
||||
let cursor = Math.floor(Math.random() * lantingPreface.length);
|
||||
|
||||
for (let index = 0; index < columnCount; index += 1) {
|
||||
const length = Math.floor(randomBetween(3, 8));
|
||||
const column = document.createElement('span');
|
||||
const fontSize = isCompact ? randomBetween(22, 48) : randomBetween(28, 78);
|
||||
const duration = randomBetween(0.8, 1.2) * (isCompact ? 68 : 82);
|
||||
|
||||
column.className = 'calligraphy-column';
|
||||
column.textContent = source.slice(cursor, cursor + length);
|
||||
column.style.setProperty('--top', `${randomBetween(-4, 82).toFixed(2)}vh`);
|
||||
column.style.setProperty('--start-x', `${randomBetween(106, 158).toFixed(2)}vw`);
|
||||
column.style.setProperty('--rest-x', `${randomBetween(2, 94).toFixed(2)}vw`);
|
||||
column.style.setProperty('--font-size', `${fontSize.toFixed(2)}px`);
|
||||
column.style.setProperty('--opacity', randomBetween(0.12, 0.4).toFixed(3));
|
||||
column.style.setProperty('--duration', `${duration.toFixed(2)}s`);
|
||||
column.style.setProperty('--delay', `${(-randomBetween(0, duration)).toFixed(2)}s`);
|
||||
column.style.setProperty('--tone', tones[Math.floor(Math.random() * tones.length)]);
|
||||
fragment.append(column);
|
||||
|
||||
cursor = (cursor + length) % lantingPreface.length;
|
||||
}
|
||||
|
||||
calligraphyField.replaceChildren(fragment);
|
||||
calligraphyWidth = window.innerWidth;
|
||||
};
|
||||
|
||||
const showAll = () => {
|
||||
revealItems.forEach((item) => item.classList.add('is-visible'));
|
||||
};
|
||||
|
||||
if ('IntersectionObserver' in window && !reduceMotion.matches) {
|
||||
const observer = new IntersectionObserver(
|
||||
(entries) => {
|
||||
entries.forEach((entry) => {
|
||||
if (!entry.isIntersecting) return;
|
||||
entry.target.classList.add('is-visible');
|
||||
observer.unobserve(entry.target);
|
||||
});
|
||||
},
|
||||
{ threshold: 0.12, rootMargin: '0px 0px -8% 0px' },
|
||||
);
|
||||
|
||||
revealItems.forEach((item) => observer.observe(item));
|
||||
window.addEventListener('pagehide', () => observer.disconnect(), { once: true });
|
||||
} else {
|
||||
showAll();
|
||||
}
|
||||
|
||||
const updateScrollEffects = () => {
|
||||
const scrollTop = window.scrollY;
|
||||
const scrollRange = Math.max(1, root.scrollHeight - window.innerHeight);
|
||||
const progress = Math.min(1, Math.max(0, scrollTop / scrollRange));
|
||||
|
||||
root.style.setProperty('--scroll-progress', progress.toFixed(4));
|
||||
header?.classList.toggle('is-scrolled', scrollTop > Math.max(90, window.innerHeight * 0.72));
|
||||
|
||||
if (!motionPaused && scrollTop < window.innerHeight * 1.15) {
|
||||
const heroProgress = Math.min(1, Math.max(0, scrollTop / window.innerHeight));
|
||||
cards.forEach((card, index) => {
|
||||
const direction = index % 2 === 0 ? -1 : 1;
|
||||
const distance = (14 + (index % 3) * 7) * heroProgress * direction;
|
||||
card.style.setProperty('--drift', `${distance.toFixed(2)}px`);
|
||||
});
|
||||
}
|
||||
|
||||
frameRequested = false;
|
||||
};
|
||||
|
||||
const requestScrollUpdate = () => {
|
||||
if (frameRequested) return;
|
||||
frameRequested = true;
|
||||
requestAnimationFrame(updateScrollEffects);
|
||||
};
|
||||
|
||||
const setMotionState = (paused) => {
|
||||
motionPaused = paused;
|
||||
body.classList.toggle('is-motion-paused', paused);
|
||||
motionToggle?.setAttribute('aria-pressed', String(paused));
|
||||
|
||||
if (motionToggle) {
|
||||
motionToggle.textContent = paused ? '恢复动态' : '暂停动态';
|
||||
}
|
||||
|
||||
if (paused) {
|
||||
cards.forEach((card) => card.style.setProperty('--drift', '0px'));
|
||||
showAll();
|
||||
} else {
|
||||
requestScrollUpdate();
|
||||
}
|
||||
};
|
||||
|
||||
const syncMusicState = () => {
|
||||
if (!musicToggle || !backgroundMusic) return;
|
||||
const isPlaying = !backgroundMusic.paused;
|
||||
musicToggle.setAttribute('aria-pressed', String(isPlaying));
|
||||
musicToggle.textContent = isPlaying ? '暂停音乐' : '播放音乐';
|
||||
};
|
||||
|
||||
const toggleMusic = async () => {
|
||||
if (!backgroundMusic || !musicToggle) return;
|
||||
|
||||
if (!backgroundMusic.paused) {
|
||||
backgroundMusic.pause();
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
await backgroundMusic.play();
|
||||
} catch {
|
||||
musicToggle.textContent = '音乐不可用';
|
||||
musicToggle.setAttribute('aria-pressed', 'false');
|
||||
}
|
||||
};
|
||||
|
||||
motionToggle?.addEventListener('click', () => setMotionState(!motionPaused));
|
||||
musicToggle?.addEventListener('click', toggleMusic);
|
||||
backgroundMusic?.addEventListener('play', syncMusicState);
|
||||
backgroundMusic?.addEventListener('pause', syncMusicState);
|
||||
backgroundMusic?.addEventListener('error', () => {
|
||||
if (musicToggle) musicToggle.textContent = '音乐不可用';
|
||||
});
|
||||
window.addEventListener('scroll', requestScrollUpdate, { passive: true });
|
||||
window.addEventListener('resize', requestScrollUpdate, { passive: true });
|
||||
window.addEventListener('resize', () => {
|
||||
window.clearTimeout(calligraphyResizeTimer);
|
||||
calligraphyResizeTimer = window.setTimeout(() => {
|
||||
if (Math.abs(window.innerWidth - calligraphyWidth) > 120) createCalligraphyField();
|
||||
}, 220);
|
||||
}, { passive: true });
|
||||
reduceMotion.addEventListener?.('change', (event) => setMotionState(event.matches));
|
||||
|
||||
requestAnimationFrame(() => {
|
||||
createCalligraphyField();
|
||||
if (backgroundMusic) backgroundMusic.volume = 0.28;
|
||||
syncMusicState();
|
||||
body.classList.add('is-ready');
|
||||
setMotionState(motionPaused);
|
||||
updateScrollEffects();
|
||||
});
|
||||
})();
|
||||
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1787640980513" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="14469" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M962 962H62V62h900v900zM162 862h700V162H162v700z" p-id="14470" fill="#2c2c2c"></path></svg>
|
||||
|
After Width: | Height: | Size: 425 B |
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1787640936341" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="12356" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M64.164369 555.936675 64.164369 466.466967l894.496507 0 0 89.469708L64.164369 555.936675 64.164369 555.936675zM466.676745 958.450075 466.676745 63.953567l89.469708 0 0 894.497531L466.676745 958.451098 466.676745 958.450075z" fill="#2c2c2c" p-id="12357"></path></svg>
|
||||
|
After Width: | Height: | Size: 600 B |
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1787640959653" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13428" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M512 928C282.624 928 96 741.376 96 512S282.624 96 512 96s416 186.624 416 416-186.624 416-416 416z m0-768C317.92 160 160 317.92 160 512s157.92 352 352 352 352-157.92 352-352S706.08 160 512 160z" fill="#2c2c2c" p-id="13429"></path></svg>
|
||||
|
After Width: | Height: | Size: 569 B |
@@ -0,0 +1,358 @@
|
||||
{
|
||||
"event": {
|
||||
"canonicalName": "高平陵之变",
|
||||
"aliases": [
|
||||
"高平陵之变",
|
||||
"高平陵政变",
|
||||
"正始之变"
|
||||
],
|
||||
"era": "三国·曹魏正始十年(同年四月改元嘉平)",
|
||||
"date": "正始十年正月甲午(249年2月5日)至正月戊戌(249年2月9日)",
|
||||
"place": "洛阳、高平陵、伊水南与洛水浮桥一带",
|
||||
"summary": "司马懿趁魏帝曹芳与曹爽兄弟出城谒陵控制洛阳,迫使曹爽交权,随后诛灭曹爽集团,曹魏实权由此转入司马氏之手。"
|
||||
},
|
||||
"narration": {
|
||||
"language": "zh-CN",
|
||||
"estimatedSeconds": 82,
|
||||
"fullText": "正始十年正月初六,十七岁的魏帝曹芳出洛阳,拜谒魏明帝高平陵。大将军曹爽和三位弟弟都随车驾出城,京师中枢一时空虚。太傅司马懿随即以郭太后诏令关闭城门,占据武库,又派兵控制洛水浮桥和曹爽兄弟军营。一封弹劾奏章被送到伊水南,要求曹爽交出兵权、以侯爵归第。曹爽扣下奏章,调来屯田兵,伐木设障,却迟迟不能决断。大司农桓范带印出城,劝他奉天子赴许昌,征召四方;只要皇帝在手,仍有翻盘的名义与粮饷。兄弟们从夜里犹疑到五更。司马懿又让尹大目传话,以洛水为誓,声称只会免官。曹爽最终投刀在地,说自己仍不失为富家翁,随即交权迎帝还宫。几天后,张当案供出所谓谋反计划,曹爽、曹羲、何晏、丁谧、桓范等被捕,以大逆罪夷三族。高平陵没有大战,却让曹魏的实权从曹氏宗亲手中滑向司马氏,此后再未真正回转。"
|
||||
},
|
||||
"scenes": [
|
||||
{
|
||||
"id": "01",
|
||||
"title": "帝车出城",
|
||||
"timePlace": "正始十年正月甲午清晨(249年2月5日),洛阳至高平陵途中",
|
||||
"purpose": "交代曹芳与曹爽兄弟同时离开洛阳,为司马懿控制京师制造窗口。",
|
||||
"narration": "正始十年正月初六,十七岁的魏帝曹芳出洛阳,拜谒魏明帝高平陵。大将军曹爽和三位弟弟都随车驾出城,京师中枢一时空虚。",
|
||||
"overlay": {
|
||||
"heading": "帝车出城",
|
||||
"line": "当皇帝与掌兵的兄弟一同离开,洛阳的城门便成了胜负。"
|
||||
},
|
||||
"people": [
|
||||
{
|
||||
"name": "曹芳",
|
||||
"office": "曹魏皇帝,时年十七",
|
||||
"action": "出城谒高平陵,政变期间被留在伊水南"
|
||||
},
|
||||
{
|
||||
"name": "曹爽",
|
||||
"office": "曹魏大将军、录尚书事",
|
||||
"action": "与皇帝同行,离开自己掌控的京师与军营"
|
||||
},
|
||||
{
|
||||
"name": "曹羲",
|
||||
"office": "曹魏中领军,曹爽之弟",
|
||||
"action": "随车驾出城"
|
||||
},
|
||||
{
|
||||
"name": "曹训",
|
||||
"office": "曹魏武卫将军,曹爽之弟",
|
||||
"action": "随车驾出城"
|
||||
},
|
||||
{
|
||||
"name": "曹彦",
|
||||
"office": "曹魏散骑常侍,曹爽之弟",
|
||||
"action": "随车驾出城"
|
||||
}
|
||||
],
|
||||
"image": {
|
||||
"original": "images/01-imperial-procession-gaoping.png",
|
||||
"delivery": "images/01-imperial-procession-gaoping.webp",
|
||||
"alt": "寒冷清晨,曹芳的车驾与曹爽兄弟离开洛阳城,沿冬日道路驶向高平陵。",
|
||||
"prompt": "Use case: historical-scene. Asset type: Digital Me historical event story frame, first image in a consistent five-image sequence, 16:9 landscape. Primary request: Scene 1, the Wei emperor Cao Fang leaves Luoyang to pay respects at the Gaoping Mausoleum on the morning of the sixth day of the first lunar month, 249 CE; Grand General Cao Shuang and his brothers accompany the imperial procession, unaware that the capital will soon be closed behind them. Scene/backdrop: winter road outside third-century Luoyang, distant rammed-earth city walls and timber gate architecture, bare trees, muted fields, imperial procession moving toward the mausoleum precinct without showing an anachronistic monumental tomb. Subject: Cao Fang, age about 17, dignified but young, glimpsed within a restrained dark-red imperial carriage; Cao Shuang, around 30s-40s, broad face, trimmed moustache and short beard, layered dark ochre command robe over restrained black-brown lacquered lamellar armor, riding beside the carriage; his brothers and disciplined guards follow. Style/medium: Chinese semi-realistic hand-painted historical illustration, fine restrained linework, soft color blocks, subtle paper grain, mature faces and expressive eyes, cinematic scale but not photorealistic, not CGI. Composition/framing: wide three-quarter view, procession moving across the lower middle of frame, Luoyang receding behind, generous clear negative space in the winter sky for later overlay, one main action only. Lighting/mood: cold pale winter morning, low exposure, thin haze, quiet foreboding rather than spectacle. Color palette: low-saturation dusty blue, warm grey, clay red, oatmeal, dark brown. Materials/textures: worn hemp and silk, lacquered lamellar plates, wooden carriage, packed-earth road. Constraints: period-plausible late Han / Three Kingdoms clothing, armor, vehicles and architecture; keep Cao Shuang's appearance consistent for later scenes; no baked-in names, no subtitles, no readable banners, no calligraphy, no logos, no watermark. Avoid: Ming or Qing armor and palace roofs, oversized golden armor, cavalry charge, battle, blood, fantasy, magic, gunpowder, modern objects, Japanese armor, opera makeup, famous film or game character likenesses.",
|
||||
"visualInference": "曹芳与曹爽的具体面貌、车驾样式、队列距离、城门外观、冬雪与晨雾均为视觉补全;史料只明确正月甲午车驾谒陵及曹爽兄弟皆从。"
|
||||
},
|
||||
"sources": [
|
||||
"《三国志·魏书·三少帝纪》",
|
||||
"《资治通鉴》卷七十五"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "02",
|
||||
"title": "洛阳闭门",
|
||||
"timePlace": "249年2月5日,洛阳城、武库与洛水浮桥",
|
||||
"purpose": "呈现司马懿政变的核心不是野战,而是迅速控制京师节点、军械与曹爽兄弟军营。",
|
||||
"narration": "太傅司马懿随即以郭太后诏令关闭城门,占据武库,又派兵控制洛水浮桥和曹爽兄弟军营。一封弹劾奏章被送到伊水南,要求曹爽交出兵权、以侯爵归第。",
|
||||
"overlay": {
|
||||
"heading": "洛阳闭门",
|
||||
"line": "城门、武库、浮桥与军营,在同一天换了主人。"
|
||||
},
|
||||
"people": [
|
||||
{
|
||||
"name": "司马懿",
|
||||
"office": "曹魏太傅、顾命大臣",
|
||||
"action": "奉太后令起兵,控制洛阳与洛水浮桥并上奏罢免曹爽"
|
||||
},
|
||||
{
|
||||
"name": "司马师",
|
||||
"office": "曹魏中护军,司马懿长子",
|
||||
"action": "参与政变部署并统率宫门兵力;具体同桥站位为视觉补全"
|
||||
},
|
||||
{
|
||||
"name": "高柔",
|
||||
"office": "曹魏司徒",
|
||||
"action": "持节代理大将军事,占据曹爽军营"
|
||||
},
|
||||
{
|
||||
"name": "王观",
|
||||
"office": "曹魏太仆",
|
||||
"action": "代理中领军事,占据曹羲军营"
|
||||
},
|
||||
{
|
||||
"name": "郭太后",
|
||||
"office": "曹魏皇太后",
|
||||
"action": "司马懿以其诏令实施罢免;本幕不直接入画"
|
||||
}
|
||||
],
|
||||
"image": {
|
||||
"original": "images/02-seize-luo-bridge.png",
|
||||
"delivery": "images/02-seize-luo-bridge.webp",
|
||||
"alt": "司马懿在冬日洛水浮桥桥头调度军士,兵马与军械通过浮桥,远处洛阳城门已经关闭。",
|
||||
"prompt": "Use case: historical-scene. Asset type: Digital Me historical event story frame, Scene 2 of the same five-image sequence, 16:9 landscape. Input images: Image 1 is a strict style, palette, worldbuilding and costume reference from Scene 1; create a genuinely new composition. Primary request: On the same day in 249 CE, Sima Yi invokes the Empress Dowager's order, closes Luoyang's gates, takes the imperial armory, deploys troops, and holds the floating bridge over the Luo River; show the decisive occupation of the bridge as the single main action. Scene/backdrop: winter Luo River at the edge of third-century Luoyang, timber pontoon bridge, dark rammed-earth gate complex closed in the middle distance, restrained armory carts and spears moving under guard. Subject: Sima Yi, age about 69, lean upright frame, long controlled face, silver-grey moustache and medium beard, hair bound under a plain black court cap, dark charcoal-brown command robe over restrained lacquered lamellar protection, standing at the bridgehead and directing disciplined troops; Sima Shi, mature man in his early 40s with a similar family resemblance and dark officer armor, nearby receiving orders; soldiers secure the bridge without fighting civilians. Style/medium: exactly the same Chinese semi-realistic hand-painted historical illustration as Image 1, fine restrained linework, soft color blocks, subtle paper grain, mature expressive faces, cinematic but not photorealistic and not CGI. Composition/framing: wide strategic bridge composition, Sima Yi and Sima Shi in the lower third, bridge leading toward the closed city gate, orderly troops form controlled lines, generous negative space over river mist for later overlay. Lighting/mood: cold late-morning winter light, low exposure, grey river haze, restrained urgency, no heroic triumph. Color palette: same low-saturation dusty blue, warm grey, clay red, oatmeal and dark brown as Image 1. Materials/textures: wet timber bridge, worn hemp, lacquered lamellar plates, rammed earth, dark river water. Constraints: preserve the exact visual style and late Han / Three Kingdoms material language of Image 1; establish Sima Yi's appearance for later scenes; no readable banners, no baked-in names, subtitles, calligraphy, logos or watermark. Avoid: battle melee, civilian massacre, blood, fantasy, magic, gunpowder, modern bridges, Ming/Qing armor or palace roofs, oversized gold, Japanese armor, opera makeup, famous film or game likenesses.",
|
||||
"visualInference": "把闭城、据武库、屯兵洛水浮桥与控制军营压缩为一幅战略构图;司马懿和司马师同站桥头、运载箱车、雪地与城桥距离并非史料明文。"
|
||||
},
|
||||
"sources": [
|
||||
"《资治通鉴》卷七十五",
|
||||
"《晋书·宣帝纪》"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "03",
|
||||
"title": "智囊出城",
|
||||
"timePlace": "249年2月5日夜,伊水南曹爽临时驻地",
|
||||
"purpose": "呈现曹爽仍握有皇帝、兵员、外援名义与粮饷工具,却无法把资源转化为决断。",
|
||||
"narration": "曹爽扣下奏章,调来屯田兵,伐木设障,却迟迟不能决断。大司农桓范带印出城,劝他奉天子赴许昌,征召四方;只要皇帝在手,仍有翻盘的名义与粮饷。",
|
||||
"overlay": {
|
||||
"heading": "智囊出城",
|
||||
"line": "天子、外兵、许昌与粮饷都在手边,唯独没有决断。"
|
||||
},
|
||||
"people": [
|
||||
{
|
||||
"name": "桓范",
|
||||
"office": "曹魏大司农",
|
||||
"action": "携大司农印出城,劝曹爽奉天子赴许昌、征召四方"
|
||||
},
|
||||
{
|
||||
"name": "曹爽",
|
||||
"office": "曹魏大将军",
|
||||
"action": "留车驾于伊水南,伐木设障,面对桓范建议仍犹疑不决"
|
||||
},
|
||||
{
|
||||
"name": "曹羲",
|
||||
"office": "曹魏中领军",
|
||||
"action": "与曹爽同议,沉默不从桓范之策"
|
||||
},
|
||||
{
|
||||
"name": "曹芳",
|
||||
"office": "曹魏皇帝",
|
||||
"action": "被留在伊水南行在;仅作远景,不渲染为被捆绑的人质"
|
||||
}
|
||||
],
|
||||
"image": {
|
||||
"original": "images/03-huan-fan-counsel.png",
|
||||
"delivery": "images/03-huan-fan-counsel.webp",
|
||||
"alt": "伊水南夜营里,桓范把大司农印放在无字路线草图旁,急切劝说犹疑的曹爽与曹羲。",
|
||||
"prompt": "Use case: historical-scene. Asset type: Digital Me historical event story frame, Scene 3 of the same five-image sequence, 16:9 landscape. Input images: Images 1 and 2 are strict references for the exact hand-painted style, palette, late Han / Three Kingdoms material world and established Cao Shuang appearance; create a new composition. Primary request: At the improvised encampment south of the Yi River on the night of the coup in 249 CE, Grand Minister of Agriculture Huan Fan arrives with his official seal and urgently advises Cao Shuang to take the young emperor to Xuchang and call the regional armies; Cao Shuang listens but cannot decide. Scene/backdrop: rough winter field encampment south of the Yi River, felled timber arranged as simple defensive obstacles, restrained tents, horses and a small imperial carriage in the deep background, cold night wind. Subject: Cao Shuang must match his established broad face, trimmed moustache and short beard, dark ochre command robe and black-brown lamellar armor from Scene 1; he stands tense and hesitant over a low campaign map table. Huan Fan, late middle-aged, narrow intelligent face, grey-streaked beard, dark scholar-official robe and plain court cap, leans forward and places a cloth-wrapped official seal beside a simple route map, urgently pointing toward the Xuchang route. Cao Xi stands nearby silent and worried. The teenage emperor Cao Fang is only a distant guarded silhouette and not treated as a prop. Style/medium: exactly the same Chinese semi-realistic hand-painted historical illustration, fine restrained linework, soft color blocks, subtle paper grain, mature expressive eyes, cinematic but not photorealistic and not CGI. Composition/framing: intimate medium-wide triangular composition around the low map table; Huan Fan's seal and pointing hand lead toward Cao Shuang's indecision; one main action only; negative space in the dark tent opening and cold sky for later overlay. Lighting/mood: low-exposure winter night, one shielded oil lamp and faint blue moon haze, urgent but controlled, facial tension carried by eyes, jaw and hands rather than shouting. Color palette: same low-saturation dusty blue, warm grey, clay red, oatmeal and dark brown. Materials/textures: worn wool and hemp tent cloth, bamboo and wooden map table, lacquered armor, plain bronze seal fitting without readable inscription. Constraints: preserve Cao Shuang's identity and costume from Scene 1 and the exact visual language of both references; no readable map labels, banners or seal text; no baked-in names, subtitles, calligraphy, logos or watermark. Avoid: sword fight, armies clashing, blood, melodramatic screaming, emperor in chains, fantasy, magic, modern map, Ming/Qing armor or furniture, oversized gold, Japanese armor, opera makeup, famous film or game likenesses.",
|
||||
"visualInference": "桓范与曹爽在地图桌前同框、印章形制、路线草图、帐篷布局、人物站位和月色为镜头化补全;无字草图不代表保存下来的真实军图。"
|
||||
},
|
||||
"sources": [
|
||||
"《三国志·魏书·曹爽传》及裴松之注",
|
||||
"《资治通鉴》卷七十五",
|
||||
"《晋书·宣帝纪》"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "04",
|
||||
"title": "五鼓投刀",
|
||||
"timePlace": "249年2月6日前后五更,伊水南曹爽临时驻地",
|
||||
"purpose": "以曹爽投刀这一具体动作表现彻夜犹疑后的投降决策,以及洛水誓言发挥的作用。",
|
||||
"narration": "兄弟们从夜里犹疑到五更。司马懿又让尹大目传话,以洛水为誓,声称只会免官。曹爽最终投刀在地,说自己仍不失为富家翁,随即交权迎帝还宫。",
|
||||
"overlay": {
|
||||
"heading": "五鼓投刀",
|
||||
"line": "一声刀落,失去的已不只是大将军印。"
|
||||
},
|
||||
"people": [
|
||||
{
|
||||
"name": "曹爽",
|
||||
"office": "曹魏大将军",
|
||||
"action": "五更投刀,接受免官并迎帝还洛阳"
|
||||
},
|
||||
{
|
||||
"name": "桓范",
|
||||
"office": "曹魏大司农",
|
||||
"action": "反复劝阻失败,预见曹爽与自己将遭族灭"
|
||||
},
|
||||
{
|
||||
"name": "曹羲",
|
||||
"office": "曹魏中领军",
|
||||
"action": "彻夜犹疑,最终随兄交权"
|
||||
},
|
||||
{
|
||||
"name": "尹大目",
|
||||
"office": "曹魏殿中校尉、曹爽所信之人",
|
||||
"action": "受司马懿派遣,以洛水为誓传达只免官的承诺;不在本幕画面"
|
||||
}
|
||||
],
|
||||
"image": {
|
||||
"original": "images/04-cao-shuang-drops-dao.png",
|
||||
"delivery": "images/04-cao-shuang-drops-dao.webp",
|
||||
"alt": "将近黎明的军帐中,曹爽松手让短刀落向地面,桓范扶案望着他,神情悲愤而克制。",
|
||||
"prompt": "Use case: historical-scene. Asset type: Digital Me historical event story frame, Scene 4 of the same five-image sequence, 16:9 landscape. Input images: Images 1-3 are strict references for the exact hand-painted style, palette, late Han / Three Kingdoms world, Cao Shuang identity, Huan Fan identity, and the same field encampment; create a new composition and later moment. Primary request: Before dawn after a night of hesitation in 249 CE, Cao Shuang drops his weapon to the ground and chooses to accept dismissal and return the emperor to Luoyang, believing he can remain a wealthy marquis; Huan Fan realizes the decision will destroy them. Scene/backdrop: the same rough winter field encampment south of the Yi River, tent flap open to a blue-grey predawn, lamp nearly spent, timber defensive obstacles and quiet guards outside. Subject: Cao Shuang must exactly match his established broad face, trimmed moustache and short beard, dark ochre command robe and black-brown lamellar armor; his right hand has just released a plain short military dao that is visibly falling or has just struck the packed earth beside the low map table, while his shoulders settle in exhausted resignation. Huan Fan must match Scene 3, recoiling with grief and restrained disbelief, one hand braced on the table. Cao Xi stands silent in shadow. No one attacks. Style/medium: exactly the same Chinese semi-realistic hand-painted historical illustration, fine restrained linework, soft color blocks, subtle paper grain, mature expressive eyes, cinematic but not photorealistic and not CGI. Composition/framing: medium-wide side angle, the dropped dao low in the foreground as the decisive focal point, Cao Shuang centered but not heroic, Huan Fan offset in anguished stillness, predawn negative space through the tent opening for later overlay; one main action only. Lighting/mood: low-exposure blue predawn, dying amber oil lamp, a long night ending in irreversible resignation; emotion through lowered gaze, hands, jaw and breath rather than theatrical shouting. Color palette: same low-saturation dusty blue, warm grey, clay red, oatmeal and dark brown. Materials/textures: worn hemp tent, packed earth, lacquered armor, plain iron blade, bamboo and wood table. Constraints: preserve character identity, costume and environmental continuity from the reference images; no readable maps, banners or documents; no baked-in names, subtitles, calligraphy, logos or watermark. Avoid: suicide, self-harm, sword fight, blood, execution, Huan Fan physically attacking Cao Shuang, melodramatic screaming, fantasy, magic, Ming/Qing armor or furniture, oversized gold, Japanese armor, opera makeup, famous film or game likenesses.",
|
||||
"visualInference": "投刀是史籍明载;刀的形制与下落瞬间、帐内陈设、将晓天色、灯火和人物微表情属于视觉补全。"
|
||||
},
|
||||
"sources": [
|
||||
"《三国志·魏书·曹爽传》裴松之注引《魏氏春秋》",
|
||||
"《资治通鉴》卷七十五",
|
||||
"《晋书·宣帝纪》"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "05",
|
||||
"title": "归第成狱",
|
||||
"timePlace": "249年2月6日至2月9日,洛阳曹爽宅第与廷尉治所",
|
||||
"purpose": "交代免官承诺之后的围守、逮捕与诛族,点明事件真正结果是权力结构不可逆转。",
|
||||
"narration": "几天后,张当案供出所谓谋反计划,曹爽、曹羲、何晏、丁谧、桓范等被捕,以大逆罪夷三族。高平陵没有大战,却让曹魏的实权从曹氏宗亲手中滑向司马氏,此后再未真正回转。",
|
||||
"overlay": {
|
||||
"heading": "归第成狱",
|
||||
"line": "承诺止于免官,清算却越过了整座宅门。"
|
||||
},
|
||||
"people": [
|
||||
{
|
||||
"name": "曹爽",
|
||||
"office": "故大将军、武安侯",
|
||||
"action": "免官归第后遭围守,继而被捕处死并夷三族"
|
||||
},
|
||||
{
|
||||
"name": "曹羲",
|
||||
"office": "故中领军",
|
||||
"action": "随曹爽归第,后被捕处死并夷三族"
|
||||
},
|
||||
{
|
||||
"name": "桓范",
|
||||
"office": "曹魏大司农",
|
||||
"action": "因出城投曹爽及相关指控被捕处死并夷三族"
|
||||
},
|
||||
{
|
||||
"name": "何晏",
|
||||
"office": "曹魏尚书",
|
||||
"action": "在张当案后与曹爽集团一并被捕处死"
|
||||
},
|
||||
{
|
||||
"name": "司马懿",
|
||||
"office": "曹魏太傅",
|
||||
"action": "控制政局并主持对曹爽集团的清算;不在本幕画面"
|
||||
}
|
||||
],
|
||||
"image": {
|
||||
"original": "images/05-arrested-in-luoyang.png",
|
||||
"delivery": "images/05-arrested-in-luoyang.webp",
|
||||
"alt": "洛阳冬日清晨,卸去甲胄的曹爽与桓范等官员在军士看守下离开被封闭监视的宅第。",
|
||||
"prompt": "Use case: historical-scene. Asset type: Digital Me historical event story frame, Scene 5 and final image of the same five-image sequence, 16:9 landscape. Input images: Images 1-4 are strict references for the exact hand-painted style, palette, late Han / Three Kingdoms material world, Cao Shuang identity and Huan Fan identity; create a new final composition. Primary request: In the days after Cao Shuang returns the emperor to Luoyang and accepts dismissal in 249 CE, his residence is surrounded and watched; Cao Shuang, Huan Fan and allied officials are then taken into custody. Show arrest and political finality without depicting execution. Scene/backdrop: cold winter morning on a quiet third-century Luoyang street before a large but restrained noble residence with sealed timber gates, simple temporary observation platforms at the corners, disciplined guards controlling the lane. Subject: Cao Shuang must exactly match his established broad face, trimmed moustache and short beard, now without armor, wearing a plain dark ochre layered robe and lowered court cap, walking under guard with exhausted recognition. Huan Fan must match his established narrow intelligent face and grey-streaked beard, beside or slightly behind him in a plain official robe. Two or three other sober court officials suggest the arrested faction without individualized spectacle. Guards carry sheathed weapons and keep distance; no humiliation and no mob. Style/medium: exactly the same Chinese semi-realistic hand-painted historical illustration, fine restrained linework, soft color blocks, subtle paper grain, mature expressive eyes, cinematic but not photorealistic and not CGI. Composition/framing: wide layered street composition; escorted figures cross the lower third, sealed residence and observation platform establish confinement behind them, empty pale sky and wall provide negative space for later overlay; one main action only. Lighting/mood: cold flat winter dawn after crisis, low exposure, muted silence, irreversible political transfer rather than victory celebration. Color palette: same low-saturation dusty blue, warm grey, clay red, oatmeal and dark brown. Materials/textures: worn hemp and silk robes, rammed earth walls, timber gates, frost on packed road, restrained lacquered armor on guards. Constraints: preserve Cao Shuang and Huan Fan identities and the sequence's exact visual language; historically plausible third-century clothing and city materials; no execution, corpses or blood; no readable arrest warrant, banners, seal text, baked-in names, subtitles, calligraphy, logos or watermark. Avoid: public beheading, torture, bound children or family members, gore, cheering crowd, heroic triumph pose, fantasy, magic, gunpowder, modern prison, Ming/Qing armor or palace roofs, oversized gold, Japanese armor, opera makeup, famous film or game likenesses.",
|
||||
"visualInference": "史料明确曹爽归第后被围守,几日后集团成员被捕并夷三族;把宅第围守与多人被押解合并在同一清晨,宅门、望楼、人物队列、霜雪与具体服饰均为视觉补全。"
|
||||
},
|
||||
"sources": [
|
||||
"《三国志·魏书·三少帝纪》",
|
||||
"《三国志·魏书·曹爽传》",
|
||||
"《资治通鉴》卷七十五",
|
||||
"《晋书·宣帝纪》"
|
||||
]
|
||||
}
|
||||
],
|
||||
"bgm": {
|
||||
"catalogId": "seed-music-v1:linjiu:广陵散·今译",
|
||||
"title": "广陵散·今译",
|
||||
"version": "建议制作 76 BPM、无主唱纯伴奏的高平陵剪辑版",
|
||||
"status": "pending-export",
|
||||
"pathOrUrl": "",
|
||||
"usage": "使用项目设定中的箫起头、弦乐垫底思路,加入克制的古琴断奏与低频鼓点;若后续生成含人声版本,只使用伴奏或去人声 stem,并始终让位于旁白。",
|
||||
"reason": "这场事件的叙事不是战场冲锋,而是从出城、闭门、劝策、投刀到清算的政治断裂;《广陵散·今译》的古曲骨架与现代低弦更适合表现压抑、倒计时和不可逆转的权力转移。",
|
||||
"cues": [
|
||||
{
|
||||
"from": "00:00",
|
||||
"to": "00:14",
|
||||
"scene": "01",
|
||||
"direction": "单箫与疏淡古琴起句,车驾离城时保持空旷,不加入胜利性鼓点。"
|
||||
},
|
||||
{
|
||||
"from": "00:14",
|
||||
"to": "00:31",
|
||||
"scene": "02",
|
||||
"direction": "低弦持续音进入,木质低鼓以均匀间隔推进,表现城门与浮桥被逐一控制。"
|
||||
},
|
||||
{
|
||||
"from": "00:31",
|
||||
"to": "00:49",
|
||||
"scene": "03",
|
||||
"direction": "古琴断奏加密但压低音量;桓范提出许昌方案时短暂抬升,仍不给英雄高潮。"
|
||||
},
|
||||
{
|
||||
"from": "00:49",
|
||||
"to": "01:05",
|
||||
"scene": "04",
|
||||
"direction": "撤去鼓点,只留低弦、箫气声与稀疏拨弦;刀落后留半秒静默。"
|
||||
},
|
||||
{
|
||||
"from": "01:05",
|
||||
"to": "01:22",
|
||||
"scene": "05",
|
||||
"direction": "低弦重新进入却不解决和声,结尾让古琴动机停在未完成音上,呼应曹魏权力从此失衡。"
|
||||
}
|
||||
]
|
||||
},
|
||||
"sources": [
|
||||
{
|
||||
"claim": "正月甲午车驾谒高平陵、曹爽兄弟被免官及戊戌诛族",
|
||||
"citation": "《三国志·魏书·三少帝纪》",
|
||||
"url": "https://zh.wikisource.org/zh-hans/三國志/卷04"
|
||||
},
|
||||
{
|
||||
"claim": "曹爽留驾伊水南、桓范劝赴许昌、洛水誓、投刀与随后收捕诛族",
|
||||
"citation": "《三国志·魏书·曹爽传》及裴松之注",
|
||||
"url": "https://zh.wikisource.org/zh-hans/三國志/卷09"
|
||||
},
|
||||
{
|
||||
"claim": "闭城、据武库、屯洛水浮桥、占曹爽兄弟军营、桓范献策与清算先后",
|
||||
"citation": "《资治通鉴》卷七十五",
|
||||
"url": "https://zh.wikisource.org/zh-hans/資治通鑑/卷075"
|
||||
},
|
||||
{
|
||||
"claim": "司马懿一方关于政变部署、洛水誓与诛曹爽集团的叙述;使用时注意晋室立场",
|
||||
"citation": "《晋书·宣帝纪》",
|
||||
"url": "https://zh.wikisource.org/zh-hans/晉書/卷001"
|
||||
},
|
||||
{
|
||||
"claim": "公历日期换算为249年2月5日",
|
||||
"citation": "维基百科《高平陵之变》日期栏(仅作历日换算参考)",
|
||||
"url": "https://zh.wikipedia.org/wiki/高平陵之变"
|
||||
},
|
||||
{
|
||||
"claim": "项目内《广陵散·今译》曲目、古曲改编设定与当前无实际音频状态",
|
||||
"citation": "digital-me-backend/scripts/seed-music.js"
|
||||
}
|
||||
],
|
||||
"blacklist": [
|
||||
"把高平陵之变画成两军在洛阳街头或高平陵前大规模会战",
|
||||
"让司马懿、曹爽在洛水浮桥或高平陵面对面谈判、决斗",
|
||||
"把司马懿诈病吐粥的前史挪到政变当天",
|
||||
"把三千死士的精确人数、集结方式与战斗画成各家史料一致的确定事实",
|
||||
"把郭太后画成亲临城门或军阵指挥",
|
||||
"把雪、月色、路线草图、人物面貌、宅第望楼与具体服饰写成史料明载",
|
||||
"渲染曹爽家属和未成年人受刑,或制作斩首、肢解、血泊等处刑特写",
|
||||
"把司马懿一方奏章中的所有指控直接当作无争议事实",
|
||||
"给双方写未经可靠核对的确定兵力总数",
|
||||
"明清盔甲、明清城楼、龙椅式皇车、京剧脸谱、火药爆炸、现代地图或现代监狱",
|
||||
"复制影视剧、动漫或游戏中的司马懿、曹爽与曹芳形象"
|
||||
],
|
||||
"storyWeb": {
|
||||
"entry": "../index.html",
|
||||
"template": "historical-battle-assets/story-template-v1",
|
||||
"calligraphy": {
|
||||
"text": "兰亭集序",
|
||||
"font": "../assets/fonts/YunFengJingLongXingShu-2.ttf",
|
||||
"required": true
|
||||
},
|
||||
"previews": [
|
||||
"../preview-desktop.png",
|
||||
"../preview-mobile.png"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,180 @@
|
||||
# 高平陵之变|素材说明
|
||||
|
||||
- 用户原称:高平陵之变
|
||||
- 规范事件名:高平陵之变
|
||||
- 别称:高平陵政变、正始之变
|
||||
- 时代:三国·曹魏正始十年;同年四月改元嘉平
|
||||
- 时间:正始十年正月甲午至戊戌,即公元249年2月5日至2月9日
|
||||
- 地点:洛阳、高平陵、伊水南与洛水浮桥一带
|
||||
- 一句话结论:司马懿趁魏帝曹芳与曹爽兄弟出城谒陵控制洛阳,迫使曹爽交权,随后诛灭曹爽集团,曹魏实权由此转入司马氏之手。
|
||||
|
||||
> 纪年说明:《三国志》《晋书》《资治通鉴》常把该年系为“嘉平元年”,但曹魏至当年四月才由正始十年改元嘉平;本包标题信息同时保留“正始十年”和史书常用的“嘉平元年”语境。公历日期只作便于剪辑的历日换算,甲午、戊戌干支日期以史籍为准。
|
||||
|
||||
## 约 82 秒主旁白
|
||||
|
||||
正始十年正月初六,十七岁的魏帝曹芳出洛阳,拜谒魏明帝高平陵。大将军曹爽和三位弟弟都随车驾出城,京师中枢一时空虚。太傅司马懿随即以郭太后诏令关闭城门,占据武库,又派兵控制洛水浮桥和曹爽兄弟军营。一封弹劾奏章被送到伊水南,要求曹爽交出兵权、以侯爵归第。曹爽扣下奏章,调来屯田兵,伐木设障,却迟迟不能决断。大司农桓范带印出城,劝他奉天子赴许昌,征召四方;只要皇帝在手,仍有翻盘的名义与粮饷。兄弟们从夜里犹疑到五更。司马懿又让尹大目传话,以洛水为誓,声称只会免官。曹爽最终投刀在地,说自己仍不失为富家翁,随即交权迎帝还宫。几天后,张当案供出所谓谋反计划,曹爽、曹羲、何晏、丁谧、桓范等被捕,以大逆罪夷三族。高平陵没有大战,却让曹魏的实权从曹氏宗亲手中滑向司马氏,此后再未真正回转。
|
||||
|
||||
## 分幕素材
|
||||
|
||||
### 第一幕|帝车出城
|
||||
|
||||
- 时间地点:正始十年正月甲午清晨(249年2月5日),洛阳至高平陵途中
|
||||
- 叙事作用:交代曹芳与曹爽兄弟同时离开洛阳,为司马懿控制京师制造窗口。
|
||||
- 旁白:正始十年正月初六,十七岁的魏帝曹芳出洛阳,拜谒魏明帝高平陵。大将军曹爽和三位弟弟都随车驾出城,京师中枢一时空虚。
|
||||
- 叠字标题:帝车出城
|
||||
- 一句短文案:当皇帝与掌兵的兄弟一同离开,洛阳的城门便成了胜负。
|
||||
- 人物标签:
|
||||
- 曹芳/曹魏皇帝,时年十七/出城谒高平陵,政变期间被留在伊水南
|
||||
- 曹爽/曹魏大将军、录尚书事/与皇帝同行,离开自己掌控的京师与军营
|
||||
- 曹羲/曹魏中领军、曹爽之弟/随车驾出城
|
||||
- 曹训/曹魏武卫将军、曹爽之弟/随车驾出城
|
||||
- 曹彦/曹魏散骑常侍、曹爽之弟/随车驾出城
|
||||
- 图片:`images/01-imperial-procession-gaoping.png`、`images/01-imperial-procession-gaoping.webp`
|
||||
- 画面说明:寒冷清晨,曹芳的车驾与曹爽兄弟离开洛阳城,沿冬日道路驶向高平陵;城门逐渐退到远景。
|
||||
- 替代文本:寒冷清晨,曹芳的车驾与曹爽兄弟离开洛阳城,沿冬日道路驶向高平陵。
|
||||
- 最终提示词摘要:249年冬日洛阳城外,少年皇帝车驾出城,曹爽兄弟随行;中国半写实手绘、低饱和尘青暖灰、纸张肌理、16:9、无文字。
|
||||
- 视觉补全:曹芳与曹爽的具体面貌、车驾样式、队列距离、城门外观、冬雪与晨雾均非史料明文。
|
||||
- 史实依据:《三国志·魏书·三少帝纪》;《资治通鉴》卷七十五。
|
||||
|
||||
### 第二幕|洛阳闭门
|
||||
|
||||
- 时间地点:249年2月5日,洛阳城、武库与洛水浮桥
|
||||
- 叙事作用:呈现司马懿政变的核心不是野战,而是迅速控制京师节点、军械与曹爽兄弟军营。
|
||||
- 旁白:太傅司马懿随即以郭太后诏令关闭城门,占据武库,又派兵控制洛水浮桥和曹爽兄弟军营。一封弹劾奏章被送到伊水南,要求曹爽交出兵权、以侯爵归第。
|
||||
- 叠字标题:洛阳闭门
|
||||
- 一句短文案:城门、武库、浮桥与军营,在同一天换了主人。
|
||||
- 人物标签:
|
||||
- 司马懿/曹魏太傅、顾命大臣/奉太后令起兵,控制洛阳与洛水浮桥并上奏罢免曹爽
|
||||
- 司马师/曹魏中护军、司马懿长子/参与政变部署并统率宫门兵力;具体同桥站位为视觉补全
|
||||
- 高柔/曹魏司徒/持节代理大将军事,占据曹爽军营
|
||||
- 王观/曹魏太仆/代理中领军事,占据曹羲军营
|
||||
- 郭太后/曹魏皇太后/司马懿以其诏令实施罢免;本幕不直接入画
|
||||
- 图片:`images/02-seize-luo-bridge.png`、`images/02-seize-luo-bridge.webp`
|
||||
- 画面说明:司马懿在洛水浮桥桥头调度军士,兵马与军械在桥上有序移动,远处洛阳城门已经关闭。
|
||||
- 替代文本:司马懿在冬日洛水浮桥桥头调度军士,兵马与军械通过浮桥,远处洛阳城门已经关闭。
|
||||
- 最终提示词摘要:司马懿与司马师在洛水浮桥控制兵马,远处洛阳闭门;战略构图、无巷战、无平民伤亡、16:9、无文字。
|
||||
- 视觉补全:画面把闭城、据武库、屯兵浮桥与控制军营压缩为同一镜头;人物桥头站位、运载箱车、雪地与城桥距离均为重构。
|
||||
- 史实依据:《资治通鉴》卷七十五;《晋书·宣帝纪》。
|
||||
|
||||
### 第三幕|智囊出城
|
||||
|
||||
- 时间地点:249年2月5日夜,伊水南曹爽临时驻地
|
||||
- 叙事作用:呈现曹爽仍握有皇帝、兵员、外援名义与粮饷工具,却无法把资源转化为决断。
|
||||
- 旁白:曹爽扣下奏章,调来屯田兵,伐木设障,却迟迟不能决断。大司农桓范带印出城,劝他奉天子赴许昌,征召四方;只要皇帝在手,仍有翻盘的名义与粮饷。
|
||||
- 叠字标题:智囊出城
|
||||
- 一句短文案:天子、外兵、许昌与粮饷都在手边,唯独没有决断。
|
||||
- 人物标签:
|
||||
- 桓范/曹魏大司农/携大司农印出城,劝曹爽奉天子赴许昌、征召四方
|
||||
- 曹爽/曹魏大将军/留车驾于伊水南,伐木设障,面对桓范建议仍犹疑不决
|
||||
- 曹羲/曹魏中领军/与曹爽同议,沉默不从桓范之策
|
||||
- 曹芳/曹魏皇帝/被留在伊水南行在;仅作远景,不渲染为被捆绑的人质
|
||||
- 图片:`images/03-huan-fan-counsel.png`、`images/03-huan-fan-counsel.webp`
|
||||
- 画面说明:夜营中,桓范把大司农印放在无字路线草图旁,指向许昌方向;曹爽与曹羲面对方案仍无法作答。
|
||||
- 替代文本:伊水南夜营里,桓范把大司农印放在无字路线草图旁,急切劝说犹疑的曹爽与曹羲。
|
||||
- 最终提示词摘要:伊水南冬夜营帐,桓范以印章和路线草图劝曹爽赴许昌,曹爽犹疑;克制微表情、低曝光、16:9、无文字。
|
||||
- 视觉补全:地图桌同框、印章形制、路线草图、帐篷布局、人物站位和月色为镜头化处理;无字草图不代表保存下来的真实军图。
|
||||
- 史实依据:《三国志·魏书·曹爽传》及裴松之注;《资治通鉴》卷七十五;《晋书·宣帝纪》。
|
||||
|
||||
### 第四幕|五鼓投刀
|
||||
|
||||
- 时间地点:249年2月6日前后五更,伊水南曹爽临时驻地
|
||||
- 叙事作用:以曹爽投刀这一具体动作表现彻夜犹疑后的投降决策,以及洛水誓言发挥的作用。
|
||||
- 旁白:兄弟们从夜里犹疑到五更。司马懿又让尹大目传话,以洛水为誓,声称只会免官。曹爽最终投刀在地,说自己仍不失为富家翁,随即交权迎帝还宫。
|
||||
- 叠字标题:五鼓投刀
|
||||
- 一句短文案:一声刀落,失去的已不只是大将军印。
|
||||
- 人物标签:
|
||||
- 曹爽/曹魏大将军/五更投刀,接受免官并迎帝还洛阳
|
||||
- 桓范/曹魏大司农/反复劝阻失败,预见曹爽与自己将遭族灭
|
||||
- 曹羲/曹魏中领军/彻夜犹疑,最终随兄交权
|
||||
- 尹大目/曹魏殿中校尉、曹爽所信之人/受司马懿派遣,以洛水为誓传达只免官的承诺;不在本幕画面
|
||||
- 图片:`images/04-cao-shuang-drops-dao.png`、`images/04-cao-shuang-drops-dao.webp`
|
||||
- 画面说明:将近黎明的军帐中,曹爽松手让短刀落向地面,桓范扶案望着他;这是决策崩塌,不是自残或决斗。
|
||||
- 替代文本:将近黎明的军帐中,曹爽松手让短刀落向地面,桓范扶案望着他,神情悲愤而克制。
|
||||
- 最终提示词摘要:五更前蓝灰军帐,曹爽投刀、桓范悲愤、曹羲沉默;刀落为唯一动作,拒绝打斗与夸张表演,16:9、无文字。
|
||||
- 视觉补全:投刀是史籍明载;刀的形制与下落瞬间、帐内陈设、将晓天色、灯火和人物微表情属于视觉补全。
|
||||
- 史实依据:《三国志·魏书·曹爽传》裴松之注引《魏氏春秋》;《资治通鉴》卷七十五;《晋书·宣帝纪》。
|
||||
|
||||
### 第五幕|归第成狱
|
||||
|
||||
- 时间地点:249年2月6日至2月9日,洛阳曹爽宅第与廷尉治所
|
||||
- 叙事作用:交代免官承诺之后的围守、逮捕与诛族,点明事件真正结果是权力结构不可逆转。
|
||||
- 旁白:几天后,张当案供出所谓谋反计划,曹爽、曹羲、何晏、丁谧、桓范等被捕,以大逆罪夷三族。高平陵没有大战,却让曹魏的实权从曹氏宗亲手中滑向司马氏,此后再未真正回转。
|
||||
- 叠字标题:归第成狱
|
||||
- 一句短文案:承诺止于免官,清算却越过了整座宅门。
|
||||
- 人物标签:
|
||||
- 曹爽/故大将军、武安侯/免官归第后遭围守,继而被捕处死并夷三族
|
||||
- 曹羲/故中领军/随曹爽归第,后被捕处死并夷三族
|
||||
- 桓范/曹魏大司农/因出城投曹爽及相关指控被捕处死并夷三族
|
||||
- 何晏/曹魏尚书/在张当案后与曹爽集团一并被捕处死
|
||||
- 司马懿/曹魏太傅/控制政局并主持对曹爽集团的清算;不在本幕画面
|
||||
- 图片:`images/05-arrested-in-luoyang.png`、`images/05-arrested-in-luoyang.webp`
|
||||
- 画面说明:卸去甲胄的曹爽、桓范等在军士看守下离开被封闭监视的宅第;画面止于押解,不展示处刑或家属受难。
|
||||
- 替代文本:洛阳冬日清晨,卸去甲胄的曹爽与桓范等官员在军士看守下离开被封闭监视的宅第。
|
||||
- 最终提示词摘要:洛阳冬日清晨,被望楼监视的宅第外,曹爽、桓范等遭押解;无捆绑羞辱、无处刑、无血腥,16:9、无文字。
|
||||
- 视觉补全:把宅第围守与多人被押解合并在同一清晨;宅门、望楼、人物队列、霜雪与具体服饰均为视觉补全。
|
||||
- 史实依据:《三国志·魏书·三少帝纪》;《三国志·魏书·曹爽传》;《资治通鉴》卷七十五;《晋书·宣帝纪》。
|
||||
|
||||
## BGM 选择
|
||||
|
||||
- 选中曲目:项目曲库种子键 `seed-music-v1:linjiu:广陵散·今译`《广陵散·今译》
|
||||
- 版本:建议制作 76 BPM、无主唱纯伴奏的“高平陵剪辑版”
|
||||
- 项目状态:待生成/待导出;仓库当前只有曲目与创作说明,没有 `audioUrl` 或本地对应音频,素材包不附 MP3。
|
||||
- 使用方式:沿用项目设定的“箫起头、弦乐垫底”,加入克制古琴断奏和低频鼓点;如果后续生成含人声版本,只使用伴奏或去人声 stem,并始终让位于旁白。
|
||||
- 选择理由:这场事件的叙事不是战场冲锋,而是从出城、闭门、劝策、投刀到清算的政治断裂;《广陵散·今译》的古曲骨架与现代低弦更适合表现压抑、倒计时和不可逆转的权力转移。
|
||||
|
||||
### Cue sheet
|
||||
|
||||
| 时间 | 幕次 | 剪辑方向 |
|
||||
| --- | --- | --- |
|
||||
| 00:00–00:14 | 01 | 单箫与疏淡古琴起句,车驾离城时保持空旷,不加入胜利性鼓点。 |
|
||||
| 00:14–00:31 | 02 | 低弦持续音进入,木质低鼓以均匀间隔推进,表现城门与浮桥被逐一控制。 |
|
||||
| 00:31–00:49 | 03 | 古琴断奏加密但压低音量;桓范提出许昌方案时短暂抬升,仍不给英雄高潮。 |
|
||||
| 00:49–01:05 | 04 | 撤去鼓点,只留低弦、箫气声与稀疏拨弦;刀落后留半秒静默。 |
|
||||
| 01:05–01:22 | 05 | 低弦重新进入却不解决和声,结尾让古琴动机停在未完成音上,呼应曹魏权力从此失衡。 |
|
||||
|
||||
## 史实边界
|
||||
|
||||
### 史实依据
|
||||
|
||||
- 《三国志·魏书·三少帝纪》:正月甲午车驾谒高平陵,司马懿奏免曹爽兄弟;戊戌张当案牵连曹爽、何晏、丁谧、桓范等并夷三族。
|
||||
- 《三国志·魏书·曹爽传》及裴松之注:曹爽留驾伊水南、伐木设障、桓范携印劝赴许昌、洛水誓、投刀、免官归第、宅第围守与随后收捕诛族。
|
||||
- 《资治通鉴》卷七十五:闭诸城门、据武库、屯洛水浮桥、控制曹爽与曹羲军营,以及从桓范出城到曹爽投降和清算的完整时序。
|
||||
- 《晋书·宣帝纪》:司马懿一方关于政变部署、洛水誓与诛曹爽集团的叙述;该书具有晋室正统叙事立场,人物评价和功绩细节不单独当作中性定论。
|
||||
- 项目内曲库核对:`digital-me-backend/scripts/seed-music.js` 中 `linjiu / 广陵散·今译` 只有曲目与创作说明,仓库未发现对应可播放音频。
|
||||
|
||||
### 可视化补全
|
||||
|
||||
- 五幕中的人物面貌、具体服饰、建筑形制、天气、时辰光线、镜头站位、队列距离均为视觉设计,不作为史实断言。
|
||||
- 画面统一采用东汉末至三国时期可解释的衣甲、木构、夯土城墙、浮桥与车驾,避免使用明清定型盔甲与宫殿。
|
||||
- 第一幕与第五幕的雪地只用于表现正月寒冷和统一色调,史料没有记载政变当天降雪。
|
||||
- 第二幕把闭城、据武库、屯洛水浮桥和控制军营压缩到一幅画面,便于视觉说明“节点夺取”。
|
||||
- 第三幕的无字路线草图只是把“赴许昌、征四方”的建议视觉化,不代表史料保存下来的地图。
|
||||
- 第五幕把归第围守与数日后的逮捕押解压缩为同一画面;夷三族只由旁白交代,不制作处刑场景。
|
||||
|
||||
### 禁用元素
|
||||
|
||||
- 不把高平陵之变画成洛阳巷战、高平陵大战或司马懿与曹爽之间的军事决战。
|
||||
- 不画司马懿、曹爽在洛水浮桥或高平陵面对面谈判、决斗。
|
||||
- 不把司马懿诈病吐粥的前史挪到政变当天;它属于李胜探病的前置事件。
|
||||
- 不把“三千死士”的精确人数、集结方法和战斗表现写成各家史料一致的确定事实。
|
||||
- 不画郭太后亲临城门或军阵指挥;史料只记司马懿以太后令行事。
|
||||
- 不把司马懿一方奏章对曹爽的所有指控写成无争议事实;本包使用“所谓谋反计划”保持叙事距离。
|
||||
- 不渲染曹爽家属和未成年人受刑,不制作斩首、肢解、血泊等处刑特写。
|
||||
- 不使用未经可靠核对的确定兵力总数。
|
||||
- 不使用明清盔甲、明清城楼、龙椅式皇车、京剧脸谱、火药爆炸、现代地图、现代监狱或影视游戏角色脸。
|
||||
|
||||
## 生成说明
|
||||
|
||||
- 图片由内置图像生成工具制作,共 5 张原始 PNG 与 5 张 WebP,尺寸均为 1672 × 941,接近标准 16:9。
|
||||
- 视觉采用用户既有偏好的中国半写实手绘方向:低饱和尘青、暖灰、陶红、克制线稿、成熟面孔与轻微纸张肌理。
|
||||
- 图片不烘焙人物姓名、字幕、书法、Logo 或水印,并为后期叠字保留负空间。
|
||||
- 五张图的最终完整提示词保存在 `manifest.json` 各幕的 `image.prompt` 字段。
|
||||
- 这是纯素材包,没有接入前端页面、Experience Plan、Living World 或用户 Claim/Episode 链路。
|
||||
|
||||
## 在线史料入口
|
||||
|
||||
- [《三国志·卷四·三少帝纪》](https://zh.wikisource.org/zh-hans/三國志/卷04)
|
||||
- [《三国志·卷九·诸夏侯曹传》](https://zh.wikisource.org/zh-hans/三國志/卷09)
|
||||
- [《资治通鉴·卷七十五》](https://zh.wikisource.org/zh-hans/資治通鑑/卷075)
|
||||
- [《晋书·卷一·宣帝纪》](https://zh.wikisource.org/zh-hans/晉書/卷001)
|
||||
- [公历日期换算参考:维基百科《高平陵之变》](https://zh.wikipedia.org/wiki/高平陵之变)
|
||||
@@ -0,0 +1,211 @@
|
||||
<!doctype html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta name="theme-color" content="#eee8dc" />
|
||||
<meta name="description" content="司马懿趁魏帝曹芳与曹爽兄弟出城谒陵控制洛阳,迫使曹爽交权,随后诛灭曹爽集团,曹魏实权由此转入司马氏之手。" />
|
||||
<title>高平陵之变|一日闭城,曹魏权柄易手</title>
|
||||
<link rel="stylesheet" href="./styles.css" />
|
||||
</head>
|
||||
<body>
|
||||
<a class="skip-link" href="#story">跳到正文</a>
|
||||
<a class="collection-back" href="../../index.html" aria-label="返回三国故事集">返回故事集</a>
|
||||
|
||||
<div class="page-motifs" aria-hidden="true">
|
||||
<div class="flow-grid flow-grid--primary"></div>
|
||||
<div class="flow-grid flow-grid--secondary"></div>
|
||||
<img class="ambient-shape ambient-shape--01 orbit-a" src="./assets/meta/十字-01.svg" alt="" />
|
||||
<img class="ambient-shape ambient-shape--02 orbit-b" src="./assets/meta/形状-椭圆形.svg" alt="" />
|
||||
<img class="ambient-shape ambient-shape--03 orbit-c" src="./assets/meta/tx-正方形.svg" alt="" />
|
||||
<img class="ambient-shape ambient-shape--04 orbit-b" src="./assets/meta/十字-01.svg" alt="" />
|
||||
<img class="ambient-shape ambient-shape--05 orbit-a" src="./assets/meta/形状-椭圆形.svg" alt="" />
|
||||
<img class="ambient-shape ambient-shape--06 orbit-c" src="./assets/meta/tx-正方形.svg" alt="" />
|
||||
<img class="ambient-shape ambient-shape--07 orbit-a" src="./assets/meta/十字-01.svg" alt="" />
|
||||
<img class="ambient-shape ambient-shape--08 orbit-b" src="./assets/meta/形状-椭圆形.svg" alt="" />
|
||||
<img class="ambient-shape ambient-shape--09 orbit-c" src="./assets/meta/tx-正方形.svg" alt="" />
|
||||
<div class="motion-matrix motion-matrix--01"><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i></div>
|
||||
<div class="motion-matrix motion-matrix--02"><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i></div>
|
||||
<div class="motion-matrix motion-matrix--03"><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i></div>
|
||||
<div class="motion-matrix motion-matrix--04"><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i></div>
|
||||
</div>
|
||||
<div class="calligraphy-field" id="calligraphy-field" aria-hidden="true"></div>
|
||||
|
||||
<header class="site-header">
|
||||
<a class="brand" href="#top" aria-label="返回卷首">
|
||||
<span class="brand__seal">陵</span>
|
||||
<span class="brand__copy"><b>高平陵</b><small>ILLUSTRATED CHRONICLE</small></span>
|
||||
</a>
|
||||
<nav aria-label="主导航">
|
||||
<a href="#story">卷首</a><a href="#chronicle">画卷</a><a href="#timeline">编年</a><a href="#archive">人物</a>
|
||||
</nav>
|
||||
<span class="site-header__volume">三国纪 · 249</span>
|
||||
<i class="site-header__progress" aria-hidden="true"></i>
|
||||
</header>
|
||||
|
||||
<main>
|
||||
<section class="collage" id="top" aria-label="高平陵之变五幕历史画卷">
|
||||
<div class="collage__field" aria-hidden="true">
|
||||
<figure class="collage-card collage-card--01" style="--r: -3.5deg"><img src="./assets/images/01-imperial-procession-gaoping.webp" alt="" /></figure>
|
||||
<figure class="collage-card collage-card--02" style="--r: 2.8deg"><img src="./assets/images/02-seize-luo-bridge.webp" alt="" /></figure>
|
||||
<figure class="collage-card collage-card--03" style="--r: -1.8deg"><img src="./assets/images/03-huan-fan-counsel.webp" alt="" /></figure>
|
||||
<figure class="collage-card collage-card--04" style="--r: 3.2deg"><img src="./assets/images/04-cao-shuang-drops-dao.webp" alt="" /></figure>
|
||||
<figure class="collage-card collage-card--05" style="--r: -2.2deg"><img src="./assets/images/05-arrested-in-luoyang.webp" alt="" /></figure>
|
||||
</div>
|
||||
<div class="collage__veil"></div>
|
||||
<div class="collage__title">
|
||||
<p><span>三国·曹魏正始十年(同年四月改元嘉平)</span><i></i><span>正始十年正月甲午(249年2月5日)至正月戊戌(249年2月9日)</span></p>
|
||||
<h1>高平陵<br />之变</h1>
|
||||
<div class="collage__summary"><b>一日闭城,曹魏权柄易手</b><span>正始十年洛阳政变</span></div>
|
||||
</div>
|
||||
<div class="collage__stamp" aria-hidden="true"><span>历史画卷</span><b>伍</b></div>
|
||||
<div class="collage__caption"><span>洛阳、高平陵、伊水南与洛水浮桥一带</span><span>伍幕 / 约82秒</span></div>
|
||||
<a class="collage__scroll" href="#story"><span>向下翻阅</span><i></i></a>
|
||||
</section>
|
||||
|
||||
<section class="story-intro" id="story" aria-labelledby="story-title">
|
||||
<div class="story-intro__grid">
|
||||
<aside class="story-intro__chapter" data-reveal data-direction="left"><span>CHAPTER</span><b>正始<br />十年</b><i></i></aside>
|
||||
<div class="story-intro__title" data-reveal data-direction="left">
|
||||
<p class="eyebrow"><span></span> ILLUSTRATED RECORD</p>
|
||||
<h2 id="story-title">没有大战的<br />权力翻转。</h2>
|
||||
</div>
|
||||
<div class="story-intro__lead" data-reveal data-direction="right">
|
||||
<p>司马懿趁魏帝曹芳与曹爽兄弟出城谒陵控制洛阳,迫使曹爽交权,随后诛灭曹爽集团,曹魏实权由此转入司马氏之手。</p>
|
||||
<dl><div><dt>时间</dt><dd>正始十年正月甲午(249年2月5日)至正月戊戌(249年2月9日)</dd></div><div><dt>地点</dt><dd>洛阳、高平陵、伊水南与洛水浮桥一带</dd></div><div><dt>核心</dt><dd>司马懿趁魏帝曹芳与曹爽兄弟出城谒陵控制洛阳,迫使曹爽交权,随后诛灭曹爽集团,曹魏实权由此转入司马氏之手。</dd></div></dl>
|
||||
</div>
|
||||
</div>
|
||||
<figure class="story-intro__image" data-reveal data-direction="up">
|
||||
<img src="./assets/images/01-imperial-procession-gaoping.webp" alt="寒冷清晨,曹芳的车驾与曹爽兄弟离开洛阳城,沿冬日道路驶向高平陵。" />
|
||||
<figcaption><span>图一 · 帝车出城</span><small>正始十年正月甲午清晨(249年2月5日),洛阳至高平陵途中</small></figcaption>
|
||||
</figure>
|
||||
</section>
|
||||
|
||||
<section class="chronicle" id="chronicle" aria-label="图文叙事画卷">
|
||||
<header class="chronicle__header">
|
||||
<p data-reveal data-direction="left">画卷 / PICTORIAL RECORD</p><span data-reveal data-direction="right">五幕,从帝陵出行到洛阳收网</span>
|
||||
</header>
|
||||
<article class="chronicle-entry" data-scene="01">
|
||||
<figure data-reveal data-direction="left">
|
||||
<img src="./assets/images/01-imperial-procession-gaoping.webp" alt="寒冷清晨,曹芳的车驾与曹爽兄弟离开洛阳城,沿冬日道路驶向高平陵。" loading="lazy" />
|
||||
<figcaption><span>01 / 帝车出城</span><small>正始十年正月甲午清晨(249年2月5日),洛阳至高平陵途中</small></figcaption>
|
||||
</figure>
|
||||
<div class="chronicle-entry__copy" data-reveal data-direction="right">
|
||||
<time datetime="249">正始十年正月甲午清晨(249年2月5日),洛阳至高平陵途中</time>
|
||||
<h2><span>01</span>帝车出城</h2>
|
||||
<p>正始十年正月初六,十七岁的魏帝曹芳出洛阳,拜谒魏明帝高平陵。大将军曹爽和三位弟弟都随车驾出城,京师中枢一时空虚。</p>
|
||||
<aside><b>画面札记</b><span>当皇帝与掌兵的兄弟一同离开,洛阳的城门便成了胜负。</span></aside>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="chronicle-entry chronicle-entry--reverse" data-scene="02">
|
||||
<figure data-reveal data-direction="right">
|
||||
<img src="./assets/images/02-seize-luo-bridge.webp" alt="司马懿在冬日洛水浮桥桥头调度军士,兵马与军械通过浮桥,远处洛阳城门已经关闭。" loading="lazy" />
|
||||
<figcaption><span>02 / 洛阳闭门</span><small>249年2月5日,洛阳城、武库与洛水浮桥</small></figcaption>
|
||||
</figure>
|
||||
<div class="chronicle-entry__copy" data-reveal data-direction="left">
|
||||
<time datetime="249">249年2月5日,洛阳城、武库与洛水浮桥</time>
|
||||
<h2><span>02</span>洛阳闭门</h2>
|
||||
<p>太傅司马懿随即以郭太后诏令关闭城门,占据武库,又派兵控制洛水浮桥和曹爽兄弟军营。一封弹劾奏章被送到伊水南,要求曹爽交出兵权、以侯爵归第。</p>
|
||||
<aside><b>画面札记</b><span>城门、武库、浮桥与军营,在同一天换了主人。</span></aside>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="chronicle-entry chronicle-entry--night" data-scene="03">
|
||||
<figure data-reveal data-direction="left">
|
||||
<img src="./assets/images/03-huan-fan-counsel.webp" alt="伊水南夜营里,桓范把大司农印放在无字路线草图旁,急切劝说犹疑的曹爽与曹羲。" loading="lazy" />
|
||||
<figcaption><span>03 / 智囊出城</span><small>249年2月5日夜,伊水南曹爽临时驻地</small></figcaption>
|
||||
</figure>
|
||||
<div class="chronicle-entry__copy" data-reveal data-direction="right">
|
||||
<time datetime="249">249年2月5日夜,伊水南曹爽临时驻地</time>
|
||||
<h2><span>03</span>智囊出城</h2>
|
||||
<p>曹爽扣下奏章,调来屯田兵,伐木设障,却迟迟不能决断。大司农桓范带印出城,劝他奉天子赴许昌,征召四方;只要皇帝在手,仍有翻盘的名义与粮饷。</p>
|
||||
<aside><b>画面札记</b><span>天子、外兵、许昌与粮饷都在手边,唯独没有决断。</span></aside>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="chronicle-entry chronicle-entry--reverse" data-scene="04">
|
||||
<figure data-reveal data-direction="right">
|
||||
<img src="./assets/images/04-cao-shuang-drops-dao.webp" alt="将近黎明的军帐中,曹爽松手让短刀落向地面,桓范扶案望着他,神情悲愤而克制。" loading="lazy" />
|
||||
<figcaption><span>04 / 五鼓投刀</span><small>249年2月6日前后五更,伊水南曹爽临时驻地</small></figcaption>
|
||||
</figure>
|
||||
<div class="chronicle-entry__copy" data-reveal data-direction="left">
|
||||
<time datetime="249">249年2月6日前后五更,伊水南曹爽临时驻地</time>
|
||||
<h2><span>04</span>五鼓投刀</h2>
|
||||
<p>兄弟们从夜里犹疑到五更。司马懿又让尹大目传话,以洛水为誓,声称只会免官。曹爽最终投刀在地,说自己仍不失为富家翁,随即交权迎帝还宫。</p>
|
||||
<aside><b>画面札记</b><span>一声刀落,失去的已不只是大将军印。</span></aside>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="chronicle-entry" data-scene="05">
|
||||
<figure data-reveal data-direction="left">
|
||||
<img src="./assets/images/05-arrested-in-luoyang.webp" alt="洛阳冬日清晨,卸去甲胄的曹爽与桓范等官员在军士看守下离开被封闭监视的宅第。" loading="lazy" />
|
||||
<figcaption><span>05 / 归第成狱</span><small>249年2月6日至2月9日,洛阳曹爽宅第与廷尉治所</small></figcaption>
|
||||
</figure>
|
||||
<div class="chronicle-entry__copy" data-reveal data-direction="right">
|
||||
<time datetime="249">249年2月6日至2月9日,洛阳曹爽宅第与廷尉治所</time>
|
||||
<h2><span>05</span>归第成狱</h2>
|
||||
<p>几天后,张当案供出所谓谋反计划,曹爽、曹羲、何晏、丁谧、桓范等被捕,以大逆罪夷三族。高平陵没有大战,却让曹魏的实权从曹氏宗亲手中滑向司马氏,此后再未真正回转。</p>
|
||||
<aside><b>画面札记</b><span>承诺止于免官,清算却越过了整座宅门。</span></aside>
|
||||
</div>
|
||||
</article>
|
||||
<blockquote class="chronicle-quote" data-reveal data-direction="up">
|
||||
<p>承诺止于免官,清算却越过了整座宅门。</p>
|
||||
<cite>高平陵之变 · 卷末语</cite>
|
||||
</blockquote>
|
||||
</section>
|
||||
|
||||
<section class="record-line" id="timeline" aria-labelledby="timeline-title">
|
||||
<header data-reveal data-direction="left">
|
||||
<p class="eyebrow"><span></span> CHRONOLOGY</p>
|
||||
<h2 id="timeline-title">五个节点,<br />串起高平陵之变。</h2>
|
||||
</header>
|
||||
<ol>
|
||||
<li data-reveal data-direction="right"><time>正始十年正月甲午清晨(249年2月5日),洛阳至高平陵途中</time><i></i><div><b>帝车出城</b><p>正始十年正月初六,十七岁的魏帝曹芳出洛阳,拜谒魏明帝高平陵。大将军曹爽和三位弟弟都随车驾出城,京师中枢一时空虚。</p></div></li>
|
||||
<li data-reveal data-direction="right"><time>249年2月5日,洛阳城、武库与洛水浮桥</time><i></i><div><b>洛阳闭门</b><p>太傅司马懿随即以郭太后诏令关闭城门,占据武库,又派兵控制洛水浮桥和曹爽兄弟军营。一封弹劾奏章被送到伊水南,要求曹爽交出兵权、以侯爵归第。</p></div></li>
|
||||
<li data-reveal data-direction="right"><time>249年2月5日夜,伊水南曹爽临时驻地</time><i></i><div><b>智囊出城</b><p>曹爽扣下奏章,调来屯田兵,伐木设障,却迟迟不能决断。大司农桓范带印出城,劝他奉天子赴许昌,征召四方;只要皇帝在手,仍有翻盘的名义与粮饷。</p></div></li>
|
||||
<li data-reveal data-direction="right"><time>249年2月6日前后五更,伊水南曹爽临时驻地</time><i></i><div><b>五鼓投刀</b><p>兄弟们从夜里犹疑到五更。司马懿又让尹大目传话,以洛水为誓,声称只会免官。曹爽最终投刀在地,说自己仍不失为富家翁,随即交权迎帝还宫。</p></div></li>
|
||||
<li data-reveal data-direction="right"><time>249年2月6日至2月9日,洛阳曹爽宅第与廷尉治所</time><i></i><div><b>归第成狱</b><p>几天后,张当案供出所谓谋反计划,曹爽、曹羲、何晏、丁谧、桓范等被捕,以大逆罪夷三族。高平陵没有大战,却让曹魏的实权从曹氏宗亲手中滑向司马氏,此后再未真正回转。</p></div></li>
|
||||
</ol>
|
||||
</section>
|
||||
|
||||
<section class="archive" id="archive" aria-labelledby="archive-title">
|
||||
<header data-reveal data-direction="left">
|
||||
<p class="eyebrow"><span></span> CHARACTER FILES</p>
|
||||
<h2 id="archive-title">身在局中,<br />各有其位。</h2>
|
||||
</header>
|
||||
<div class="archive__list">
|
||||
<article data-reveal data-direction="up"><span>01</span><h3>曹芳</h3><p><b>曹魏皇帝,时年十七</b>出城谒高平陵,政变期间被留在伊水南</p></article>
|
||||
<article data-reveal data-direction="up"><span>02</span><h3>曹爽</h3><p><b>曹魏大将军、录尚书事</b>与皇帝同行,离开自己掌控的京师与军营</p></article>
|
||||
<article data-reveal data-direction="up"><span>03</span><h3>曹羲</h3><p><b>曹魏中领军,曹爽之弟</b>随车驾出城</p></article>
|
||||
<article data-reveal data-direction="up"><span>04</span><h3>曹训</h3><p><b>曹魏武卫将军,曹爽之弟</b>随车驾出城</p></article>
|
||||
<article data-reveal data-direction="up"><span>05</span><h3>曹彦</h3><p><b>曹魏散骑常侍,曹爽之弟</b>随车驾出城</p></article>
|
||||
<article data-reveal data-direction="up"><span>06</span><h3>司马懿</h3><p><b>曹魏太傅、顾命大臣</b>奉太后令起兵,控制洛阳与洛水浮桥并上奏罢免曹爽</p></article>
|
||||
<article data-reveal data-direction="up"><span>07</span><h3>司马师</h3><p><b>曹魏中护军,司马懿长子</b>参与政变部署并统率宫门兵力;具体同桥站位为视觉补全</p></article>
|
||||
<article data-reveal data-direction="up"><span>08</span><h3>高柔</h3><p><b>曹魏司徒</b>持节代理大将军事,占据曹爽军营</p></article>
|
||||
<article data-reveal data-direction="up"><span>09</span><h3>王观</h3><p><b>曹魏太仆</b>代理中领军事,占据曹羲军营</p></article>
|
||||
<article data-reveal data-direction="up"><span>10</span><h3>郭太后</h3><p><b>曹魏皇太后</b>司马懿以其诏令实施罢免;本幕不直接入画</p></article></div>
|
||||
<p class="archive__ending" data-reveal data-direction="up">司马懿趁魏帝曹芳与曹爽兄弟出城谒陵控制洛阳,迫使曹爽交权,随后诛灭曹爽集团,曹魏实权由此转入司马氏之手。</p>
|
||||
</section>
|
||||
|
||||
<footer class="source-notes">
|
||||
<div><p class="eyebrow"><span></span> HISTORICAL SOURCES</p><h2>史实边界</h2></div>
|
||||
<div class="source-notes__copy">
|
||||
<p>事实叙述以《三国志·魏书·三少帝纪》、《三国志·魏书·曹爽传》及裴松之注、《资治通鉴》卷七十五、《晋书·宣帝纪》为边界;图片中的天气、人物站位、光线与建筑细部属于可视化补全,均不作为史书记载。演义、神异与后世附会不写成确定事实。</p>
|
||||
<nav aria-label="在线史料"><a href="./data/素材说明.md">本地素材说明</a><a href="./data/manifest.json">结构化史料清单</a></nav>
|
||||
</div>
|
||||
</footer>
|
||||
</main>
|
||||
|
||||
|
||||
<div class="experience-controls" aria-label="页面体验控制">
|
||||
|
||||
<button class="motion-toggle" id="motion-toggle" type="button" aria-pressed="false">暂停动态</button>
|
||||
</div>
|
||||
<noscript>
|
||||
<style>[data-reveal] { opacity: 1 !important; filter: none !important; transform: none !important; }</style>
|
||||
<div class="no-script">当前为静态阅读模式。</div>
|
||||
</noscript>
|
||||
<script src="./main.js" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,191 @@
|
||||
(() => {
|
||||
const body = document.body;
|
||||
const root = document.documentElement;
|
||||
const header = document.querySelector('.site-header');
|
||||
const revealItems = [...document.querySelectorAll('[data-reveal]')];
|
||||
const cards = [...document.querySelectorAll('.collage-card')];
|
||||
const motionToggle = document.querySelector('#motion-toggle');
|
||||
const musicToggle = document.querySelector('#music-toggle');
|
||||
const backgroundMusic = document.querySelector('#background-music');
|
||||
const calligraphyField = document.querySelector('#calligraphy-field');
|
||||
const collectionBack = document.querySelector('.collection-back');
|
||||
const reduceMotion = window.matchMedia('(prefers-reduced-motion: reduce)');
|
||||
let motionPaused = reduceMotion.matches;
|
||||
let frameRequested = false;
|
||||
let calligraphyResizeTimer = 0;
|
||||
let calligraphyWidth = window.innerWidth;
|
||||
|
||||
collectionBack?.addEventListener('click', (event) => {
|
||||
if (window.parent === window) return;
|
||||
event.preventDefault();
|
||||
window.parent.postMessage(
|
||||
{ type: 'three-kingdoms-story-close' },
|
||||
window.location.origin,
|
||||
);
|
||||
});
|
||||
|
||||
const lantingPreface = `
|
||||
永和九年歲在癸丑暮春之初會於會稽山陰之蘭亭修禊事也群賢畢至少長咸集
|
||||
此地有崇山峻嶺茂林修竹又有清流激湍映帶左右引以為流觴曲水列坐其次
|
||||
雖無絲竹管弦之盛一觴一詠亦足以暢敘幽情是日也天朗氣清惠風和暢
|
||||
仰觀宇宙之大俯察品類之盛所以遊目騁懷足以極視聽之娛信可樂也
|
||||
夫人之相與俯仰一世或取諸懷抱晤言一室之內或因寄所託放浪形骸之外
|
||||
雖趣舍萬殊靜躁不同當其欣於所遇暫得於己快然自足不知老之將至
|
||||
及其所之既倦情隨事遷感慨係之矣向之所欣俯仰之間已為陳跡
|
||||
猶不能不以之興懷況修短隨化終期於盡古人云死生亦大矣豈不痛哉
|
||||
每覽昔人興感之由若合一契未嘗不臨文嗟悼不能喻之於懷
|
||||
固知一死生為虛誕齊彭殤為妄作後之視今亦猶今之視昔悲夫
|
||||
故列敘時人錄其所述雖世殊事異所以興懷其致一也後之覽者亦將有感於斯文
|
||||
`.replace(/[^\u3400-\u9fff]/g, '');
|
||||
|
||||
const randomBetween = (minimum, maximum) => minimum + Math.random() * (maximum - minimum);
|
||||
|
||||
const createCalligraphyField = () => {
|
||||
if (!calligraphyField) return;
|
||||
|
||||
const isCompact = window.innerWidth <= 680;
|
||||
const columnCount = isCompact ? 36 : Math.min(72, Math.max(48, Math.ceil(window.innerWidth / 28)));
|
||||
const source = lantingPreface + lantingPreface;
|
||||
const fragment = document.createDocumentFragment();
|
||||
const tones = ['#2d2821', '#2d2821', '#2d2821', '#874734', '#345f63'];
|
||||
let cursor = Math.floor(Math.random() * lantingPreface.length);
|
||||
|
||||
for (let index = 0; index < columnCount; index += 1) {
|
||||
const length = Math.floor(randomBetween(3, 8));
|
||||
const column = document.createElement('span');
|
||||
const fontSize = isCompact ? randomBetween(22, 48) : randomBetween(28, 78);
|
||||
const duration = randomBetween(0.8, 1.2) * (isCompact ? 68 : 82);
|
||||
|
||||
column.className = 'calligraphy-column';
|
||||
column.textContent = source.slice(cursor, cursor + length);
|
||||
column.style.setProperty('--top', `${randomBetween(-4, 82).toFixed(2)}vh`);
|
||||
column.style.setProperty('--start-x', `${randomBetween(106, 158).toFixed(2)}vw`);
|
||||
column.style.setProperty('--rest-x', `${randomBetween(2, 94).toFixed(2)}vw`);
|
||||
column.style.setProperty('--font-size', `${fontSize.toFixed(2)}px`);
|
||||
column.style.setProperty('--opacity', randomBetween(0.12, 0.4).toFixed(3));
|
||||
column.style.setProperty('--duration', `${duration.toFixed(2)}s`);
|
||||
column.style.setProperty('--delay', `${(-randomBetween(0, duration)).toFixed(2)}s`);
|
||||
column.style.setProperty('--tone', tones[Math.floor(Math.random() * tones.length)]);
|
||||
fragment.append(column);
|
||||
|
||||
cursor = (cursor + length) % lantingPreface.length;
|
||||
}
|
||||
|
||||
calligraphyField.replaceChildren(fragment);
|
||||
calligraphyWidth = window.innerWidth;
|
||||
};
|
||||
|
||||
const showAll = () => {
|
||||
revealItems.forEach((item) => item.classList.add('is-visible'));
|
||||
};
|
||||
|
||||
if ('IntersectionObserver' in window && !reduceMotion.matches) {
|
||||
const observer = new IntersectionObserver(
|
||||
(entries) => {
|
||||
entries.forEach((entry) => {
|
||||
if (!entry.isIntersecting) return;
|
||||
entry.target.classList.add('is-visible');
|
||||
observer.unobserve(entry.target);
|
||||
});
|
||||
},
|
||||
{ threshold: 0.12, rootMargin: '0px 0px -8% 0px' },
|
||||
);
|
||||
|
||||
revealItems.forEach((item) => observer.observe(item));
|
||||
window.addEventListener('pagehide', () => observer.disconnect(), { once: true });
|
||||
} else {
|
||||
showAll();
|
||||
}
|
||||
|
||||
const updateScrollEffects = () => {
|
||||
const scrollTop = window.scrollY;
|
||||
const scrollRange = Math.max(1, root.scrollHeight - window.innerHeight);
|
||||
const progress = Math.min(1, Math.max(0, scrollTop / scrollRange));
|
||||
|
||||
root.style.setProperty('--scroll-progress', progress.toFixed(4));
|
||||
header?.classList.toggle('is-scrolled', scrollTop > Math.max(90, window.innerHeight * 0.72));
|
||||
|
||||
if (!motionPaused && scrollTop < window.innerHeight * 1.15) {
|
||||
const heroProgress = Math.min(1, Math.max(0, scrollTop / window.innerHeight));
|
||||
cards.forEach((card, index) => {
|
||||
const direction = index % 2 === 0 ? -1 : 1;
|
||||
const distance = (14 + (index % 3) * 7) * heroProgress * direction;
|
||||
card.style.setProperty('--drift', `${distance.toFixed(2)}px`);
|
||||
});
|
||||
}
|
||||
|
||||
frameRequested = false;
|
||||
};
|
||||
|
||||
const requestScrollUpdate = () => {
|
||||
if (frameRequested) return;
|
||||
frameRequested = true;
|
||||
requestAnimationFrame(updateScrollEffects);
|
||||
};
|
||||
|
||||
const setMotionState = (paused) => {
|
||||
motionPaused = paused;
|
||||
body.classList.toggle('is-motion-paused', paused);
|
||||
motionToggle?.setAttribute('aria-pressed', String(paused));
|
||||
|
||||
if (motionToggle) {
|
||||
motionToggle.textContent = paused ? '恢复动态' : '暂停动态';
|
||||
}
|
||||
|
||||
if (paused) {
|
||||
cards.forEach((card) => card.style.setProperty('--drift', '0px'));
|
||||
showAll();
|
||||
} else {
|
||||
requestScrollUpdate();
|
||||
}
|
||||
};
|
||||
|
||||
const syncMusicState = () => {
|
||||
if (!musicToggle || !backgroundMusic) return;
|
||||
const isPlaying = !backgroundMusic.paused;
|
||||
musicToggle.setAttribute('aria-pressed', String(isPlaying));
|
||||
musicToggle.textContent = isPlaying ? '暂停音乐' : '播放音乐';
|
||||
};
|
||||
|
||||
const toggleMusic = async () => {
|
||||
if (!backgroundMusic || !musicToggle) return;
|
||||
|
||||
if (!backgroundMusic.paused) {
|
||||
backgroundMusic.pause();
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
await backgroundMusic.play();
|
||||
} catch {
|
||||
musicToggle.textContent = '音乐不可用';
|
||||
musicToggle.setAttribute('aria-pressed', 'false');
|
||||
}
|
||||
};
|
||||
|
||||
motionToggle?.addEventListener('click', () => setMotionState(!motionPaused));
|
||||
musicToggle?.addEventListener('click', toggleMusic);
|
||||
backgroundMusic?.addEventListener('play', syncMusicState);
|
||||
backgroundMusic?.addEventListener('pause', syncMusicState);
|
||||
backgroundMusic?.addEventListener('error', () => {
|
||||
if (musicToggle) musicToggle.textContent = '音乐不可用';
|
||||
});
|
||||
window.addEventListener('scroll', requestScrollUpdate, { passive: true });
|
||||
window.addEventListener('resize', requestScrollUpdate, { passive: true });
|
||||
window.addEventListener('resize', () => {
|
||||
window.clearTimeout(calligraphyResizeTimer);
|
||||
calligraphyResizeTimer = window.setTimeout(() => {
|
||||
if (Math.abs(window.innerWidth - calligraphyWidth) > 120) createCalligraphyField();
|
||||
}, 220);
|
||||
}, { passive: true });
|
||||
reduceMotion.addEventListener?.('change', (event) => setMotionState(event.matches));
|
||||
|
||||
requestAnimationFrame(() => {
|
||||
createCalligraphyField();
|
||||
if (backgroundMusic) backgroundMusic.volume = 0.28;
|
||||
syncMusicState();
|
||||
body.classList.add('is-ready');
|
||||
setMotionState(motionPaused);
|
||||
updateScrollEffects();
|
||||
});
|
||||
})();
|
||||
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1787640980513" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="14469" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M962 962H62V62h900v900zM162 862h700V162H162v700z" p-id="14470" fill="#2c2c2c"></path></svg>
|
||||
|
After Width: | Height: | Size: 425 B |
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1787640936341" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="12356" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M64.164369 555.936675 64.164369 466.466967l894.496507 0 0 89.469708L64.164369 555.936675 64.164369 555.936675zM466.676745 958.450075 466.676745 63.953567l89.469708 0 0 894.497531L466.676745 958.451098 466.676745 958.450075z" fill="#2c2c2c" p-id="12357"></path></svg>
|
||||
|
After Width: | Height: | Size: 600 B |
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1787640959653" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13428" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M512 928C282.624 928 96 741.376 96 512S282.624 96 512 96s416 186.624 416 416-186.624 416-416 416z m0-768C317.92 160 160 317.92 160 512s157.92 352 352 352 352-157.92 352-352S706.08 160 512 160z" fill="#2c2c2c" p-id="13429"></path></svg>
|
||||
|
After Width: | Height: | Size: 569 B |
@@ -0,0 +1,285 @@
|
||||
{
|
||||
"event": {
|
||||
"canonicalName": "街亭之战·诸葛亮第一次北伐",
|
||||
"aliases": [
|
||||
"街亭之战·诸葛亮首次北伐",
|
||||
"街亭之战"
|
||||
],
|
||||
"era": "三国·蜀汉建兴六年/曹魏太和二年",
|
||||
"date": "228年春",
|
||||
"place": "街亭(今址有争议;常见考订指今甘肃天水秦安陇城一带)",
|
||||
"summary": "马谡舍水上山,张郃绝其汲道而大破蜀军;街亭失守使诸葛亮第一次北伐失去前进支点,最终退回汉中。"
|
||||
},
|
||||
"narration": {
|
||||
"language": "zh-CN",
|
||||
"estimatedSeconds": 82,
|
||||
"fullText": "建兴六年春,诸葛亮第一次北伐出祁山。南安、天水、安定三郡响应,关中震动。街亭,是守住这股攻势的要口。众人主张用魏延、吴壹等宿将,诸葛亮却拔马谡统领前锋。马谡到了街亭,没有据城守水,反而舍水上山。王平接连劝阻,他没有听。魏将张郃不急攻山,只先切断汲水之道。烈日之下,山上的军阵从干渴开始崩散,张郃乘势击破。败局中,王平只领千人鸣鼓自持。张郃疑有伏兵,没有逼近;王平这才徐徐收拢逃散士卒,全军而还。街亭失守,诸葛亮进无所据,只得拔西县千余家退回汉中。三郡复归于魏。事后,诸葛亮上疏自责,请贬三等;马谡被系狱,正史对其究竟伏诛还是死于狱中记载不一。第一次北伐最好的机会,就这样断在一条没有守住的水道上。"
|
||||
},
|
||||
"scenes": [
|
||||
{
|
||||
"id": "01",
|
||||
"title": "三郡响应",
|
||||
"timePlace": "228年春,祁山与陇右",
|
||||
"purpose": "交代第一次北伐开局之盛,以及街亭为何关系全局。",
|
||||
"narration": "建兴六年春,诸葛亮第一次北伐出祁山。南安、天水、安定三郡响应,关中震动。街亭,是守住这股攻势的要口。",
|
||||
"overlay": {
|
||||
"heading": "三郡响应",
|
||||
"line": "北伐刚刚打开陇右,街亭便成了必须守住的门闩。"
|
||||
},
|
||||
"people": [
|
||||
{
|
||||
"name": "诸葛亮",
|
||||
"office": "蜀汉丞相、第一次北伐全军统帅",
|
||||
"action": "率主力攻祁山;本人不在街亭前线"
|
||||
}
|
||||
],
|
||||
"image": {
|
||||
"original": "images/01-three-commandaries-rise.png",
|
||||
"delivery": "images/01-three-commandaries-rise.webp",
|
||||
"alt": "冷色晨光下,诸葛亮在山谷军帐中按着地图,信使与行军队列从祁山方向进入陇右。",
|
||||
"prompt": "Use case: historical-scene. Asset type: Digital Me historical battle story scene, 16:9 landscape. Scene 1 of the Battle of Jieting sequence, spring 228 CE: Zhuge Liang, around age 47, composed and lean, in a late Eastern Han military command camp near Qishan, studying a cloth map while messengers arrive; beyond the tent, disciplined Shu Han columns move through a dry Longyou valley and distant fortified settlements suggest three commanderies responding. Cinematic historical realism, dusty blue-gray and muted ochre, cold dawn, worn linen and lacquered lamellar armor, negative space for overlay. Strict third-century China; no modern objects, firearms, Ming/Qing armor, fantasy, feather-fan emphasis, text, logos, UI or watermark.",
|
||||
"visualInference": "军帐位置、信使到达的具体瞬间、远处城寨与旗帜为叙事性构图。"
|
||||
},
|
||||
"sources": [
|
||||
"《三国志·魏书·明帝纪》",
|
||||
"《三国志·蜀书·诸葛亮传》"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "02",
|
||||
"title": "舍水上山",
|
||||
"timePlace": "228年春,街亭山地与水道",
|
||||
"purpose": "呈现导致战败的部署选择,以及王平劝谏不从。",
|
||||
"narration": "众人主张用魏延、吴壹等宿将,诸葛亮却拔马谡统领前锋。马谡到了街亭,没有据城守水,反而舍水上山。王平接连劝阻,他没有听。",
|
||||
"overlay": {
|
||||
"heading": "舍水上山",
|
||||
"line": "山势看似可恃,真正的命门却在山下那条水道。"
|
||||
},
|
||||
"people": [
|
||||
{
|
||||
"name": "马谡",
|
||||
"office": "参军、街亭前锋主将",
|
||||
"action": "违节度,舍水上山,不下据城"
|
||||
},
|
||||
{
|
||||
"name": "王平",
|
||||
"office": "裨将军、马谡先锋部将",
|
||||
"action": "接连规劝马谡守住水道,未被采纳"
|
||||
},
|
||||
{
|
||||
"name": "诸葛亮",
|
||||
"office": "蜀汉丞相、全军统帅",
|
||||
"action": "违众拔马谡统前锋;不在本幕画面"
|
||||
}
|
||||
],
|
||||
"image": {
|
||||
"original": "images/02-abandon-water-climb-ridge.png",
|
||||
"delivery": "images/02-abandon-water-climb-ridge.webp",
|
||||
"alt": "干燥山坡上,马谡指向高处命令扎营,披甲的王平则指向山下水道和街亭据点劝阻。",
|
||||
"prompt": "Use case: historical-scene. Same visual world as Scene 1. Scene 2, spring 228 CE: on a dry mountain slope above Jieting, Ma Su, a confident but inexperienced Shu staff officer, points upward and orders camp on the ridge; Wang Ping, a battle-worn practical general in plain lamellar armor, urgently indicates the watercourse, road and fortified settlement below. Soldiers carry stakes uphill. Wide diagonal composition from stream to ridge, hard late-morning light, late-Han realism, muted ochre/blue-gray, negative space for overlay. No modern objects, firearms, Ming/Qing armor, fantasy, feather fan, text, logos, UI or watermark.",
|
||||
"visualInference": "山坡朝向、城寨外观、人物站位和白昼光线为视觉重构;街亭确址与地貌细节有争议。"
|
||||
},
|
||||
"sources": [
|
||||
"《三国志·蜀书·马良传》",
|
||||
"《三国志·蜀书·王平传》",
|
||||
"《三国志·魏书·张郃传》"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "03",
|
||||
"title": "绝其汲道",
|
||||
"timePlace": "228年春,街亭山下水道",
|
||||
"purpose": "用断水而非斗将表现张郃识地形、抓住蜀军死穴的制胜方式。",
|
||||
"narration": "魏将张郃不急攻山,只先切断汲水之道。烈日之下,山上的军阵从干渴开始崩散,张郃乘势击破。",
|
||||
"overlay": {
|
||||
"heading": "绝其汲道",
|
||||
"line": "张郃没有仰攻高地,而是先让那座山失去水。"
|
||||
},
|
||||
"people": [
|
||||
{
|
||||
"name": "张郃",
|
||||
"office": "曹魏右将军、街亭前线主将",
|
||||
"action": "督诸军切断汲道,击破马谡"
|
||||
},
|
||||
{
|
||||
"name": "马谡",
|
||||
"office": "蜀汉前锋主将",
|
||||
"action": "山上军阵因失水、失序而溃"
|
||||
}
|
||||
],
|
||||
"image": {
|
||||
"original": "images/03-cut-the-waterline.png",
|
||||
"delivery": "images/03-cut-the-waterline.webp",
|
||||
"alt": "张郃骑马立在山下溪流旁,魏军沿水道列阵封锁,远处高坡上的蜀军营地被隔绝。",
|
||||
"prompt": "Use case: historical-scene. Same visual world and terrain as prior scenes. Scene 3: beside the stream, veteran Wei commander Zhang He in restrained late-Han armor directs disciplined infantry and cavalry to occupy the road and watercourse below the mountain; Ma Su's camp is isolated in heat haze on the ridge, with soldiers and empty jars looking toward the blocked stream. Wide strategic composition, merciless afternoon sun, cold tactical patience, no heroic duel. Strict third-century China, no modern objects, firearms, Ming/Qing armor, fantasy, gore, burning siege engines, text, logos, UI or watermark.",
|
||||
"visualInference": "魏军封锁线的具体阵形、骑兵比例、烈日与空水器为可视化补全;史书未记当日天气与确切兵数。"
|
||||
},
|
||||
"sources": [
|
||||
"《三国志·魏书·张郃传》",
|
||||
"《三国志·蜀书·诸葛亮传》"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "04",
|
||||
"title": "鸣鼓收军",
|
||||
"timePlace": "街亭败局展开后,蜀军撤退方向",
|
||||
"purpose": "从全线溃败中突出王平以千人稳阵、收合遗众的真实功绩。",
|
||||
"narration": "败局中,王平只领千人鸣鼓自持。张郃疑有伏兵,没有逼近;王平这才徐徐收拢逃散士卒,全军而还。",
|
||||
"overlay": {
|
||||
"heading": "鸣鼓不退",
|
||||
"line": "街亭已经败了,王平却让一千人没有跟着败局一起散掉。"
|
||||
},
|
||||
"people": [
|
||||
{
|
||||
"name": "王平",
|
||||
"office": "蜀汉裨将军",
|
||||
"action": "领千人鸣鼓自持,徐徐收合诸营遗众而还"
|
||||
},
|
||||
{
|
||||
"name": "张郃",
|
||||
"office": "曹魏右将军",
|
||||
"action": "疑有伏兵,未继续逼迫王平部"
|
||||
}
|
||||
],
|
||||
"image": {
|
||||
"original": "images/04-drums-hold-the-line.png",
|
||||
"delivery": "images/04-drums-hold-the-line.webp",
|
||||
"alt": "暮色山谷里,王平站在战鼓旁维持整齐队列,远处魏军骑兵停下,逃散士卒向鼓阵聚拢。",
|
||||
"prompt": "Use case: historical-scene. Same late-Han world and Jieting terrain. Scene 4: after Ma Su's force breaks, Wang Ping holds roughly one thousand men in compact disciplined formation at dusk beside plain war drums; tired Shu soldiers keep ranks, halted Wei cavalry watches from across a dusty gap because they suspect an ambush, and scattered soldiers move toward Wang Ping's formation. Wide low-angle composition, blue dusk and last ochre sunlight, dignity salvaged from defeat. No triumph, modern objects, firearms, Ming/Qing armor, fantasy, huge army numbers, gore, text, logos, UI or watermark.",
|
||||
"visualInference": "暮色、鼓的数量与排列、两军可视距离为镜头化处理;史书只明确千人鸣鼓自持与张郃疑伏不逼。"
|
||||
},
|
||||
"sources": [
|
||||
"《三国志·蜀书·王平传》"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "05",
|
||||
"title": "退军自贬",
|
||||
"timePlace": "街亭败后,蜀军退还汉中途中",
|
||||
"purpose": "收束第一次北伐失败、三郡复失、诸葛亮引咎与马谡结局歧义。",
|
||||
"narration": "街亭失守,诸葛亮进无所据,只得拔西县千余家退回汉中。三郡复归于魏。事后,诸葛亮上疏自责,请贬三等;马谡被系狱,正史对其究竟伏诛还是死于狱中记载不一。第一次北伐最好的机会,就这样断在一条没有守住的水道上。",
|
||||
"overlay": {
|
||||
"heading": "进无所据",
|
||||
"line": "失去的不是一座山,而是第一次北伐继续向前的支点。"
|
||||
},
|
||||
"people": [
|
||||
{
|
||||
"name": "诸葛亮",
|
||||
"office": "蜀汉丞相、全军统帅",
|
||||
"action": "退军还汉中,上疏引咎,请自贬三等"
|
||||
},
|
||||
{
|
||||
"name": "马谡",
|
||||
"office": "街亭败将",
|
||||
"action": "败后系狱;正史对伏诛或狱中物故的记载不一"
|
||||
},
|
||||
{
|
||||
"name": "西县千余家",
|
||||
"office": "被迁百姓",
|
||||
"action": "随蜀军撤回汉中"
|
||||
}
|
||||
],
|
||||
"image": {
|
||||
"original": "images/05-retreat-and-accountability.png",
|
||||
"delivery": "images/05-retreat-and-accountability.webp",
|
||||
"alt": "月夜下,诸葛亮在撤军军帐中放下官印,帐外军队与迁徙百姓沿山路离开陇右。",
|
||||
"prompt": "Use case: historical-scene. Same five-scene world; preserve Zhuge Liang's established lean appearance. Scene 5: in a sparse Shu command tent at night during withdrawal toward Hanzhong, Zhuge Liang sits upright but burdened at the map table and places an official seal beside an unreadable memorial scroll, symbolizing his request to be demoted; outside, soldiers and displaced families descend the mountain road with pack animals. Cold moonlight and one oil lamp, restrained accountability, no melodrama. Strict third-century China; no modern objects, firearms, Ming/Qing costume, fantasy, feather fan, execution, gore, visible writing, text, logos, UI or watermark.",
|
||||
"visualInference": "夜间军帐、放下官印的动作与撤退队列同框属于象征性组合;史书未记上疏发生的具体帐幕、时刻或姿势。"
|
||||
},
|
||||
"sources": [
|
||||
"《三国志·蜀书·诸葛亮传》",
|
||||
"《三国志·蜀书·马良传》",
|
||||
"《三国志·蜀书·王平传》",
|
||||
"《三国志·魏书·明帝纪》"
|
||||
]
|
||||
}
|
||||
],
|
||||
"bgm": {
|
||||
"catalogId": "zhanzhen:jieting#0",
|
||||
"title": "街亭之战",
|
||||
"version": "电影级配乐(建议生成纯伴奏)",
|
||||
"status": "pending-export",
|
||||
"pathOrUrl": "",
|
||||
"usage": "生成无主唱纯伴奏版;如只得到人声版,使用伴奏或去人声 stem,并在旁白下压低。",
|
||||
"reason": "70 BPM 冷环境极简配乐以热浪、滴答、箫与古琴泛音表现断水后缓慢收紧的战术压力,没有英雄式爆点,能覆盖从北伐起势到退军自贬的完整情绪弧。",
|
||||
"cues": [
|
||||
{
|
||||
"from": "00:00",
|
||||
"to": "00:14",
|
||||
"scene": "01",
|
||||
"direction": "热浪底噪与极轻脉冲,从冷晨和行军远景起,不要过早给鼓点。"
|
||||
},
|
||||
{
|
||||
"from": "00:14",
|
||||
"to": "00:31",
|
||||
"scene": "02",
|
||||
"direction": "加入稀疏滴答与单个古琴泛音;马谡指向山顶时和声收紧半音。"
|
||||
},
|
||||
{
|
||||
"from": "00:31",
|
||||
"to": "00:48",
|
||||
"scene": "03",
|
||||
"direction": "低频缓慢逼近;切断汲水之道落在第一次明显低音进入。"
|
||||
},
|
||||
{
|
||||
"from": "00:48",
|
||||
"to": "01:03",
|
||||
"scene": "04",
|
||||
"direction": "收薄到近静音,只保留稳态脉冲给鼓阵画面,不做凯旋高潮。"
|
||||
},
|
||||
{
|
||||
"from": "01:03",
|
||||
"to": "01:22",
|
||||
"scene": "05",
|
||||
"direction": "重新引入低频后逐层抽空;末句后只留一口箫气并断入静默。"
|
||||
}
|
||||
]
|
||||
},
|
||||
"sources": [
|
||||
{
|
||||
"claim": "诸葛亮第一次北伐、三郡响应与街亭败后撤退",
|
||||
"citation": "《三国志·魏书·明帝纪》《三国志·蜀书·诸葛亮传》"
|
||||
},
|
||||
{
|
||||
"claim": "违众拔马谡、士卒离散与马谡下狱物故",
|
||||
"citation": "《三国志·蜀书·马良传》"
|
||||
},
|
||||
{
|
||||
"claim": "舍水上山、王平连谏、千人鸣鼓收军",
|
||||
"citation": "《三国志·蜀书·王平传》"
|
||||
},
|
||||
{
|
||||
"claim": "马谡不下据城、张郃绝汲道并平三郡",
|
||||
"citation": "《三国志·魏书·张郃传》"
|
||||
},
|
||||
{
|
||||
"claim": "项目内战役档案与音乐方案",
|
||||
"citation": "digital-me-backend/src/zhanzhenData.js;digital-me-backend/src/zhanzhenDangan.js;digital-me-backend/src/data/music-library.json"
|
||||
}
|
||||
],
|
||||
"blacklist": [
|
||||
"诸葛亮在街亭前线亲自指挥",
|
||||
"空城计与城楼抚琴退司马懿",
|
||||
"公开刑场挥泪斩马谡",
|
||||
"把马谡伏诛或狱中物故写成无争议定论",
|
||||
"马谡与张郃单挑",
|
||||
"诸葛亮与司马懿在街亭对阵",
|
||||
"借东风、火攻等无关桥段",
|
||||
"把王平千人当成蜀军总兵力",
|
||||
"把街亭今址写成无争议定论",
|
||||
"明清盔甲城楼、京剧脸谱、夸张羽扇纶巾或仙术化视觉"
|
||||
],
|
||||
"storyWeb": {
|
||||
"entry": "../index.html",
|
||||
"template": "historical-battle-assets/story-template-v1",
|
||||
"calligraphy": {
|
||||
"text": "兰亭集序",
|
||||
"font": "../assets/fonts/YunFengJingLongXingShu-2.ttf",
|
||||
"required": true
|
||||
},
|
||||
"previews": [
|
||||
"../preview-desktop.png",
|
||||
"../preview-mobile.png"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,150 @@
|
||||
# 街亭之战·诸葛亮第一次北伐|素材说明
|
||||
|
||||
- 用户原称:街亭之战·诸葛亮首次北伐
|
||||
- 规范事件名:街亭之战·诸葛亮第一次北伐
|
||||
- 时代:三国·蜀汉建兴六年/曹魏太和二年(228年)
|
||||
- 时间:建兴六年春
|
||||
- 地点:街亭;今址有争议,常见考订指向今甘肃天水秦安陇城一带,不作定论
|
||||
- 一句话结论:马谡舍水上山,张郃绝其汲道而大破蜀军;街亭失守使诸葛亮第一次北伐失去前进支点,最终退回汉中。
|
||||
|
||||
## 约 82 秒主旁白
|
||||
|
||||
建兴六年春,诸葛亮第一次北伐出祁山。南安、天水、安定三郡响应,关中震动。街亭,是守住这股攻势的要口。众人主张用魏延、吴壹等宿将,诸葛亮却拔马谡统领前锋。马谡到了街亭,没有据城守水,反而舍水上山。王平接连劝阻,他没有听。魏将张郃不急攻山,只先切断汲水之道。烈日之下,山上的军阵从干渴开始崩散,张郃乘势击破。败局中,王平只领千人鸣鼓自持。张郃疑有伏兵,没有逼近;王平这才徐徐收拢逃散士卒,全军而还。街亭失守,诸葛亮进无所据,只得拔西县千余家退回汉中。三郡复归于魏。事后,诸葛亮上疏自责,请贬三等;马谡被系狱,正史对其究竟伏诛还是死于狱中记载不一。第一次北伐最好的机会,就这样断在一条没有守住的水道上。
|
||||
|
||||
## 分幕素材
|
||||
|
||||
### 第一幕|三郡响应
|
||||
|
||||
- 时间地点:228年春,祁山与陇右
|
||||
- 叙事作用:交代第一次北伐开局之盛,以及街亭为何关系全局。
|
||||
- 旁白:建兴六年春,诸葛亮第一次北伐出祁山。南安、天水、安定三郡响应,关中震动。街亭,是守住这股攻势的要口。
|
||||
- 叠字标题:三郡响应
|
||||
- 一句短文案:北伐刚刚打开陇右,街亭便成了必须守住的门闩。
|
||||
- 人物标签:
|
||||
- 诸葛亮/蜀汉丞相、第一次北伐全军统帅/率主力攻祁山;本人不在街亭前线
|
||||
- 图片:`images/01-three-commandaries-rise.png`、`images/01-three-commandaries-rise.webp`
|
||||
- 画面说明:诸葛亮在祁山军营查看地图,信使抵达;营外军列进入陇右山谷,远处城寨暗示三郡响应。
|
||||
- 替代文本:冷色晨光下,诸葛亮在山谷军帐中按着地图,信使与行军队列从祁山方向进入陇右。
|
||||
- 最终提示词摘要:228年春祁山军营,诸葛亮主持第一次北伐,陇右山谷、行军纵队与三郡响应的远景;东汉末年写实、冷灰赭土、16:9、无文字。
|
||||
- 视觉补全:军帐位置、信使到达的具体瞬间、远处城寨与旗帜均为叙事性构图,不是史料逐项记载。
|
||||
- 史实依据:《三国志·魏书·明帝纪》《三国志·蜀书·诸葛亮传》。
|
||||
|
||||
### 第二幕|舍水上山
|
||||
|
||||
- 时间地点:228年春,街亭山地与水道
|
||||
- 叙事作用:呈现导致战败的部署选择,以及王平劝谏不从。
|
||||
- 旁白:众人主张用魏延、吴壹等宿将,诸葛亮却拔马谡统领前锋。马谡到了街亭,没有据城守水,反而舍水上山。王平接连劝阻,他没有听。
|
||||
- 叠字标题:舍水上山
|
||||
- 一句短文案:山势看似可恃,真正的命门却在山下那条水道。
|
||||
- 人物标签:
|
||||
- 马谡/参军、街亭前锋主将/违节度,舍水上山,不下据城
|
||||
- 王平/裨将军、马谡先锋部将/接连规劝马谡守住水道,未被采纳
|
||||
- 诸葛亮/蜀汉丞相、全军统帅/违众拔马谡统前锋;不在本幕画面
|
||||
- 图片:`images/02-abandon-water-climb-ridge.png`、`images/02-abandon-water-climb-ridge.webp`
|
||||
- 画面说明:马谡指挥军士把营具搬上高坡,王平在下方指向水道、道路与可守据点急切劝阻。
|
||||
- 替代文本:干燥山坡上,马谡指向高处命令扎营,披甲的王平则指向山下水道和街亭据点劝阻。
|
||||
- 最终提示词摘要:街亭干燥山坡,马谡命军上山,王平指向水源与道路劝阻;强调人物立场和地形关系,东汉末年写实、16:9、无文字。
|
||||
- 视觉补全:山坡朝向、城寨外观、人物站位和白昼光线为视觉重构;街亭确址与地貌细节有争议。
|
||||
- 史实依据:《三国志·蜀书·马良传》《三国志·蜀书·王平传》《三国志·魏书·张郃传》。
|
||||
|
||||
### 第三幕|绝其汲道
|
||||
|
||||
- 时间地点:228年春,街亭山下水道
|
||||
- 叙事作用:用“断水而非斗将”表现张郃识地形、抓住蜀军死穴的制胜方式。
|
||||
- 旁白:魏将张郃不急攻山,只先切断汲水之道。烈日之下,山上的军阵从干渴开始崩散,张郃乘势击破。
|
||||
- 叠字标题:绝其汲道
|
||||
- 一句短文案:张郃没有仰攻高地,而是先让那座山失去水。
|
||||
- 人物标签:
|
||||
- 张郃/曹魏右将军、街亭前线主将/督诸军切断汲道,击破马谡
|
||||
- 马谡/蜀汉前锋主将/山上军阵因失水、失序而溃
|
||||
- 图片:`images/03-cut-the-waterline.png`、`images/03-cut-the-waterline.webp`
|
||||
- 画面说明:张郃在水道旁布置步骑封锁,山上的蜀营被孤立,士卒带空水器望向被控制的溪流。
|
||||
- 替代文本:张郃骑马立在山下溪流旁,魏军沿水道列阵封锁,远处高坡上的蜀军营地被隔绝。
|
||||
- 最终提示词摘要:街亭水道低机位,张郃沉着控制道路与溪流,高处蜀营在热浪中孤立;不画单挑,以战术和空间关系表达胜负,16:9、无文字。
|
||||
- 视觉补全:魏军封锁线的具体阵形、骑兵比例、烈日与空水器为不改变史实走向的可视化补全;史书未记当日天气与确切兵数。
|
||||
- 史实依据:《三国志·魏书·张郃传》《三国志·蜀书·诸葛亮传》。
|
||||
|
||||
### 第四幕|鸣鼓收军
|
||||
|
||||
- 时间地点:街亭败局展开后,蜀军撤退方向
|
||||
- 叙事作用:从全线溃败中突出王平以千人稳阵、收合遗众的真实功绩。
|
||||
- 旁白:败局中,王平只领千人鸣鼓自持。张郃疑有伏兵,没有逼近;王平这才徐徐收拢逃散士卒,全军而还。
|
||||
- 叠字标题:鸣鼓不退
|
||||
- 一句短文案:街亭已经败了,王平却让一千人没有跟着败局一起散掉。
|
||||
- 人物标签:
|
||||
- 王平/蜀汉裨将军/领千人鸣鼓自持,徐徐收合诸营遗众而还
|
||||
- 张郃/曹魏右将军/疑有伏兵,未继续逼迫王平部
|
||||
- 图片:`images/04-drums-hold-the-line.png`、`images/04-drums-hold-the-line.webp`
|
||||
- 画面说明:暮色中,王平与千人鼓阵保持秩序;对面魏骑停步观察,溃散士卒向鼓声靠拢。
|
||||
- 替代文本:暮色山谷里,王平站在战鼓旁维持整齐队列,远处魏军骑兵停下,逃散士卒向鼓阵聚拢。
|
||||
- 最终提示词摘要:街亭暮色,王平率千人列阵鸣鼓,魏骑因疑伏兵而止,溃兵回归;克制、非凯旋、东汉末年写实、16:9、无文字。
|
||||
- 视觉补全:暮色、鼓的数量与排列、两军可视距离为镜头化处理;正史只明确记“千人鸣鼓自持”与张郃疑伏不逼。
|
||||
- 史实依据:《三国志·蜀书·王平传》。
|
||||
|
||||
### 第五幕|退军自贬
|
||||
|
||||
- 时间地点:街亭败后,蜀军退还汉中途中
|
||||
- 叙事作用:收束第一次北伐失败、三郡复失、诸葛亮引咎与马谡结局歧义。
|
||||
- 旁白:街亭失守,诸葛亮进无所据,只得拔西县千余家退回汉中。三郡复归于魏。事后,诸葛亮上疏自责,请贬三等;马谡被系狱,正史对其究竟伏诛还是死于狱中记载不一。第一次北伐最好的机会,就这样断在一条没有守住的水道上。
|
||||
- 叠字标题:进无所据
|
||||
- 一句短文案:失去的不是一座山,而是第一次北伐继续向前的支点。
|
||||
- 人物标签:
|
||||
- 诸葛亮/蜀汉丞相、全军统帅/退军还汉中,上疏引咎,请自贬三等
|
||||
- 马谡/街亭败将/败后系狱;正史对伏诛或狱中物故的记载不一
|
||||
- 西县千余家/被迁百姓/随蜀军撤回汉中
|
||||
- 图片:`images/05-retreat-and-accountability.png`、`images/05-retreat-and-accountability.webp`
|
||||
- 画面说明:夜间撤军,诸葛亮在空下来的军帐中把官印放到请罪奏表旁;帐外军士、家眷和辎重沿山路南撤。
|
||||
- 替代文本:月夜下,诸葛亮在撤军军帐中放下官印,帐外军队与迁徙百姓沿山路离开陇右。
|
||||
- 最终提示词摘要:撤往汉中的夜间军帐,诸葛亮放下官印象征请贬,帐外军民队列撤离;克制承担而非戏剧痛哭,16:9、无文字。
|
||||
- 视觉补全:夜间军帐、放下官印的动作与撤退队列同框属于象征性组合;史书未记上疏发生的具体帐幕、时刻或姿势。
|
||||
- 史实依据:《三国志·蜀书·诸葛亮传》《三国志·蜀书·马良传》《三国志·蜀书·王平传》《三国志·魏书·明帝纪》。
|
||||
|
||||
## BGM 选择
|
||||
|
||||
- 选中曲目:`zhanzhen:jieting#0`《街亭之战》
|
||||
- 版本:电影级配乐
|
||||
- 项目状态:待生成/待导出;本地曲库已有作曲方案,但接口显示 `hasAudio: false`,素材包不附 MP3。
|
||||
- 使用方式:优先生成无主唱纯伴奏版;若只得到人声版,必须使用伴奏或去人声 stem,避免压住旁白。
|
||||
- 选择理由:70 BPM 的冷环境极简配乐,以热浪、滴答、箫与古琴泛音表现“断水后缓慢收紧”的战术压力;没有英雄式爆点,适合从北伐起势一路压到退军自贬。
|
||||
|
||||
### Cue sheet
|
||||
|
||||
| 时间 | 幕次 | 剪辑方向 |
|
||||
| --- | --- | --- |
|
||||
| 00:00–00:14 | 01 | 热浪底噪与极轻脉冲,从冷晨和行军远景起,不要过早给鼓点。 |
|
||||
| 00:14–00:31 | 02 | 加入稀疏滴答与单个古琴泛音;马谡指向山顶时,和声收紧半音。 |
|
||||
| 00:31–00:48 | 03 | 低频缓慢逼近,箫音保持冷直;“切断汲水之道”落在第一次明显低音进入。 |
|
||||
| 00:48–01:03 | 04 | 收薄到近静音,只保留稳态脉冲给鼓阵画面;不要做凯旋高潮。 |
|
||||
| 01:03–01:22 | 05 | 重新引入低频后逐层抽空;“一条没有守住的水道”后只留一口箫气并断入静默。 |
|
||||
|
||||
## 史实边界
|
||||
|
||||
### 史实依据
|
||||
|
||||
- 《三国志·蜀书·诸葛亮传》:马谡督诸军在前,违节度、举动失宜,大为张郃所破;诸葛亮退军、自贬并戮谡谢众。
|
||||
- 《三国志·蜀书·马良传》:违众拔谡、士卒离散;马谡下狱物故、诸葛亮为之流涕。
|
||||
- 《三国志·蜀书·王平传》:舍水上山、王平连规谏;千人鸣鼓自持、收合遗众而还。
|
||||
- 《三国志·魏书·张郃传》:马谡依阻南山、不下据城;张郃绝其汲道、大破之,并平三郡。
|
||||
- 《三国志·魏书·明帝纪》:三郡响应、曹真都督关右、张郃击亮于街亭大破之,亮败走、三郡平。
|
||||
- 项目内核对文件:`digital-me-backend/src/zhanzhenData.js`、`digital-me-backend/src/zhanzhenDangan.js`、`digital-me-backend/src/rujuDashi/wei.js`、`digital-me-backend/src/tazhuan.js`。
|
||||
|
||||
### 视觉补全
|
||||
|
||||
- 五幕的天气、时辰、镜头站位、营帐样式、军阵距离与人物面貌均为视觉设计,不作为史实断言。
|
||||
- 画面统一采用东汉末年至三国时期可解释的衣甲、木构、军帐与陇右干旱地貌;不把争议中的街亭今址画成唯一结论。
|
||||
- 第一幕远景“三郡响应”和第五幕“放下官印”是把多条史实压缩进单幅画面的象征构图。
|
||||
|
||||
### 禁用元素
|
||||
|
||||
- 不画“诸葛亮在街亭前线亲自指挥”;他是全军统帅,街亭前线实际主将为马谡。
|
||||
- 不画空城计、城楼抚琴退司马懿;该桥段不属街亭正史。
|
||||
- 不画公开刑场上的“挥泪斩马谡”;正史对马谡伏诛或下狱物故记载不一。
|
||||
- 不画马谡与张郃单挑、诸葛亮与司马懿对阵、借东风、火攻等无关桥段。
|
||||
- 不给街亭双方写确定兵力;王平“千人”只是其所领部队,不等于蜀军总数。
|
||||
- 不使用明清式盔甲、城楼、旗号、京剧脸谱、夸张羽扇纶巾或仙术化视觉。
|
||||
|
||||
## 生成说明
|
||||
|
||||
- 图片由内置图像生成工具制作,共 5 张原始 PNG(1672×941)与 5 张 WebP。
|
||||
- 图片没有烘焙人物姓名、字幕、Logo 或水印,保留了后期叠字空间。
|
||||
- 五张图的最终完整提示词保存在 `manifest.json` 的各幕 `image.prompt` 字段。
|
||||
@@ -0,0 +1,206 @@
|
||||
<!doctype html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta name="theme-color" content="#eee8dc" />
|
||||
<meta name="description" content="马谡舍水上山,张郃绝其汲道而大破蜀军;街亭失守使诸葛亮第一次北伐失去前进支点,最终退回汉中。" />
|
||||
<title>街亭之战·诸葛亮第一次北伐|山上失水,一败动全局</title>
|
||||
<link rel="stylesheet" href="./styles.css" />
|
||||
</head>
|
||||
<body>
|
||||
<a class="skip-link" href="#story">跳到正文</a>
|
||||
<a class="collection-back" href="../../index.html" aria-label="返回三国故事集">返回故事集</a>
|
||||
|
||||
<div class="page-motifs" aria-hidden="true">
|
||||
<div class="flow-grid flow-grid--primary"></div>
|
||||
<div class="flow-grid flow-grid--secondary"></div>
|
||||
<img class="ambient-shape ambient-shape--01 orbit-a" src="./assets/meta/十字-01.svg" alt="" />
|
||||
<img class="ambient-shape ambient-shape--02 orbit-b" src="./assets/meta/形状-椭圆形.svg" alt="" />
|
||||
<img class="ambient-shape ambient-shape--03 orbit-c" src="./assets/meta/tx-正方形.svg" alt="" />
|
||||
<img class="ambient-shape ambient-shape--04 orbit-b" src="./assets/meta/十字-01.svg" alt="" />
|
||||
<img class="ambient-shape ambient-shape--05 orbit-a" src="./assets/meta/形状-椭圆形.svg" alt="" />
|
||||
<img class="ambient-shape ambient-shape--06 orbit-c" src="./assets/meta/tx-正方形.svg" alt="" />
|
||||
<img class="ambient-shape ambient-shape--07 orbit-a" src="./assets/meta/十字-01.svg" alt="" />
|
||||
<img class="ambient-shape ambient-shape--08 orbit-b" src="./assets/meta/形状-椭圆形.svg" alt="" />
|
||||
<img class="ambient-shape ambient-shape--09 orbit-c" src="./assets/meta/tx-正方形.svg" alt="" />
|
||||
<div class="motion-matrix motion-matrix--01"><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i></div>
|
||||
<div class="motion-matrix motion-matrix--02"><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i></div>
|
||||
<div class="motion-matrix motion-matrix--03"><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i></div>
|
||||
<div class="motion-matrix motion-matrix--04"><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i></div>
|
||||
</div>
|
||||
<div class="calligraphy-field" id="calligraphy-field" aria-hidden="true"></div>
|
||||
|
||||
<header class="site-header">
|
||||
<a class="brand" href="#top" aria-label="返回卷首">
|
||||
<span class="brand__seal">亭</span>
|
||||
<span class="brand__copy"><b>街亭之战</b><small>ILLUSTRATED CHRONICLE</small></span>
|
||||
</a>
|
||||
<nav aria-label="主导航">
|
||||
<a href="#story">卷首</a><a href="#chronicle">画卷</a><a href="#timeline">编年</a><a href="#archive">人物</a>
|
||||
</nav>
|
||||
<span class="site-header__volume">三国纪 · 228</span>
|
||||
<i class="site-header__progress" aria-hidden="true"></i>
|
||||
</header>
|
||||
|
||||
<main>
|
||||
<section class="collage" id="top" aria-label="街亭之战·诸葛亮第一次北伐五幕历史画卷">
|
||||
<div class="collage__field" aria-hidden="true">
|
||||
<figure class="collage-card collage-card--01" style="--r: -3.5deg"><img src="./assets/images/01-three-commandaries-rise.webp" alt="" /></figure>
|
||||
<figure class="collage-card collage-card--02" style="--r: 2.8deg"><img src="./assets/images/02-abandon-water-climb-ridge.webp" alt="" /></figure>
|
||||
<figure class="collage-card collage-card--03" style="--r: -1.8deg"><img src="./assets/images/03-cut-the-waterline.webp" alt="" /></figure>
|
||||
<figure class="collage-card collage-card--04" style="--r: 3.2deg"><img src="./assets/images/04-drums-hold-the-line.webp" alt="" /></figure>
|
||||
<figure class="collage-card collage-card--05" style="--r: -2.2deg"><img src="./assets/images/05-retreat-and-accountability.webp" alt="" /></figure>
|
||||
</div>
|
||||
<div class="collage__veil"></div>
|
||||
<div class="collage__title">
|
||||
<p><span>三国·蜀汉建兴六年/曹魏太和二年</span><i></i><span>228年春</span></p>
|
||||
<h1>街亭<br />之战</h1>
|
||||
<div class="collage__summary"><b>山上失水,一败动全局</b><span>诸葛亮第一次北伐的转折</span></div>
|
||||
</div>
|
||||
<div class="collage__stamp" aria-hidden="true"><span>历史画卷</span><b>伍</b></div>
|
||||
<div class="collage__caption"><span>街亭(今址有争议;常见考订指今甘肃天水秦安陇城一带)</span><span>伍幕 / 约82秒</span></div>
|
||||
<a class="collage__scroll" href="#story"><span>向下翻阅</span><i></i></a>
|
||||
</section>
|
||||
|
||||
<section class="story-intro" id="story" aria-labelledby="story-title">
|
||||
<div class="story-intro__grid">
|
||||
<aside class="story-intro__chapter" data-reveal data-direction="left"><span>CHAPTER</span><b>建兴<br />六年</b><i></i></aside>
|
||||
<div class="story-intro__title" data-reveal data-direction="left">
|
||||
<p class="eyebrow"><span></span> ILLUSTRATED RECORD</p>
|
||||
<h2 id="story-title">北伐的开局,<br />断在街亭。</h2>
|
||||
</div>
|
||||
<div class="story-intro__lead" data-reveal data-direction="right">
|
||||
<p>马谡舍水上山,张郃绝其汲道而大破蜀军;街亭失守使诸葛亮第一次北伐失去前进支点,最终退回汉中。</p>
|
||||
<dl><div><dt>时间</dt><dd>228年春</dd></div><div><dt>地点</dt><dd>街亭(今址有争议;常见考订指今甘肃天水秦安陇城一带)</dd></div><div><dt>核心</dt><dd>马谡舍水上山,张郃绝其汲道而大破蜀军;街亭失守使诸葛亮第一次北伐失去前进支点,最终退回汉中。</dd></div></dl>
|
||||
</div>
|
||||
</div>
|
||||
<figure class="story-intro__image" data-reveal data-direction="up">
|
||||
<img src="./assets/images/01-three-commandaries-rise.webp" alt="冷色晨光下,诸葛亮在山谷军帐中按着地图,信使与行军队列从祁山方向进入陇右。" />
|
||||
<figcaption><span>图一 · 三郡响应</span><small>228年春,祁山与陇右</small></figcaption>
|
||||
</figure>
|
||||
</section>
|
||||
|
||||
<section class="chronicle" id="chronicle" aria-label="图文叙事画卷">
|
||||
<header class="chronicle__header">
|
||||
<p data-reveal data-direction="left">画卷 / PICTORIAL RECORD</p><span data-reveal data-direction="right">五幕,从三郡响应到退军问责</span>
|
||||
</header>
|
||||
<article class="chronicle-entry" data-scene="01">
|
||||
<figure data-reveal data-direction="left">
|
||||
<img src="./assets/images/01-three-commandaries-rise.webp" alt="冷色晨光下,诸葛亮在山谷军帐中按着地图,信使与行军队列从祁山方向进入陇右。" loading="lazy" />
|
||||
<figcaption><span>01 / 三郡响应</span><small>228年春,祁山与陇右</small></figcaption>
|
||||
</figure>
|
||||
<div class="chronicle-entry__copy" data-reveal data-direction="right">
|
||||
<time datetime="228">228年春,祁山与陇右</time>
|
||||
<h2><span>01</span>三郡响应</h2>
|
||||
<p>建兴六年春,诸葛亮第一次北伐出祁山。南安、天水、安定三郡响应,关中震动。街亭,是守住这股攻势的要口。</p>
|
||||
<aside><b>画面札记</b><span>北伐刚刚打开陇右,街亭便成了必须守住的门闩。</span></aside>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="chronicle-entry chronicle-entry--reverse" data-scene="02">
|
||||
<figure data-reveal data-direction="right">
|
||||
<img src="./assets/images/02-abandon-water-climb-ridge.webp" alt="干燥山坡上,马谡指向高处命令扎营,披甲的王平则指向山下水道和街亭据点劝阻。" loading="lazy" />
|
||||
<figcaption><span>02 / 舍水上山</span><small>228年春,街亭山地与水道</small></figcaption>
|
||||
</figure>
|
||||
<div class="chronicle-entry__copy" data-reveal data-direction="left">
|
||||
<time datetime="228">228年春,街亭山地与水道</time>
|
||||
<h2><span>02</span>舍水上山</h2>
|
||||
<p>众人主张用魏延、吴壹等宿将,诸葛亮却拔马谡统领前锋。马谡到了街亭,没有据城守水,反而舍水上山。王平接连劝阻,他没有听。</p>
|
||||
<aside><b>画面札记</b><span>山势看似可恃,真正的命门却在山下那条水道。</span></aside>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="chronicle-entry" data-scene="03">
|
||||
<figure data-reveal data-direction="left">
|
||||
<img src="./assets/images/03-cut-the-waterline.webp" alt="张郃骑马立在山下溪流旁,魏军沿水道列阵封锁,远处高坡上的蜀军营地被隔绝。" loading="lazy" />
|
||||
<figcaption><span>03 / 绝其汲道</span><small>228年春,街亭山下水道</small></figcaption>
|
||||
</figure>
|
||||
<div class="chronicle-entry__copy" data-reveal data-direction="right">
|
||||
<time datetime="228">228年春,街亭山下水道</time>
|
||||
<h2><span>03</span>绝其汲道</h2>
|
||||
<p>魏将张郃不急攻山,只先切断汲水之道。烈日之下,山上的军阵从干渴开始崩散,张郃乘势击破。</p>
|
||||
<aside><b>画面札记</b><span>张郃没有仰攻高地,而是先让那座山失去水。</span></aside>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="chronicle-entry chronicle-entry--reverse" data-scene="04">
|
||||
<figure data-reveal data-direction="right">
|
||||
<img src="./assets/images/04-drums-hold-the-line.webp" alt="暮色山谷里,王平站在战鼓旁维持整齐队列,远处魏军骑兵停下,逃散士卒向鼓阵聚拢。" loading="lazy" />
|
||||
<figcaption><span>04 / 鸣鼓收军</span><small>街亭败局展开后,蜀军撤退方向</small></figcaption>
|
||||
</figure>
|
||||
<div class="chronicle-entry__copy" data-reveal data-direction="left">
|
||||
<time>街亭败局展开后,蜀军撤退方向</time>
|
||||
<h2><span>04</span>鸣鼓不退</h2>
|
||||
<p>败局中,王平只领千人鸣鼓自持。张郃疑有伏兵,没有逼近;王平这才徐徐收拢逃散士卒,全军而还。</p>
|
||||
<aside><b>画面札记</b><span>街亭已经败了,王平却让一千人没有跟着败局一起散掉。</span></aside>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="chronicle-entry" data-scene="05">
|
||||
<figure data-reveal data-direction="left">
|
||||
<img src="./assets/images/05-retreat-and-accountability.webp" alt="月夜下,诸葛亮在撤军军帐中放下官印,帐外军队与迁徙百姓沿山路离开陇右。" loading="lazy" />
|
||||
<figcaption><span>05 / 退军自贬</span><small>街亭败后,蜀军退还汉中途中</small></figcaption>
|
||||
</figure>
|
||||
<div class="chronicle-entry__copy" data-reveal data-direction="right">
|
||||
<time>街亭败后,蜀军退还汉中途中</time>
|
||||
<h2><span>05</span>进无所据</h2>
|
||||
<p>街亭失守,诸葛亮进无所据,只得拔西县千余家退回汉中。三郡复归于魏。事后,诸葛亮上疏自责,请贬三等;马谡被系狱,正史对其究竟伏诛还是死于狱中记载不一。第一次北伐最好的机会,就这样断在一条没有守住的水道上。</p>
|
||||
<aside><b>画面札记</b><span>失去的不是一座山,而是第一次北伐继续向前的支点。</span></aside>
|
||||
</div>
|
||||
</article>
|
||||
<blockquote class="chronicle-quote" data-reveal data-direction="up">
|
||||
<p>失去的不是一座山,而是第一次北伐继续向前的支点。</p>
|
||||
<cite>街亭之战·诸葛亮第一次北伐 · 卷末语</cite>
|
||||
</blockquote>
|
||||
</section>
|
||||
|
||||
<section class="record-line" id="timeline" aria-labelledby="timeline-title">
|
||||
<header data-reveal data-direction="left">
|
||||
<p class="eyebrow"><span></span> CHRONOLOGY</p>
|
||||
<h2 id="timeline-title">五个节点,<br />串起街亭之战·诸葛亮第一次北伐。</h2>
|
||||
</header>
|
||||
<ol>
|
||||
<li data-reveal data-direction="right"><time>228年春,祁山与陇右</time><i></i><div><b>三郡响应</b><p>建兴六年春,诸葛亮第一次北伐出祁山。南安、天水、安定三郡响应,关中震动。街亭,是守住这股攻势的要口。</p></div></li>
|
||||
<li data-reveal data-direction="right"><time>228年春,街亭山地与水道</time><i></i><div><b>舍水上山</b><p>众人主张用魏延、吴壹等宿将,诸葛亮却拔马谡统领前锋。马谡到了街亭,没有据城守水,反而舍水上山。王平接连劝阻,他没有听。</p></div></li>
|
||||
<li data-reveal data-direction="right"><time>228年春,街亭山下水道</time><i></i><div><b>绝其汲道</b><p>魏将张郃不急攻山,只先切断汲水之道。烈日之下,山上的军阵从干渴开始崩散,张郃乘势击破。</p></div></li>
|
||||
<li data-reveal data-direction="right"><time>街亭败局展开后,蜀军撤退方向</time><i></i><div><b>鸣鼓不退</b><p>败局中,王平只领千人鸣鼓自持。张郃疑有伏兵,没有逼近;王平这才徐徐收拢逃散士卒,全军而还。</p></div></li>
|
||||
<li data-reveal data-direction="right"><time>街亭败后,蜀军退还汉中途中</time><i></i><div><b>进无所据</b><p>街亭失守,诸葛亮进无所据,只得拔西县千余家退回汉中。三郡复归于魏。事后,诸葛亮上疏自责,请贬三等;马谡被系狱,正史对其究竟伏诛还是死于狱中记载不一。第一次北伐最好的机会,就这样断在一条没有守住的水道上。</p></div></li>
|
||||
</ol>
|
||||
</section>
|
||||
|
||||
<section class="archive" id="archive" aria-labelledby="archive-title">
|
||||
<header data-reveal data-direction="left">
|
||||
<p class="eyebrow"><span></span> CHARACTER FILES</p>
|
||||
<h2 id="archive-title">身在局中,<br />各有其位。</h2>
|
||||
</header>
|
||||
<div class="archive__list">
|
||||
<article data-reveal data-direction="up"><span>01</span><h3>诸葛亮</h3><p><b>蜀汉丞相、第一次北伐全军统帅</b>率主力攻祁山;本人不在街亭前线</p></article>
|
||||
<article data-reveal data-direction="up"><span>02</span><h3>马谡</h3><p><b>参军、街亭前锋主将</b>违节度,舍水上山,不下据城</p></article>
|
||||
<article data-reveal data-direction="up"><span>03</span><h3>王平</h3><p><b>裨将军、马谡先锋部将</b>接连规劝马谡守住水道,未被采纳</p></article>
|
||||
<article data-reveal data-direction="up"><span>04</span><h3>张郃</h3><p><b>曹魏右将军、街亭前线主将</b>督诸军切断汲道,击破马谡</p></article>
|
||||
<article data-reveal data-direction="up"><span>05</span><h3>西县千余家</h3><p><b>被迁百姓</b>随蜀军撤回汉中</p></article></div>
|
||||
<p class="archive__ending" data-reveal data-direction="up">马谡舍水上山,张郃绝其汲道而大破蜀军;街亭失守使诸葛亮第一次北伐失去前进支点,最终退回汉中。</p>
|
||||
</section>
|
||||
|
||||
<footer class="source-notes">
|
||||
<div><p class="eyebrow"><span></span> HISTORICAL SOURCES</p><h2>史实边界</h2></div>
|
||||
<div class="source-notes__copy">
|
||||
<p>事实叙述以《三国志·魏书·明帝纪》《三国志·蜀书·诸葛亮传》、《三国志·蜀书·马良传》、《三国志·蜀书·王平传》、《三国志·魏书·张郃传》为边界;图片中的天气、人物站位、光线与建筑细部属于可视化补全,均不作为史书记载。演义、神异与后世附会不写成确定事实。</p>
|
||||
<nav aria-label="在线史料"><a href="./data/素材说明.md">本地素材说明</a><a href="./data/manifest.json">结构化史料清单</a></nav>
|
||||
</div>
|
||||
</footer>
|
||||
</main>
|
||||
|
||||
|
||||
<div class="experience-controls" aria-label="页面体验控制">
|
||||
|
||||
<button class="motion-toggle" id="motion-toggle" type="button" aria-pressed="false">暂停动态</button>
|
||||
</div>
|
||||
<noscript>
|
||||
<style>[data-reveal] { opacity: 1 !important; filter: none !important; transform: none !important; }</style>
|
||||
<div class="no-script">当前为静态阅读模式。</div>
|
||||
</noscript>
|
||||
<script src="./main.js" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,191 @@
|
||||
(() => {
|
||||
const body = document.body;
|
||||
const root = document.documentElement;
|
||||
const header = document.querySelector('.site-header');
|
||||
const revealItems = [...document.querySelectorAll('[data-reveal]')];
|
||||
const cards = [...document.querySelectorAll('.collage-card')];
|
||||
const motionToggle = document.querySelector('#motion-toggle');
|
||||
const musicToggle = document.querySelector('#music-toggle');
|
||||
const backgroundMusic = document.querySelector('#background-music');
|
||||
const calligraphyField = document.querySelector('#calligraphy-field');
|
||||
const collectionBack = document.querySelector('.collection-back');
|
||||
const reduceMotion = window.matchMedia('(prefers-reduced-motion: reduce)');
|
||||
let motionPaused = reduceMotion.matches;
|
||||
let frameRequested = false;
|
||||
let calligraphyResizeTimer = 0;
|
||||
let calligraphyWidth = window.innerWidth;
|
||||
|
||||
collectionBack?.addEventListener('click', (event) => {
|
||||
if (window.parent === window) return;
|
||||
event.preventDefault();
|
||||
window.parent.postMessage(
|
||||
{ type: 'three-kingdoms-story-close' },
|
||||
window.location.origin,
|
||||
);
|
||||
});
|
||||
|
||||
const lantingPreface = `
|
||||
永和九年歲在癸丑暮春之初會於會稽山陰之蘭亭修禊事也群賢畢至少長咸集
|
||||
此地有崇山峻嶺茂林修竹又有清流激湍映帶左右引以為流觴曲水列坐其次
|
||||
雖無絲竹管弦之盛一觴一詠亦足以暢敘幽情是日也天朗氣清惠風和暢
|
||||
仰觀宇宙之大俯察品類之盛所以遊目騁懷足以極視聽之娛信可樂也
|
||||
夫人之相與俯仰一世或取諸懷抱晤言一室之內或因寄所託放浪形骸之外
|
||||
雖趣舍萬殊靜躁不同當其欣於所遇暫得於己快然自足不知老之將至
|
||||
及其所之既倦情隨事遷感慨係之矣向之所欣俯仰之間已為陳跡
|
||||
猶不能不以之興懷況修短隨化終期於盡古人云死生亦大矣豈不痛哉
|
||||
每覽昔人興感之由若合一契未嘗不臨文嗟悼不能喻之於懷
|
||||
固知一死生為虛誕齊彭殤為妄作後之視今亦猶今之視昔悲夫
|
||||
故列敘時人錄其所述雖世殊事異所以興懷其致一也後之覽者亦將有感於斯文
|
||||
`.replace(/[^\u3400-\u9fff]/g, '');
|
||||
|
||||
const randomBetween = (minimum, maximum) => minimum + Math.random() * (maximum - minimum);
|
||||
|
||||
const createCalligraphyField = () => {
|
||||
if (!calligraphyField) return;
|
||||
|
||||
const isCompact = window.innerWidth <= 680;
|
||||
const columnCount = isCompact ? 36 : Math.min(72, Math.max(48, Math.ceil(window.innerWidth / 28)));
|
||||
const source = lantingPreface + lantingPreface;
|
||||
const fragment = document.createDocumentFragment();
|
||||
const tones = ['#2d2821', '#2d2821', '#2d2821', '#874734', '#345f63'];
|
||||
let cursor = Math.floor(Math.random() * lantingPreface.length);
|
||||
|
||||
for (let index = 0; index < columnCount; index += 1) {
|
||||
const length = Math.floor(randomBetween(3, 8));
|
||||
const column = document.createElement('span');
|
||||
const fontSize = isCompact ? randomBetween(22, 48) : randomBetween(28, 78);
|
||||
const duration = randomBetween(0.8, 1.2) * (isCompact ? 68 : 82);
|
||||
|
||||
column.className = 'calligraphy-column';
|
||||
column.textContent = source.slice(cursor, cursor + length);
|
||||
column.style.setProperty('--top', `${randomBetween(-4, 82).toFixed(2)}vh`);
|
||||
column.style.setProperty('--start-x', `${randomBetween(106, 158).toFixed(2)}vw`);
|
||||
column.style.setProperty('--rest-x', `${randomBetween(2, 94).toFixed(2)}vw`);
|
||||
column.style.setProperty('--font-size', `${fontSize.toFixed(2)}px`);
|
||||
column.style.setProperty('--opacity', randomBetween(0.12, 0.4).toFixed(3));
|
||||
column.style.setProperty('--duration', `${duration.toFixed(2)}s`);
|
||||
column.style.setProperty('--delay', `${(-randomBetween(0, duration)).toFixed(2)}s`);
|
||||
column.style.setProperty('--tone', tones[Math.floor(Math.random() * tones.length)]);
|
||||
fragment.append(column);
|
||||
|
||||
cursor = (cursor + length) % lantingPreface.length;
|
||||
}
|
||||
|
||||
calligraphyField.replaceChildren(fragment);
|
||||
calligraphyWidth = window.innerWidth;
|
||||
};
|
||||
|
||||
const showAll = () => {
|
||||
revealItems.forEach((item) => item.classList.add('is-visible'));
|
||||
};
|
||||
|
||||
if ('IntersectionObserver' in window && !reduceMotion.matches) {
|
||||
const observer = new IntersectionObserver(
|
||||
(entries) => {
|
||||
entries.forEach((entry) => {
|
||||
if (!entry.isIntersecting) return;
|
||||
entry.target.classList.add('is-visible');
|
||||
observer.unobserve(entry.target);
|
||||
});
|
||||
},
|
||||
{ threshold: 0.12, rootMargin: '0px 0px -8% 0px' },
|
||||
);
|
||||
|
||||
revealItems.forEach((item) => observer.observe(item));
|
||||
window.addEventListener('pagehide', () => observer.disconnect(), { once: true });
|
||||
} else {
|
||||
showAll();
|
||||
}
|
||||
|
||||
const updateScrollEffects = () => {
|
||||
const scrollTop = window.scrollY;
|
||||
const scrollRange = Math.max(1, root.scrollHeight - window.innerHeight);
|
||||
const progress = Math.min(1, Math.max(0, scrollTop / scrollRange));
|
||||
|
||||
root.style.setProperty('--scroll-progress', progress.toFixed(4));
|
||||
header?.classList.toggle('is-scrolled', scrollTop > Math.max(90, window.innerHeight * 0.72));
|
||||
|
||||
if (!motionPaused && scrollTop < window.innerHeight * 1.15) {
|
||||
const heroProgress = Math.min(1, Math.max(0, scrollTop / window.innerHeight));
|
||||
cards.forEach((card, index) => {
|
||||
const direction = index % 2 === 0 ? -1 : 1;
|
||||
const distance = (14 + (index % 3) * 7) * heroProgress * direction;
|
||||
card.style.setProperty('--drift', `${distance.toFixed(2)}px`);
|
||||
});
|
||||
}
|
||||
|
||||
frameRequested = false;
|
||||
};
|
||||
|
||||
const requestScrollUpdate = () => {
|
||||
if (frameRequested) return;
|
||||
frameRequested = true;
|
||||
requestAnimationFrame(updateScrollEffects);
|
||||
};
|
||||
|
||||
const setMotionState = (paused) => {
|
||||
motionPaused = paused;
|
||||
body.classList.toggle('is-motion-paused', paused);
|
||||
motionToggle?.setAttribute('aria-pressed', String(paused));
|
||||
|
||||
if (motionToggle) {
|
||||
motionToggle.textContent = paused ? '恢复动态' : '暂停动态';
|
||||
}
|
||||
|
||||
if (paused) {
|
||||
cards.forEach((card) => card.style.setProperty('--drift', '0px'));
|
||||
showAll();
|
||||
} else {
|
||||
requestScrollUpdate();
|
||||
}
|
||||
};
|
||||
|
||||
const syncMusicState = () => {
|
||||
if (!musicToggle || !backgroundMusic) return;
|
||||
const isPlaying = !backgroundMusic.paused;
|
||||
musicToggle.setAttribute('aria-pressed', String(isPlaying));
|
||||
musicToggle.textContent = isPlaying ? '暂停音乐' : '播放音乐';
|
||||
};
|
||||
|
||||
const toggleMusic = async () => {
|
||||
if (!backgroundMusic || !musicToggle) return;
|
||||
|
||||
if (!backgroundMusic.paused) {
|
||||
backgroundMusic.pause();
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
await backgroundMusic.play();
|
||||
} catch {
|
||||
musicToggle.textContent = '音乐不可用';
|
||||
musicToggle.setAttribute('aria-pressed', 'false');
|
||||
}
|
||||
};
|
||||
|
||||
motionToggle?.addEventListener('click', () => setMotionState(!motionPaused));
|
||||
musicToggle?.addEventListener('click', toggleMusic);
|
||||
backgroundMusic?.addEventListener('play', syncMusicState);
|
||||
backgroundMusic?.addEventListener('pause', syncMusicState);
|
||||
backgroundMusic?.addEventListener('error', () => {
|
||||
if (musicToggle) musicToggle.textContent = '音乐不可用';
|
||||
});
|
||||
window.addEventListener('scroll', requestScrollUpdate, { passive: true });
|
||||
window.addEventListener('resize', requestScrollUpdate, { passive: true });
|
||||
window.addEventListener('resize', () => {
|
||||
window.clearTimeout(calligraphyResizeTimer);
|
||||
calligraphyResizeTimer = window.setTimeout(() => {
|
||||
if (Math.abs(window.innerWidth - calligraphyWidth) > 120) createCalligraphyField();
|
||||
}, 220);
|
||||
}, { passive: true });
|
||||
reduceMotion.addEventListener?.('change', (event) => setMotionState(event.matches));
|
||||
|
||||
requestAnimationFrame(() => {
|
||||
createCalligraphyField();
|
||||
if (backgroundMusic) backgroundMusic.volume = 0.28;
|
||||
syncMusicState();
|
||||
body.classList.add('is-ready');
|
||||
setMotionState(motionPaused);
|
||||
updateScrollEffects();
|
||||
});
|
||||
})();
|
||||
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1787640980513" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="14469" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M962 962H62V62h900v900zM162 862h700V162H162v700z" p-id="14470" fill="#2c2c2c"></path></svg>
|
||||
|
After Width: | Height: | Size: 425 B |
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1787640936341" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="12356" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M64.164369 555.936675 64.164369 466.466967l894.496507 0 0 89.469708L64.164369 555.936675 64.164369 555.936675zM466.676745 958.450075 466.676745 63.953567l89.469708 0 0 894.497531L466.676745 958.451098 466.676745 958.450075z" fill="#2c2c2c" p-id="12357"></path></svg>
|
||||
|
After Width: | Height: | Size: 600 B |
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1787640959653" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13428" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M512 928C282.624 928 96 741.376 96 512S282.624 96 512 96s416 186.624 416 416-186.624 416-416 416z m0-768C317.92 160 160 317.92 160 512s157.92 352 352 352 352-157.92 352-352S706.08 160 512 160z" fill="#2c2c2c" p-id="13429"></path></svg>
|
||||
|
After Width: | Height: | Size: 569 B |
@@ -0,0 +1,319 @@
|
||||
{
|
||||
"event": {
|
||||
"canonicalName": "魏灭蜀之战(邓艾钟会伐蜀·刘禅出降)",
|
||||
"aliases": [
|
||||
"邓艾钟会灭蜀·后主出降",
|
||||
"魏灭蜀之战",
|
||||
"景元伐蜀"
|
||||
],
|
||||
"era": "三国·曹魏景元四年/蜀汉炎兴元年",
|
||||
"date": "263年秋至冬",
|
||||
"place": "汉中、剑阁、阴平、江油、绵竹、成都",
|
||||
"summary": "钟会主力进入汉中却受阻剑阁,邓艾由阴平险道迂回江油、击破绵竹;刘禅在成都出降,蜀汉灭亡。"
|
||||
},
|
||||
"narration": {
|
||||
"language": "zh-CN",
|
||||
"estimatedSeconds": 88,
|
||||
"fullText": "景元四年秋,曹魏大举伐蜀。钟会率十余万众分道进入汉中;邓艾则由狄道向沓中,牵制姜维。阳安关失守后,姜维退守剑阁。姜维凭险把钟会大军挡在关外。魏军粮运日难,钟会一度准备退兵。邓艾却提出另一条路:从阴平穿过七百余里无人之地,绕到剑阁背后。冬十月,他率精锐凿山架桥,裹毡下坡,士卒攀木缘崖,终于抵达江油。守将马邈投降,成都门户突然洞开。诸葛瞻率军退守绵竹,拒绝邓艾劝降。魏军初战不利,随后两翼再进;诸葛瞻与黄崇、诸葛尚等战死。消息传到成都,群臣议论奔吴或走南中,谯周主张向魏投降。刘禅遣使送出玺绶,又命姜维向钟会放下兵器。邓艾抵达成都城北,刘禅率太子、诸王和群臣,面缚舆榇,来到军门。邓艾为他们解缚、焚去棺木,并约束军士不得掳掠。剑阁仍未被钟会攻破,蜀汉却已从背后被打开,就此灭亡。"
|
||||
},
|
||||
"scenes": [
|
||||
{
|
||||
"id": "01",
|
||||
"title": "三路入汉中",
|
||||
"timePlace": "263年秋,秦岭诸谷道与汉中",
|
||||
"purpose": "交代曹魏分路伐蜀与钟会主力进入汉中的总体战局。",
|
||||
"narration": "景元四年秋,曹魏大举伐蜀。钟会率十余万众分道进入汉中;邓艾则由狄道向沓中,牵制姜维。阳安关失守后,姜维退守剑阁。",
|
||||
"overlay": {
|
||||
"heading": "三路入汉中",
|
||||
"line": "十余万主力穿过秦岭,先把汉中的外门推开。"
|
||||
},
|
||||
"people": [
|
||||
{
|
||||
"name": "钟会",
|
||||
"office": "曹魏镇西将军、伐蜀主力统帅",
|
||||
"action": "统率主力分由斜谷、骆谷、子午谷进入汉中"
|
||||
},
|
||||
{
|
||||
"name": "邓艾",
|
||||
"office": "曹魏征西将军",
|
||||
"action": "由狄道进向沓中,牵制姜维;不在本幕画面"
|
||||
},
|
||||
{
|
||||
"name": "姜维",
|
||||
"office": "蜀汉大将军",
|
||||
"action": "由沓中撤向剑阁;不在本幕画面"
|
||||
}
|
||||
],
|
||||
"image": {
|
||||
"original": "images/01-三路入汉中.png",
|
||||
"delivery": "images/01-三路入汉中.webp",
|
||||
"alt": "秋雨后的秦岭山谷中,钟会在高处察看魏军与驮队沿多条山路进入汉中,远处是夯土木构关隘。",
|
||||
"prompt": "Create a 16:9 cinematic historical-realism keyframe for a Chinese Three Kingdoms documentary, set in autumn 263 CE during the Cao Wei conquest of Shu. Scene: Three routes enter Hanzhong. A vast elevated view down a real, narrow Qinling mountain valley after rain. In the near right foreground stands Zhong Hui, age 38, refined narrow oval face, composed intelligent expression, neat short moustache and small goatee, wearing a dark teal commander's robe beneath restrained black-lacquered lamellar armor and a low black scholar-military cap. He studies the valley rather than posing heroically. Below him, disciplined Wei infantry columns and pack animals move in several separated files through misty roads toward a plausible Han-era rammed-earth and timber mountain pass in the far middle distance. Signal flags are simple geometric colors with no writing. The scale comes from terrain and depth, not fantasy-sized armies. Art direction: premium live-action film still, grounded archaeology-inspired Three Kingdoms clothing and armor, weathered linen, hemp, wood, muted metal, Sichuan/Qinling atmosphere, charcoal black, pine green, weathered ochre and cold blue palette with one small warm lantern accent. Volumetric fog, overcast natural light, subtle film grain, realistic faces, restrained tension. Wide composition with clean dark mist in the upper-left for later title overlay and readable foreground/midground/background separation. Strict exclusions: no text, no Chinese characters, no captions, no watermark, no logo, no map graphics, no Ming or Qing armor, no horned helmets, no Great Wall, no gigantic fantasy fortress, no firearms, no explosions, no anime, no illustration, no gore, no modern objects. Make the architecture and military material culture plausibly late Han / Three Kingdoms.",
|
||||
"visualInference": "钟会面貌、站位、关隘外形、行军纵队的可见数量与秋雨雾气均为视觉重构;画面用多条队列象征分路进军,不当作精确地理图。",
|
||||
"referenceImages": [],
|
||||
"refinementPrompt": ""
|
||||
},
|
||||
"sources": [
|
||||
"《三国志·魏书·邓艾钟会传》",
|
||||
"《资治通鉴》卷七十八"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "02",
|
||||
"title": "剑阁拒钟会",
|
||||
"timePlace": "263年秋冬之交,剑阁",
|
||||
"purpose": "说明姜维守住剑阁、钟会粮道日难,为邓艾改走阴平埋下转折。",
|
||||
"narration": "姜维凭险把钟会大军挡在关外。魏军粮运日难,钟会一度准备退兵。邓艾却提出另一条路:从阴平穿过七百余里无人之地,绕到剑阁背后。",
|
||||
"overlay": {
|
||||
"heading": "剑阁拒钟会",
|
||||
"line": "主力被挡在险关前,真正的破口却出现在背后。"
|
||||
},
|
||||
"people": [
|
||||
{
|
||||
"name": "姜维",
|
||||
"office": "蜀汉大将军",
|
||||
"action": "与廖化、张翼、董厥等合兵守住剑阁"
|
||||
},
|
||||
{
|
||||
"name": "钟会",
|
||||
"office": "曹魏镇西将军",
|
||||
"action": "攻关不克、粮运日难,准备退还"
|
||||
}
|
||||
],
|
||||
"image": {
|
||||
"original": "images/02-剑阁拒钟会.png",
|
||||
"delivery": "images/02-剑阁拒钟会.webp",
|
||||
"alt": "姜维立在剑阁木栅关垒上,俯视狭长谷道里受阻的魏军粮车与营阵,山雾封住远处道路。",
|
||||
"prompt": "Create a new 16:9 cinematic historical-realism keyframe in the exact same visual world as the reference image. Preserve Zhong Hui's identity, face, age, dark teal robe, black lamellar armor and low black military-scholar cap. Scene: Jiang Wei holds Jian'ge. Late autumn 263 CE. A physically plausible narrow Sichuan mountain pass, with a modest late-Han timber-and-rammed-earth gate and palisade integrated into towering gray cliffs—not a later imperial fortress. In the upper-left foreground on the defensive rampart stands Jiang Wei, age 61, lean and weathered, gray-streaked short beard, calm alert eyes, wearing a plain dark green robe beneath worn Shu lamellar armor. A few disciplined Shu defenders hold spears and crossbows behind him. Far below along the pass road, Zhong Hui is recognizable beside a restrained command awning and stalled Wei supply carts; he studies the unbroken defense. The scene communicates that the main Wei army has reached Jian'ge but cannot force the pass, with a thin stretched supply line disappearing into mist. Art direction: premium live-action historical film still, archaeology-inspired late Han material culture, charcoal, pine green, cold gray and faded ochre, damp mountain air, natural overcast light, subtle film grain, realistic faces. Tense strategic stalemate rather than active combat. Wide composition, strong vertical geography, clean dark cliff and fog at upper right for later overlay. Strict exclusions: no text, no Chinese characters, no captions, no watermark, no logo, no fantasy fortress, no Great Wall battlements, no pagoda skyline, no Ming or Qing armor, no horned helmets, no firearms, no explosions, no flaming siege, no duel between Jiang Wei and Zhong Hui, no anime, no illustration, no gore.",
|
||||
"visualInference": "剑阁关垒的具体木构形制、姜维与魏军粮道同框、人物面貌和山雾为视觉补全;画面表达战略对峙,不主张双方统帅曾近距离相见。",
|
||||
"referenceImages": [
|
||||
"images/01-三路入汉中.png(钟会身份、色调与视觉世界参照)"
|
||||
],
|
||||
"refinementPrompt": ""
|
||||
},
|
||||
"sources": [
|
||||
"《三国志·魏书·邓艾钟会传》",
|
||||
"《资治通鉴》卷七十八"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "03",
|
||||
"title": "偷渡阴平",
|
||||
"timePlace": "263年冬十月,阴平至江油险道",
|
||||
"purpose": "表现邓艾避开剑阁、穿越无人险道的战役决定性机动。",
|
||||
"narration": "冬十月,邓艾率精锐凿山架桥,裹毡下坡,士卒攀木缘崖,终于抵达江油。守将马邈投降,成都门户突然洞开。",
|
||||
"overlay": {
|
||||
"heading": "偷渡阴平",
|
||||
"line": "七百余里无人之地,把一支军队送到了剑阁背后。"
|
||||
},
|
||||
"people": [
|
||||
{
|
||||
"name": "邓艾",
|
||||
"office": "曹魏征西将军",
|
||||
"action": "率精锐由阴平险道迂回江油"
|
||||
},
|
||||
{
|
||||
"name": "马邈",
|
||||
"office": "蜀汉江油守将",
|
||||
"action": "见魏军突至而投降;不在本幕画面"
|
||||
}
|
||||
],
|
||||
"image": {
|
||||
"original": "images/03-偷渡阴平.png",
|
||||
"delivery": "images/03-偷渡阴平.webp",
|
||||
"alt": "冬日阴平山道上,邓艾裹着毡衣拉绳攀下斜坡,魏军士卒在雾中沿树木与岩壁鱼贯而进。",
|
||||
"prompt": "Create a 16:9 cinematic historical-realism keyframe for a Chinese Three Kingdoms documentary, set in early winter 263 CE during Deng Ai's crossing of the Yinping side route. Scene: Stealing through Yinping. A terrifying but physically plausible oblique mountain descent in a remote, uninhabited Sichuan-Gansu border range. The slope is very steep yet traversable: broken gray rock, sparse cold pines, rope handlines, narrow ledges and timber footholds—not a vertical fantasy abyss. In the near foreground, Deng Ai, age 66, rugged stocky build, weathered tan face, high cheekbones, short gray beard, intense practical gaze, wears layered brown-gray wool and hemp over restrained dark lamellar armor. He is wrapped in a thick felt blanket and carefully slides down a slanted rocky chute while gripping a rope, demonstrating the descent to his men. Behind him, exhausted elite soldiers advance in single file, some clinging to trees and rope, others lowering packs; mist conceals the enormous depth. No one is falling. Art direction: premium live-action film still, grounded archaeology-inspired Three Kingdoms clothing and equipment, harsh natural cold, charcoal, stone gray, pine green and faded brown palette, soft wintry diffuse light, mountain fog, realistic faces, tactile felt and rope, subtle film grain. Heroism through endurance and logistics, not spectacle. Wide composition with clean foggy negative space at upper right for later overlay and strong diagonal movement from upper-left to lower-right. Strict exclusions: no text, no Chinese characters, no captions, no watermark, no logo, no impossible skydiving, no giant waterfall, no wing suits, no avalanche, no fantasy weapons, no Ming or Qing armor, no horned helmets, no firearms, no explosions, no anime, no illustration, no gore, no modern climbing gear.",
|
||||
"visualInference": "绳索、落脚点、坡度、积雪与人物具体动作属于安全且可理解的镜头化补全;不把史书的裹毡推转而下夸张成凌空坠崖。",
|
||||
"referenceImages": [],
|
||||
"refinementPrompt": ""
|
||||
},
|
||||
"sources": [
|
||||
"《三国志·魏书·邓艾传》",
|
||||
"《资治通鉴》卷七十八"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "04",
|
||||
"title": "绵竹战殁",
|
||||
"timePlace": "263年冬,绵竹",
|
||||
"purpose": "交代成都最后一支成建制援军的败亡,以及阴平奇袭由机动转化为战略崩解。",
|
||||
"narration": "诸葛瞻率军退守绵竹,拒绝邓艾劝降。魏军初战不利,随后两翼再进;诸葛瞻与黄崇、诸葛尚等战死。",
|
||||
"overlay": {
|
||||
"heading": "绵竹战殁",
|
||||
"line": "成都最后的屏障,在一次重整后的进攻中崩解。"
|
||||
},
|
||||
"people": [
|
||||
{
|
||||
"name": "诸葛瞻",
|
||||
"office": "蜀汉卫将军、平尚书事",
|
||||
"action": "退守绵竹、拒降,战败身死"
|
||||
},
|
||||
{
|
||||
"name": "诸葛尚",
|
||||
"office": "诸葛瞻之子",
|
||||
"action": "随父出战,死于绵竹"
|
||||
},
|
||||
{
|
||||
"name": "黄崇",
|
||||
"office": "蜀汉尚书郎",
|
||||
"action": "激励军士力战,死于绵竹"
|
||||
},
|
||||
{
|
||||
"name": "邓艾",
|
||||
"office": "曹魏征西将军",
|
||||
"action": "重新部署两翼,再战击破蜀军"
|
||||
}
|
||||
],
|
||||
"image": {
|
||||
"original": "images/04-绵竹战殁.png",
|
||||
"delivery": "images/04-绵竹战殁.webp",
|
||||
"alt": "绵竹夯土城垒外,诸葛瞻与诸葛尚站在残破蜀军阵列前,远处邓艾在高地指挥两翼合进。",
|
||||
"prompt": "Create a new 16:9 cinematic historical-realism keyframe in the exact same visual world as the reference image. Preserve Deng Ai's identity: age 66, rugged stocky build, weathered tan face, high cheekbones, short gray beard, brown-gray wool and hemp layers over dark restrained lamellar armor. Scene: The last stand at Mianzhu. Early winter 263 CE outside a modest late-Han rammed-earth and timber city outwork on the Chengdu plain beneath cold distant mountains. The battle is at its decisive final phase but remains non-graphic. In the near center-left, Zhuge Zhan, age 36, serious composed face, dark indigo robe under worn Shu lamellar armor, stands with his adult son Zhuge Shang and a compact last formation around torn plain-colored standards. Their posture shows refusal to surrender and imminent defeat; dust, abandoned shields and broken spear shafts imply battle, but no visible wounds or corpses. On a low rise at the far right, the same Deng Ai from the reference directs two converging Wei wings with a calm raised hand, not posing. Sparse smoke and winter sunlight reveal the encirclement. Art direction: premium live-action historical film still, grounded late Han military material culture, charcoal, indigo, faded ochre, cold blue-gray, one restrained dusty amber highlight, realistic faces, tactile linen, wood and lacquered lamellae, subtle film grain. Tragic and sober, not triumphant spectacle. Wide composition with clean smoky upper-left negative space for later overlay and clear geography. Strict exclusions: no text, no Chinese characters, no captions, no watermark, no logo, no famous Eight Trigrams symbols, no Zhuge Liang ghost, no gigantic palace walls, no Ming or Qing armor, no horned helmets, no firearms, no explosions, no fantasy cavalry, no anime, no illustration, no gore, no severed heads, no close-up corpses.",
|
||||
"visualInference": "诸葛瞻父子面貌、两翼在同一画面合进、城垒形制、山雪和战场残迹均为视觉补全;不把死亡做成血腥特写。",
|
||||
"referenceImages": [
|
||||
"images/03-偷渡阴平.png(邓艾身份、衣甲与视觉世界参照)"
|
||||
],
|
||||
"refinementPrompt": ""
|
||||
},
|
||||
"sources": [
|
||||
"《三国志·魏书·邓艾传》",
|
||||
"《三国志·蜀书·后主传》",
|
||||
"《资治通鉴》卷七十八"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "05",
|
||||
"title": "成都出降",
|
||||
"timePlace": "263年冬,成都城北",
|
||||
"purpose": "以正式降礼和军纪约束收束蜀汉灭亡,避免把刘禅后来的洛阳轶事提前。",
|
||||
"narration": "消息传到成都,群臣议论奔吴或走南中,谯周主张向魏投降。刘禅遣使送出玺绶,又命姜维向钟会放下兵器。邓艾抵达成都城北,刘禅率太子、诸王和群臣,面缚舆榇,来到军门。邓艾为他们解缚、焚去棺木,并约束军士不得掳掠。剑阁仍未被钟会攻破,蜀汉却已从背后被打开,就此灭亡。",
|
||||
"overlay": {
|
||||
"heading": "后主出降",
|
||||
"line": "剑阁没有失守,成都却先打开了城门。"
|
||||
},
|
||||
"people": [
|
||||
{
|
||||
"name": "刘禅",
|
||||
"office": "蜀汉皇帝、后主",
|
||||
"action": "遣使奉玺绶,率太子、诸王与群臣出降"
|
||||
},
|
||||
{
|
||||
"name": "邓艾",
|
||||
"office": "曹魏征西将军",
|
||||
"action": "受降并为刘禅等解缚、焚榇,约束军士"
|
||||
},
|
||||
{
|
||||
"name": "谯周",
|
||||
"office": "蜀汉光禄大夫",
|
||||
"action": "在朝议中主张向魏投降;不在本幕画面"
|
||||
},
|
||||
{
|
||||
"name": "姜维",
|
||||
"office": "蜀汉大将军",
|
||||
"action": "奉刘禅敕令向钟会军放下兵器;不在本幕画面"
|
||||
}
|
||||
],
|
||||
"image": {
|
||||
"original": "images/05-成都出降.png",
|
||||
"delivery": "images/05-成都出降.webp",
|
||||
"alt": "成都北门外,刘禅与太子、诸王和群臣面缚站立,棺木车在侧,邓艾命军士解去绳索并保持军纪。",
|
||||
"prompt": "Create a new 16:9 cinematic historical-realism keyframe in the exact same visual world as the reference image. Preserve Deng Ai's identity: age 66, rugged stocky build, weathered tan face, high cheekbones, short gray beard, brown-gray wool and hemp layers over restrained dark lamellar armor. Scene: The Later Lord surrenders at Chengdu. Winter 263 CE at the north side of a plausible late-Han Chengdu military gate, built of rammed earth and timber, with no later imperial ornament. The mood is ritualized surrender, restrained and humane. At center-left stands Liu Shan, age 56, rounder weary dignified face, wearing a plain pale-ochre court robe without crown or imperial regalia. He is not kneeling or caricatured. Behind him stand the crown prince, several princes and a group of ministers in plain robes, their hands loosely bound behind them according to surrender ritual. Beside the group is a low plain wooden coffin cart, symbolic but not macabre. At center-right, the same Deng Ai from the reference steps forward and gives a clear order to his guards to cut the bonds; one guard has begun loosening a rope, while another prepares to remove the coffin cart. Wei soldiers remain disciplined with lowered weapons and do not loot. The open gate and quiet street beyond imply the city has yielded without a sack. Art direction: premium live-action historical film still, archaeology-inspired late Han dress and architecture, charcoal, faded ochre, muted brown, cold winter blue with a subtle warm light from within the gate, realistic faces and emotional restraint, natural low-angle light, subtle film grain. Wide balanced composition with clean misty upper-center space for later overlay. Convey the fall of a state through posture and ceremony, not humiliation. Strict exclusions: no text, no Chinese characters, no captions, no watermark, no logo, no kneeling or crawling buffoon, no drinking banquet, no 乐不思蜀 scene, no Zhong Hui present, no execution, no threat, no giant ornate palace, no Ming or Qing costume, no dragon throne, no horned helmets, no firearms, no explosions, no anime, no illustration, no gore.",
|
||||
"visualInference": "刘禅、太子诸王与群臣的具体人数和面貌、棺车式样、解缚瞬间、城门布局与光线为视觉重构;不把降礼解释为后世戏剧化羞辱。",
|
||||
"referenceImages": [
|
||||
"images/03-偷渡阴平.png(邓艾身份、衣甲与视觉世界参照)"
|
||||
],
|
||||
"refinementPrompt": ""
|
||||
},
|
||||
"sources": [
|
||||
"《三国志·魏书·邓艾传》",
|
||||
"《三国志·蜀书·后主传》",
|
||||
"《资治通鉴》卷七十八"
|
||||
]
|
||||
}
|
||||
],
|
||||
"bgm": {
|
||||
"catalogId": "seed-music-v1:chenyu:潮汐骨架",
|
||||
"title": "潮汐骨架",
|
||||
"version": "建议制作 76 BPM、无主唱纯伴奏的历史剪辑版",
|
||||
"status": "pending-export",
|
||||
"pathOrUrl": "",
|
||||
"usage": "保留原曲单一动机从轻到满、再逐层退去的结构;历史剪辑版以低弦、埙或低箫气声、堂鼓和木质打击替代强失真吉他,旁白期间整体下压。",
|
||||
"reason": "项目曲目本身是无歌词器乐,结构从轻起、层层堆叠、涨满后回落,能覆盖汉中进军、剑阁受阻、阴平突进、绵竹决战到成都降礼的完整战局弧线。",
|
||||
"cues": [
|
||||
{
|
||||
"from": "00:00",
|
||||
"to": "00:17",
|
||||
"scene": "01",
|
||||
"direction": "单一低弦动机和远风起,行军纵队展开时加入木质脉冲,不做凯旋节奏。"
|
||||
},
|
||||
{
|
||||
"from": "00:17",
|
||||
"to": "00:35",
|
||||
"scene": "02",
|
||||
"direction": "低音持续音收紧,极轻堂鼓表现粮道压力;提到另一条路时短暂抽空。"
|
||||
},
|
||||
{
|
||||
"from": "00:35",
|
||||
"to": "00:53",
|
||||
"scene": "03",
|
||||
"direction": "脉冲加密但控制音量,以绳索摩擦感的木质打击推动攀降;江油投降处骤停半拍。"
|
||||
},
|
||||
{
|
||||
"from": "00:53",
|
||||
"to": "01:09",
|
||||
"scene": "04",
|
||||
"direction": "全曲最满但不用英雄号角,低弦与鼓形成两翼合进;战死后迅速撤掉鼓组。"
|
||||
},
|
||||
{
|
||||
"from": "01:09",
|
||||
"to": "01:28",
|
||||
"scene": "05",
|
||||
"direction": "只留最初动机、低箫气声和少量环境声,解缚后逐层退去,灭亡一句落在自然尾音上。"
|
||||
}
|
||||
]
|
||||
},
|
||||
"sources": [
|
||||
{
|
||||
"claim": "钟会进入汉中、剑阁受阻;邓艾提议阴平迂回、裹毡下险、江油受降、绵竹再战与成都受降",
|
||||
"citation": "《三国志·魏书·邓艾钟会传》卷二十八",
|
||||
"url": "https://zh.wikisource.org/wiki/三國志/卷28"
|
||||
},
|
||||
{
|
||||
"claim": "魏分路伐蜀、诸葛瞻败于绵竹、谯周劝降与刘禅面缚舆榇出诣军门",
|
||||
"citation": "《三国志·蜀书·后主传》卷三十三",
|
||||
"url": "https://zh.wikisource.org/wiki/三國志/卷33"
|
||||
},
|
||||
{
|
||||
"claim": "三路兵力与路线、阳安关失守、剑阁相持、阴平七百余里、绵竹战局和成都降礼",
|
||||
"citation": "《资治通鉴》卷七十八",
|
||||
"url": "https://zh.wikisource.org/zh/資治通鑑/卷078"
|
||||
},
|
||||
{
|
||||
"claim": "项目内《潮汐骨架》曲目、器乐属性与创作说明;仓库无实际音频",
|
||||
"citation": "digital-me-backend/scripts/seed-music.js"
|
||||
}
|
||||
],
|
||||
"blacklist": [
|
||||
"把“乐不思蜀”的洛阳轶事提前到成都出降现场",
|
||||
"钟会亲自在成都受降,或钟会与刘禅在城门会面",
|
||||
"邓艾从完全垂直的绝壁凌空飞降、士卒集体坠崖或以油锅开路",
|
||||
"姜维与钟会单挑、剑阁大火攻或钟会正面攻破剑阁",
|
||||
"诸葛亮显灵、木像守剑阁、八阵图困住魏军",
|
||||
"把刘禅画成跪爬、醉饮或嬉笑的丑角",
|
||||
"把钟会后来的成都叛乱、邓艾被收押与二人之死并入灭蜀主线",
|
||||
"明清盔甲、明清宫城、龙袍定型、京剧脸谱、火药爆炸、现代攀岩装备或可读旗号"
|
||||
],
|
||||
"storyWeb": {
|
||||
"entry": "../index.html",
|
||||
"template": "historical-battle-assets/story-template-v1",
|
||||
"calligraphy": {
|
||||
"text": "兰亭集序",
|
||||
"font": "../assets/fonts/YunFengJingLongXingShu-2.ttf",
|
||||
"required": true
|
||||
},
|
||||
"previews": [
|
||||
"../preview-desktop.png",
|
||||
"../preview-mobile.png"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,164 @@
|
||||
# 魏灭蜀之战(邓艾钟会伐蜀·刘禅出降)|素材说明
|
||||
|
||||
- 用户原称:邓艾钟会灭蜀·后主出降
|
||||
- 规范事件名:魏灭蜀之战(邓艾钟会伐蜀·刘禅出降)
|
||||
- 时代:三国·曹魏景元四年/蜀汉炎兴元年(263年)
|
||||
- 时间:263年秋至冬
|
||||
- 地点:汉中、剑阁、阴平、江油、绵竹、成都
|
||||
- 一句话结论:钟会主力进入汉中却受阻剑阁,邓艾由阴平险道迂回江油、击破绵竹;刘禅在成都出降,蜀汉灭亡。
|
||||
|
||||
## 约 88 秒主旁白
|
||||
|
||||
景元四年秋,曹魏大举伐蜀。钟会率十余万众分道进入汉中;邓艾则由狄道向沓中,牵制姜维。阳安关失守后,姜维退守剑阁。姜维凭险把钟会大军挡在关外。魏军粮运日难,钟会一度准备退兵。邓艾却提出另一条路:从阴平穿过七百余里无人之地,绕到剑阁背后。冬十月,他率精锐凿山架桥,裹毡下坡,士卒攀木缘崖,终于抵达江油。守将马邈投降,成都门户突然洞开。诸葛瞻率军退守绵竹,拒绝邓艾劝降。魏军初战不利,随后两翼再进;诸葛瞻与黄崇、诸葛尚等战死。消息传到成都,群臣议论奔吴或走南中,谯周主张向魏投降。刘禅遣使送出玺绶,又命姜维向钟会放下兵器。邓艾抵达成都城北,刘禅率太子、诸王和群臣,面缚舆榇,来到军门。邓艾为他们解缚、焚去棺木,并约束军士不得掳掠。剑阁仍未被钟会攻破,蜀汉却已从背后被打开,就此灭亡。
|
||||
|
||||
## 分幕素材
|
||||
|
||||
### 第一幕|三路入汉中
|
||||
|
||||
- 时间地点:263年秋,秦岭诸谷道与汉中。
|
||||
- 叙事作用:交代曹魏分路伐蜀与钟会主力进入汉中的总体战局。
|
||||
- 旁白:景元四年秋,曹魏大举伐蜀。钟会率十余万众分道进入汉中;邓艾则由狄道向沓中,牵制姜维。阳安关失守后,姜维退守剑阁。
|
||||
- 叠字标题:三路入汉中
|
||||
- 一句短文案:十余万主力穿过秦岭,先把汉中的外门推开。
|
||||
- 人物标签:
|
||||
- 钟会/曹魏镇西将军、伐蜀主力统帅/统率主力分由斜谷、骆谷、子午谷进入汉中
|
||||
- 邓艾/曹魏征西将军/由狄道进向沓中,牵制姜维;不在本幕画面
|
||||
- 姜维/蜀汉大将军/由沓中撤向剑阁;不在本幕画面
|
||||
- 图片:images/01-三路入汉中.png、images/01-三路入汉中.webp
|
||||
- 画面说明:秋雨后的秦岭山谷中,钟会立在高处观察魏军、驮队与粮秣沿多条山路进入汉中,远处是克制的夯土木构关隘。
|
||||
- 替代文本:秋雨后的秦岭山谷中,钟会在高处察看魏军与驮队沿多条山路进入汉中,远处是夯土木构关隘。
|
||||
- 最终提示词摘要:263年秋秦岭狭谷,钟会观察主力和驮队分路入汉中;东汉末三国衣甲、山雾写实、16:9、无文字。
|
||||
- 视觉补全:钟会面貌、站位、关隘外形、纵队可见数量与秋雨雾气均为视觉重构;多条队列只象征分路进军,不当作精确地理图。
|
||||
- 史实依据:《三国志·魏书·邓艾钟会传》;《资治通鉴》卷七十八。
|
||||
|
||||
### 第二幕|剑阁拒钟会
|
||||
|
||||
- 时间地点:263年秋冬之交,剑阁。
|
||||
- 叙事作用:说明姜维守住剑阁、钟会粮道日难,为邓艾改走阴平埋下转折。
|
||||
- 旁白:姜维凭险把钟会大军挡在关外。魏军粮运日难,钟会一度准备退兵。邓艾却提出另一条路:从阴平穿过七百余里无人之地,绕到剑阁背后。
|
||||
- 叠字标题:剑阁拒钟会
|
||||
- 一句短文案:主力被挡在险关前,真正的破口却出现在背后。
|
||||
- 人物标签:
|
||||
- 姜维/蜀汉大将军/与廖化、张翼、董厥等合兵守住剑阁
|
||||
- 钟会/曹魏镇西将军/攻关不克、粮运日难,准备退还
|
||||
- 图片:images/02-剑阁拒钟会.png、images/02-剑阁拒钟会.webp
|
||||
- 画面说明:姜维立在依山而建的木栅关垒上,俯视谷道里受阻的魏军粮车与营阵;人物与漫长道路的比例突出战略僵局。
|
||||
- 替代文本:姜维立在剑阁木栅关垒上,俯视狭长谷道里受阻的魏军粮车与营阵,山雾封住远处道路。
|
||||
- 最终提示词摘要:剑阁夯土木栅关垒,姜维守险,谷道里魏军粮车与营阵受阻;用险要地形表现对峙,16:9、无决斗、无文字。
|
||||
- 视觉补全:关垒具体木构、姜维与魏军粮道同框、人物面貌和山雾为视觉补全;画面不主张双方统帅曾近距离相见。
|
||||
- 史实依据:《三国志·魏书·邓艾钟会传》;《资治通鉴》卷七十八。
|
||||
|
||||
### 第三幕|偷渡阴平
|
||||
|
||||
- 时间地点:263年冬十月,阴平至江油险道。
|
||||
- 叙事作用:表现邓艾避开剑阁、穿越无人险道的战役决定性机动。
|
||||
- 旁白:冬十月,邓艾率精锐凿山架桥,裹毡下坡,士卒攀木缘崖,终于抵达江油。守将马邈投降,成都门户突然洞开。
|
||||
- 叠字标题:偷渡阴平
|
||||
- 一句短文案:七百余里无人之地,把一支军队送到了剑阁背后。
|
||||
- 人物标签:
|
||||
- 邓艾/曹魏征西将军/率精锐由阴平险道迂回江油
|
||||
- 马邈/蜀汉江油守将/见魏军突至而投降;不在本幕画面
|
||||
- 图片:images/03-偷渡阴平.png、images/03-偷渡阴平.webp
|
||||
- 画面说明:阴平山道不是奇幻垂直绝壁,而是极陡、可借树木和绳索通行的斜坡;邓艾裹毡攀降,士卒单列缘崖而进。
|
||||
- 替代文本:冬日阴平山道上,邓艾裹着毡衣拉绳攀下斜坡,魏军士卒在雾中沿树木与岩壁鱼贯而进。
|
||||
- 最终提示词摘要:263年冬阴平险道,邓艾裹毡借绳攀下陡坡,精锐沿树木岩壁鱼贯前进;冷峻写实、16:9、无坠崖奇观、无文字。
|
||||
- 视觉补全:绳索、落脚点、坡度、积雪与人物具体动作属于安全且可理解的镜头化补全;不把“以毡自裹,推转而下”夸张成凌空坠崖。
|
||||
- 史实依据:《三国志·魏书·邓艾传》;《资治通鉴》卷七十八。
|
||||
|
||||
### 第四幕|绵竹战殁
|
||||
|
||||
- 时间地点:263年冬,绵竹。
|
||||
- 叙事作用:交代成都最后一支成建制援军的败亡,以及阴平奇袭由机动转化为战略崩解。
|
||||
- 旁白:诸葛瞻率军退守绵竹,拒绝邓艾劝降。魏军初战不利,随后两翼再进;诸葛瞻与黄崇、诸葛尚等战死。
|
||||
- 叠字标题:绵竹战殁
|
||||
- 一句短文案:成都最后的屏障,在一次重整后的进攻中崩解。
|
||||
- 人物标签:
|
||||
- 诸葛瞻/蜀汉卫将军、平尚书事/退守绵竹、拒降,战败身死
|
||||
- 诸葛尚/诸葛瞻之子/随父出战,死于绵竹
|
||||
- 黄崇/蜀汉尚书郎/激励军士力战,死于绵竹
|
||||
- 邓艾/曹魏征西将军/重新部署两翼,再战击破蜀军
|
||||
- 图片:images/04-绵竹战殁.png、images/04-绵竹战殁.webp
|
||||
- 画面说明:诸葛瞻父子与残余蜀军保持最后阵列,邓艾在侧后高地指挥合进;以破旗、弃盾和尘烟表现败局,不直接展示尸体。
|
||||
- 替代文本:绵竹夯土城垒外,诸葛瞻与诸葛尚站在残破蜀军阵列前,远处邓艾在高地指挥两翼合进。
|
||||
- 最终提示词摘要:绵竹城外最后阵列,诸葛瞻父子拒降,邓艾指挥两翼再进;悲剧性历史写实、16:9、无血腥、无文字。
|
||||
- 视觉补全:诸葛瞻父子面貌、两翼同框、城垒形制、山雪和战场残迹均为视觉补全;不把战死做成血腥特写。
|
||||
- 史实依据:《三国志·魏书·邓艾传》;《三国志·蜀书·后主传》;《资治通鉴》卷七十八。
|
||||
|
||||
### 第五幕|成都出降
|
||||
|
||||
- 时间地点:263年冬,成都城北。
|
||||
- 叙事作用:以正式降礼和军纪约束收束蜀汉灭亡,避免把刘禅后来的洛阳轶事提前。
|
||||
- 旁白:消息传到成都,群臣议论奔吴或走南中,谯周主张向魏投降。刘禅遣使送出玺绶,又命姜维向钟会放下兵器。邓艾抵达成都城北,刘禅率太子、诸王和群臣,面缚舆榇,来到军门。邓艾为他们解缚、焚去棺木,并约束军士不得掳掠。剑阁仍未被钟会攻破,蜀汉却已从背后被打开,就此灭亡。
|
||||
- 叠字标题:后主出降
|
||||
- 一句短文案:剑阁没有失守,成都却先打开了城门。
|
||||
- 人物标签:
|
||||
- 刘禅/蜀汉皇帝、后主/遣使奉玺绶,率太子、诸王与群臣出降
|
||||
- 邓艾/曹魏征西将军/受降并为刘禅等解缚、焚榇,约束军士
|
||||
- 谯周/蜀汉光禄大夫/在朝议中主张向魏投降;不在本幕画面
|
||||
- 姜维/蜀汉大将军/奉刘禅敕令向钟会军放下兵器;不在本幕画面
|
||||
- 图片:images/05-成都出降.png、images/05-成都出降.webp
|
||||
- 画面说明:刘禅、太子诸王与群臣依降礼面缚立在城门外,棺木车在侧;邓艾正命士卒解去束缚,魏军持械下垂、无人掳掠。
|
||||
- 替代文本:成都北门外,刘禅与太子、诸王和群臣面缚站立,棺木车在侧,邓艾命军士解去绳索并保持军纪。
|
||||
- 最终提示词摘要:成都北门降礼,刘禅与群臣面缚舆榇,邓艾命人解缚并约束军士;克制庄重、16:9、无丑化、无文字。
|
||||
- 视觉补全:刘禅等人的具体人数和面貌、棺车式样、解缚瞬间、城门布局与光线为视觉重构;不把降礼解释为后世戏剧化羞辱。
|
||||
- 史实依据:《三国志·魏书·邓艾传》;《三国志·蜀书·后主传》;《资治通鉴》卷七十八。
|
||||
|
||||
## BGM 选择
|
||||
|
||||
- 选中曲目:项目曲库种子键 seed-music-v1:chenyu:潮汐骨架,《潮汐骨架》。
|
||||
- 版本:建议制作 76 BPM、无主唱纯伴奏的“魏灭蜀历史剪辑版”。
|
||||
- 项目状态:待生成/待导出;仓库当前只有曲目与创作说明,没有 audioUrl 或本地音频,素材包不附 MP3。
|
||||
- 使用方式:保留原曲“单一动机从轻到满、再逐层退去”的结构;历史剪辑版以低弦、埙或低箫气声、堂鼓和木质打击替代强失真吉他,旁白期间整体下压。
|
||||
- 选择理由:该项目曲目本身是无歌词器乐,能覆盖汉中进军、剑阁受阻、阴平突进、绵竹决战到成都降礼的完整战局弧线;回落结构也适合国家灭亡后的冷收束。
|
||||
|
||||
### Cue sheet
|
||||
|
||||
| 时间 | 幕次 | 剪辑方向 |
|
||||
| --- | --- | --- |
|
||||
| 00:00–00:17 | 01 | 单一低弦动机和远风起,行军纵队展开时加入木质脉冲,不做凯旋节奏。 |
|
||||
| 00:17–00:35 | 02 | 低音持续音收紧,极轻堂鼓表现粮道压力;提到“另一条路”时短暂抽空。 |
|
||||
| 00:35–00:53 | 03 | 脉冲加密但控制音量,以绳索摩擦感的木质打击推动攀降;江油投降处骤停半拍。 |
|
||||
| 00:53–01:09 | 04 | 全曲最满但不用英雄号角,低弦与鼓形成两翼合进;战死后迅速撤掉鼓组。 |
|
||||
| 01:09–01:28 | 05 | 只留最初动机、低箫气声和少量环境声,解缚后逐层退去,灭亡一句落在自然尾音上。 |
|
||||
|
||||
## 史实边界
|
||||
|
||||
### 史实依据
|
||||
|
||||
- 《三国志·魏书·邓艾钟会传》:钟会进入汉中却受阻剑阁;邓艾提出阴平迂回,率军穿越七百余里无人之地,裹毡下险,受降江油,再战绵竹,并在成都受降。
|
||||
- 《三国志·蜀书·后主传》:魏军分路伐蜀、诸葛瞻败亡、谯周劝降、刘禅奉玺绶与“面缚舆榇”出诣军门。
|
||||
- 《资治通鉴》卷七十八:补足三路兵力和路线、阳安关失守、姜维守剑阁、钟会粮道困境、绵竹战局与成都降礼的连续时间线。
|
||||
- 项目内曲库核对:digital-me-backend/scripts/seed-music.js 中 chenyu / 潮汐骨架曲目方案;仓库未发现该曲目的实际音频文件。
|
||||
|
||||
### 可视化补全
|
||||
|
||||
- 五幕的天气、时辰、镜头站位、关隘与城门样式、人物面貌均为视觉设计,不作为史实断言。
|
||||
- 人物和建筑统一采用东汉末年至三国时期可解释的布袍、札甲、夯土、木构与山地运输,不使用明清造型。
|
||||
- 第二幕将守关、粮运日难与下方魏营压缩在同一幅空间构图中,强调战略阻滞。
|
||||
- 第三幕以可攀援的陡斜坡表达史载险途;绳索是便于读图的视觉补全,不等于确证当时装备。
|
||||
- 第四幕把邓艾两翼再进和诸葛瞻父子最后阵列压缩在同一时刻,不展示血腥死亡。
|
||||
- 第五幕表现“解缚”正在发生;人数以群像代表史载太子、诸王和群臣,不按六十余人逐一复原。
|
||||
|
||||
### 禁用元素
|
||||
|
||||
- 不把“乐不思蜀”的洛阳轶事提前到成都出降现场。
|
||||
- 不画钟会亲自在成都受降;刘禅出降的直接受降者是先抵成都的邓艾。
|
||||
- 不画邓艾从完全垂直的绝壁凌空飞降、士卒集体坠崖或“油锅开路”等传奇化场面。
|
||||
- 不画姜维与钟会单挑、剑阁大火攻或钟会正面攻破剑阁;史实结果恰是剑阁仍守而成都先降。
|
||||
- 不画诸葛亮显灵、木像守关、八阵图困魏军等神异桥段。
|
||||
- 不把刘禅画成跪爬、醉饮或嬉笑的丑角;本幕只表现正式降礼。
|
||||
- 不把钟会后来的成都叛乱、邓艾被收押与二人之死并入本次灭蜀主线。
|
||||
- 不使用明清盔甲、明清宫城、龙袍定型、京剧脸谱、火药爆炸、现代攀岩装备或可读旗号。
|
||||
|
||||
## 生成说明
|
||||
|
||||
- 图片由内置图像生成工具制作,共 5 张原始 PNG 与 5 张 WebP,统一横版 16:9。
|
||||
- 图片不烘焙人物姓名、字幕、书法、Logo 或水印,并为后期叠字保留负空间。
|
||||
- 钟会在第一、二幕保持同一视觉世界;邓艾在第三至第五幕使用同一角色参考。
|
||||
- 五张图的最终完整提示词保存在 manifest.json 的各幕 image.prompt 字段。
|
||||
|
||||
## 在线史料入口
|
||||
|
||||
- [《三国志·卷二十八·邓艾钟会传》](https://zh.wikisource.org/wiki/三國志/卷28)
|
||||
- [《三国志·卷三十三·后主传》](https://zh.wikisource.org/wiki/三國志/卷33)
|
||||
- [《资治通鉴·卷七十八》](https://zh.wikisource.org/zh/資治通鑑/卷078)
|
||||
@@ -0,0 +1,210 @@
|
||||
<!doctype html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta name="theme-color" content="#eee8dc" />
|
||||
<meta name="description" content="钟会主力进入汉中却受阻剑阁,邓艾由阴平险道迂回江油、击破绵竹;刘禅在成都出降,蜀汉灭亡。" />
|
||||
<title>魏灭蜀之战(邓艾钟会伐蜀·刘禅出降)|剑阁未破,阴平已开</title>
|
||||
<link rel="stylesheet" href="./styles.css" />
|
||||
</head>
|
||||
<body>
|
||||
<a class="skip-link" href="#story">跳到正文</a>
|
||||
<a class="collection-back" href="../../index.html" aria-label="返回三国故事集">返回故事集</a>
|
||||
|
||||
<div class="page-motifs" aria-hidden="true">
|
||||
<div class="flow-grid flow-grid--primary"></div>
|
||||
<div class="flow-grid flow-grid--secondary"></div>
|
||||
<img class="ambient-shape ambient-shape--01 orbit-a" src="./assets/meta/十字-01.svg" alt="" />
|
||||
<img class="ambient-shape ambient-shape--02 orbit-b" src="./assets/meta/形状-椭圆形.svg" alt="" />
|
||||
<img class="ambient-shape ambient-shape--03 orbit-c" src="./assets/meta/tx-正方形.svg" alt="" />
|
||||
<img class="ambient-shape ambient-shape--04 orbit-b" src="./assets/meta/十字-01.svg" alt="" />
|
||||
<img class="ambient-shape ambient-shape--05 orbit-a" src="./assets/meta/形状-椭圆形.svg" alt="" />
|
||||
<img class="ambient-shape ambient-shape--06 orbit-c" src="./assets/meta/tx-正方形.svg" alt="" />
|
||||
<img class="ambient-shape ambient-shape--07 orbit-a" src="./assets/meta/十字-01.svg" alt="" />
|
||||
<img class="ambient-shape ambient-shape--08 orbit-b" src="./assets/meta/形状-椭圆形.svg" alt="" />
|
||||
<img class="ambient-shape ambient-shape--09 orbit-c" src="./assets/meta/tx-正方形.svg" alt="" />
|
||||
<div class="motion-matrix motion-matrix--01"><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i></div>
|
||||
<div class="motion-matrix motion-matrix--02"><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i></div>
|
||||
<div class="motion-matrix motion-matrix--03"><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i></div>
|
||||
<div class="motion-matrix motion-matrix--04"><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i></div>
|
||||
</div>
|
||||
<div class="calligraphy-field" id="calligraphy-field" aria-hidden="true"></div>
|
||||
|
||||
<header class="site-header">
|
||||
<a class="brand" href="#top" aria-label="返回卷首">
|
||||
<span class="brand__seal">蜀</span>
|
||||
<span class="brand__copy"><b>魏灭蜀</b><small>ILLUSTRATED CHRONICLE</small></span>
|
||||
</a>
|
||||
<nav aria-label="主导航">
|
||||
<a href="#story">卷首</a><a href="#chronicle">画卷</a><a href="#timeline">编年</a><a href="#archive">人物</a>
|
||||
</nav>
|
||||
<span class="site-header__volume">三国纪 · 263</span>
|
||||
<i class="site-header__progress" aria-hidden="true"></i>
|
||||
</header>
|
||||
|
||||
<main>
|
||||
<section class="collage" id="top" aria-label="魏灭蜀之战(邓艾钟会伐蜀·刘禅出降)五幕历史画卷">
|
||||
<div class="collage__field" aria-hidden="true">
|
||||
<figure class="collage-card collage-card--01" style="--r: -3.5deg"><img src="./assets/images/01-三路入汉中.webp" alt="" /></figure>
|
||||
<figure class="collage-card collage-card--02" style="--r: 2.8deg"><img src="./assets/images/02-剑阁拒钟会.webp" alt="" /></figure>
|
||||
<figure class="collage-card collage-card--03" style="--r: -1.8deg"><img src="./assets/images/03-偷渡阴平.webp" alt="" /></figure>
|
||||
<figure class="collage-card collage-card--04" style="--r: 3.2deg"><img src="./assets/images/04-绵竹战殁.webp" alt="" /></figure>
|
||||
<figure class="collage-card collage-card--05" style="--r: -2.2deg"><img src="./assets/images/05-成都出降.webp" alt="" /></figure>
|
||||
</div>
|
||||
<div class="collage__veil"></div>
|
||||
<div class="collage__title">
|
||||
<p><span>三国·曹魏景元四年/蜀汉炎兴元年</span><i></i><span>263年秋至冬</span></p>
|
||||
<h1>魏灭蜀<br />之战</h1>
|
||||
<div class="collage__summary"><b>剑阁未破,阴平已开</b><span>景元四年蜀汉覆亡</span></div>
|
||||
</div>
|
||||
<div class="collage__stamp" aria-hidden="true"><span>历史画卷</span><b>伍</b></div>
|
||||
<div class="collage__caption"><span>汉中、剑阁、阴平、江油、绵竹、成都</span><span>伍幕 / 约88秒</span></div>
|
||||
<a class="collage__scroll" href="#story"><span>向下翻阅</span><i></i></a>
|
||||
</section>
|
||||
|
||||
<section class="story-intro" id="story" aria-labelledby="story-title">
|
||||
<div class="story-intro__grid">
|
||||
<aside class="story-intro__chapter" data-reveal data-direction="left"><span>CHAPTER</span><b>景元<br />四年</b><i></i></aside>
|
||||
<div class="story-intro__title" data-reveal data-direction="left">
|
||||
<p class="eyebrow"><span></span> ILLUSTRATED RECORD</p>
|
||||
<h2 id="story-title">正面未决,<br />奇兵已经抵达成都。</h2>
|
||||
</div>
|
||||
<div class="story-intro__lead" data-reveal data-direction="right">
|
||||
<p>钟会主力进入汉中却受阻剑阁,邓艾由阴平险道迂回江油、击破绵竹;刘禅在成都出降,蜀汉灭亡。</p>
|
||||
<dl><div><dt>时间</dt><dd>263年秋至冬</dd></div><div><dt>地点</dt><dd>汉中、剑阁、阴平、江油、绵竹、成都</dd></div><div><dt>核心</dt><dd>钟会主力进入汉中却受阻剑阁,邓艾由阴平险道迂回江油、击破绵竹;刘禅在成都出降,蜀汉灭亡。</dd></div></dl>
|
||||
</div>
|
||||
</div>
|
||||
<figure class="story-intro__image" data-reveal data-direction="up">
|
||||
<img src="./assets/images/01-三路入汉中.webp" alt="秋雨后的秦岭山谷中,钟会在高处察看魏军与驮队沿多条山路进入汉中,远处是夯土木构关隘。" />
|
||||
<figcaption><span>图一 · 三路入汉中</span><small>263年秋,秦岭诸谷道与汉中</small></figcaption>
|
||||
</figure>
|
||||
</section>
|
||||
|
||||
<section class="chronicle" id="chronicle" aria-label="图文叙事画卷">
|
||||
<header class="chronicle__header">
|
||||
<p data-reveal data-direction="left">画卷 / PICTORIAL RECORD</p><span data-reveal data-direction="right">五幕,从三路入汉中到成都出降</span>
|
||||
</header>
|
||||
<article class="chronicle-entry" data-scene="01">
|
||||
<figure data-reveal data-direction="left">
|
||||
<img src="./assets/images/01-三路入汉中.webp" alt="秋雨后的秦岭山谷中,钟会在高处察看魏军与驮队沿多条山路进入汉中,远处是夯土木构关隘。" loading="lazy" />
|
||||
<figcaption><span>01 / 三路入汉中</span><small>263年秋,秦岭诸谷道与汉中</small></figcaption>
|
||||
</figure>
|
||||
<div class="chronicle-entry__copy" data-reveal data-direction="right">
|
||||
<time datetime="263">263年秋,秦岭诸谷道与汉中</time>
|
||||
<h2><span>01</span>三路入汉中</h2>
|
||||
<p>景元四年秋,曹魏大举伐蜀。钟会率十余万众分道进入汉中;邓艾则由狄道向沓中,牵制姜维。阳安关失守后,姜维退守剑阁。</p>
|
||||
<aside><b>画面札记</b><span>十余万主力穿过秦岭,先把汉中的外门推开。</span></aside>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="chronicle-entry chronicle-entry--reverse" data-scene="02">
|
||||
<figure data-reveal data-direction="right">
|
||||
<img src="./assets/images/02-剑阁拒钟会.webp" alt="姜维立在剑阁木栅关垒上,俯视狭长谷道里受阻的魏军粮车与营阵,山雾封住远处道路。" loading="lazy" />
|
||||
<figcaption><span>02 / 剑阁拒钟会</span><small>263年秋冬之交,剑阁</small></figcaption>
|
||||
</figure>
|
||||
<div class="chronicle-entry__copy" data-reveal data-direction="left">
|
||||
<time datetime="263">263年秋冬之交,剑阁</time>
|
||||
<h2><span>02</span>剑阁拒钟会</h2>
|
||||
<p>姜维凭险把钟会大军挡在关外。魏军粮运日难,钟会一度准备退兵。邓艾却提出另一条路:从阴平穿过七百余里无人之地,绕到剑阁背后。</p>
|
||||
<aside><b>画面札记</b><span>主力被挡在险关前,真正的破口却出现在背后。</span></aside>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="chronicle-entry" data-scene="03">
|
||||
<figure data-reveal data-direction="left">
|
||||
<img src="./assets/images/03-偷渡阴平.webp" alt="冬日阴平山道上,邓艾裹着毡衣拉绳攀下斜坡,魏军士卒在雾中沿树木与岩壁鱼贯而进。" loading="lazy" />
|
||||
<figcaption><span>03 / 偷渡阴平</span><small>263年冬十月,阴平至江油险道</small></figcaption>
|
||||
</figure>
|
||||
<div class="chronicle-entry__copy" data-reveal data-direction="right">
|
||||
<time datetime="263">263年冬十月,阴平至江油险道</time>
|
||||
<h2><span>03</span>偷渡阴平</h2>
|
||||
<p>冬十月,邓艾率精锐凿山架桥,裹毡下坡,士卒攀木缘崖,终于抵达江油。守将马邈投降,成都门户突然洞开。</p>
|
||||
<aside><b>画面札记</b><span>七百余里无人之地,把一支军队送到了剑阁背后。</span></aside>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="chronicle-entry chronicle-entry--reverse" data-scene="04">
|
||||
<figure data-reveal data-direction="right">
|
||||
<img src="./assets/images/04-绵竹战殁.webp" alt="绵竹夯土城垒外,诸葛瞻与诸葛尚站在残破蜀军阵列前,远处邓艾在高地指挥两翼合进。" loading="lazy" />
|
||||
<figcaption><span>04 / 绵竹战殁</span><small>263年冬,绵竹</small></figcaption>
|
||||
</figure>
|
||||
<div class="chronicle-entry__copy" data-reveal data-direction="left">
|
||||
<time datetime="263">263年冬,绵竹</time>
|
||||
<h2><span>04</span>绵竹战殁</h2>
|
||||
<p>诸葛瞻率军退守绵竹,拒绝邓艾劝降。魏军初战不利,随后两翼再进;诸葛瞻与黄崇、诸葛尚等战死。</p>
|
||||
<aside><b>画面札记</b><span>成都最后的屏障,在一次重整后的进攻中崩解。</span></aside>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="chronicle-entry" data-scene="05">
|
||||
<figure data-reveal data-direction="left">
|
||||
<img src="./assets/images/05-成都出降.webp" alt="成都北门外,刘禅与太子、诸王和群臣面缚站立,棺木车在侧,邓艾命军士解去绳索并保持军纪。" loading="lazy" />
|
||||
<figcaption><span>05 / 成都出降</span><small>263年冬,成都城北</small></figcaption>
|
||||
</figure>
|
||||
<div class="chronicle-entry__copy" data-reveal data-direction="right">
|
||||
<time datetime="263">263年冬,成都城北</time>
|
||||
<h2><span>05</span>后主出降</h2>
|
||||
<p>消息传到成都,群臣议论奔吴或走南中,谯周主张向魏投降。刘禅遣使送出玺绶,又命姜维向钟会放下兵器。邓艾抵达成都城北,刘禅率太子、诸王和群臣,面缚舆榇,来到军门。邓艾为他们解缚、焚去棺木,并约束军士不得掳掠。剑阁仍未被钟会攻破,蜀汉却已从背后被打开,就此灭亡。</p>
|
||||
<aside><b>画面札记</b><span>剑阁没有失守,成都却先打开了城门。</span></aside>
|
||||
</div>
|
||||
</article>
|
||||
<blockquote class="chronicle-quote" data-reveal data-direction="up">
|
||||
<p>剑阁没有失守,成都却先打开了城门。</p>
|
||||
<cite>魏灭蜀之战(邓艾钟会伐蜀·刘禅出降) · 卷末语</cite>
|
||||
</blockquote>
|
||||
</section>
|
||||
|
||||
<section class="record-line" id="timeline" aria-labelledby="timeline-title">
|
||||
<header data-reveal data-direction="left">
|
||||
<p class="eyebrow"><span></span> CHRONOLOGY</p>
|
||||
<h2 id="timeline-title">五个节点,<br />串起魏灭蜀之战(邓艾钟会伐蜀·刘禅出降)。</h2>
|
||||
</header>
|
||||
<ol>
|
||||
<li data-reveal data-direction="right"><time>263年秋,秦岭诸谷道与汉中</time><i></i><div><b>三路入汉中</b><p>景元四年秋,曹魏大举伐蜀。钟会率十余万众分道进入汉中;邓艾则由狄道向沓中,牵制姜维。阳安关失守后,姜维退守剑阁。</p></div></li>
|
||||
<li data-reveal data-direction="right"><time>263年秋冬之交,剑阁</time><i></i><div><b>剑阁拒钟会</b><p>姜维凭险把钟会大军挡在关外。魏军粮运日难,钟会一度准备退兵。邓艾却提出另一条路:从阴平穿过七百余里无人之地,绕到剑阁背后。</p></div></li>
|
||||
<li data-reveal data-direction="right"><time>263年冬十月,阴平至江油险道</time><i></i><div><b>偷渡阴平</b><p>冬十月,邓艾率精锐凿山架桥,裹毡下坡,士卒攀木缘崖,终于抵达江油。守将马邈投降,成都门户突然洞开。</p></div></li>
|
||||
<li data-reveal data-direction="right"><time>263年冬,绵竹</time><i></i><div><b>绵竹战殁</b><p>诸葛瞻率军退守绵竹,拒绝邓艾劝降。魏军初战不利,随后两翼再进;诸葛瞻与黄崇、诸葛尚等战死。</p></div></li>
|
||||
<li data-reveal data-direction="right"><time>263年冬,成都城北</time><i></i><div><b>后主出降</b><p>消息传到成都,群臣议论奔吴或走南中,谯周主张向魏投降。刘禅遣使送出玺绶,又命姜维向钟会放下兵器。邓艾抵达成都城北,刘禅率太子、诸王和群臣,面缚舆榇,来到军门。邓艾为他们解缚、焚去棺木,并约束军士不得掳掠。剑阁仍未被钟会攻破,蜀汉却已从背后被打开,就此灭亡。</p></div></li>
|
||||
</ol>
|
||||
</section>
|
||||
|
||||
<section class="archive" id="archive" aria-labelledby="archive-title">
|
||||
<header data-reveal data-direction="left">
|
||||
<p class="eyebrow"><span></span> CHARACTER FILES</p>
|
||||
<h2 id="archive-title">身在局中,<br />各有其位。</h2>
|
||||
</header>
|
||||
<div class="archive__list">
|
||||
<article data-reveal data-direction="up"><span>01</span><h3>钟会</h3><p><b>曹魏镇西将军、伐蜀主力统帅</b>统率主力分由斜谷、骆谷、子午谷进入汉中</p></article>
|
||||
<article data-reveal data-direction="up"><span>02</span><h3>邓艾</h3><p><b>曹魏征西将军</b>由狄道进向沓中,牵制姜维;不在本幕画面</p></article>
|
||||
<article data-reveal data-direction="up"><span>03</span><h3>姜维</h3><p><b>蜀汉大将军</b>由沓中撤向剑阁;不在本幕画面</p></article>
|
||||
<article data-reveal data-direction="up"><span>04</span><h3>马邈</h3><p><b>蜀汉江油守将</b>见魏军突至而投降;不在本幕画面</p></article>
|
||||
<article data-reveal data-direction="up"><span>05</span><h3>诸葛瞻</h3><p><b>蜀汉卫将军、平尚书事</b>退守绵竹、拒降,战败身死</p></article>
|
||||
<article data-reveal data-direction="up"><span>06</span><h3>诸葛尚</h3><p><b>诸葛瞻之子</b>随父出战,死于绵竹</p></article>
|
||||
<article data-reveal data-direction="up"><span>07</span><h3>黄崇</h3><p><b>蜀汉尚书郎</b>激励军士力战,死于绵竹</p></article>
|
||||
<article data-reveal data-direction="up"><span>08</span><h3>刘禅</h3><p><b>蜀汉皇帝、后主</b>遣使奉玺绶,率太子、诸王与群臣出降</p></article>
|
||||
<article data-reveal data-direction="up"><span>09</span><h3>谯周</h3><p><b>蜀汉光禄大夫</b>在朝议中主张向魏投降;不在本幕画面</p></article></div>
|
||||
<p class="archive__ending" data-reveal data-direction="up">钟会主力进入汉中却受阻剑阁,邓艾由阴平险道迂回江油、击破绵竹;刘禅在成都出降,蜀汉灭亡。</p>
|
||||
</section>
|
||||
|
||||
<footer class="source-notes">
|
||||
<div><p class="eyebrow"><span></span> HISTORICAL SOURCES</p><h2>史实边界</h2></div>
|
||||
<div class="source-notes__copy">
|
||||
<p>事实叙述以《三国志·魏书·邓艾钟会传》卷二十八、《三国志·蜀书·后主传》卷三十三、《资治通鉴》卷七十八、digital-me-backend/scripts/seed-music.js为边界;图片中的天气、人物站位、光线与建筑细部属于可视化补全,均不作为史书记载。演义、神异与后世附会不写成确定事实。</p>
|
||||
<nav aria-label="在线史料"><a href="./data/素材说明.md">本地素材说明</a><a href="./data/manifest.json">结构化史料清单</a></nav>
|
||||
</div>
|
||||
</footer>
|
||||
</main>
|
||||
|
||||
|
||||
<div class="experience-controls" aria-label="页面体验控制">
|
||||
|
||||
<button class="motion-toggle" id="motion-toggle" type="button" aria-pressed="false">暂停动态</button>
|
||||
</div>
|
||||
<noscript>
|
||||
<style>[data-reveal] { opacity: 1 !important; filter: none !important; transform: none !important; }</style>
|
||||
<div class="no-script">当前为静态阅读模式。</div>
|
||||
</noscript>
|
||||
<script src="./main.js" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,191 @@
|
||||
(() => {
|
||||
const body = document.body;
|
||||
const root = document.documentElement;
|
||||
const header = document.querySelector('.site-header');
|
||||
const revealItems = [...document.querySelectorAll('[data-reveal]')];
|
||||
const cards = [...document.querySelectorAll('.collage-card')];
|
||||
const motionToggle = document.querySelector('#motion-toggle');
|
||||
const musicToggle = document.querySelector('#music-toggle');
|
||||
const backgroundMusic = document.querySelector('#background-music');
|
||||
const calligraphyField = document.querySelector('#calligraphy-field');
|
||||
const collectionBack = document.querySelector('.collection-back');
|
||||
const reduceMotion = window.matchMedia('(prefers-reduced-motion: reduce)');
|
||||
let motionPaused = reduceMotion.matches;
|
||||
let frameRequested = false;
|
||||
let calligraphyResizeTimer = 0;
|
||||
let calligraphyWidth = window.innerWidth;
|
||||
|
||||
collectionBack?.addEventListener('click', (event) => {
|
||||
if (window.parent === window) return;
|
||||
event.preventDefault();
|
||||
window.parent.postMessage(
|
||||
{ type: 'three-kingdoms-story-close' },
|
||||
window.location.origin,
|
||||
);
|
||||
});
|
||||
|
||||
const lantingPreface = `
|
||||
永和九年歲在癸丑暮春之初會於會稽山陰之蘭亭修禊事也群賢畢至少長咸集
|
||||
此地有崇山峻嶺茂林修竹又有清流激湍映帶左右引以為流觴曲水列坐其次
|
||||
雖無絲竹管弦之盛一觴一詠亦足以暢敘幽情是日也天朗氣清惠風和暢
|
||||
仰觀宇宙之大俯察品類之盛所以遊目騁懷足以極視聽之娛信可樂也
|
||||
夫人之相與俯仰一世或取諸懷抱晤言一室之內或因寄所託放浪形骸之外
|
||||
雖趣舍萬殊靜躁不同當其欣於所遇暫得於己快然自足不知老之將至
|
||||
及其所之既倦情隨事遷感慨係之矣向之所欣俯仰之間已為陳跡
|
||||
猶不能不以之興懷況修短隨化終期於盡古人云死生亦大矣豈不痛哉
|
||||
每覽昔人興感之由若合一契未嘗不臨文嗟悼不能喻之於懷
|
||||
固知一死生為虛誕齊彭殤為妄作後之視今亦猶今之視昔悲夫
|
||||
故列敘時人錄其所述雖世殊事異所以興懷其致一也後之覽者亦將有感於斯文
|
||||
`.replace(/[^\u3400-\u9fff]/g, '');
|
||||
|
||||
const randomBetween = (minimum, maximum) => minimum + Math.random() * (maximum - minimum);
|
||||
|
||||
const createCalligraphyField = () => {
|
||||
if (!calligraphyField) return;
|
||||
|
||||
const isCompact = window.innerWidth <= 680;
|
||||
const columnCount = isCompact ? 36 : Math.min(72, Math.max(48, Math.ceil(window.innerWidth / 28)));
|
||||
const source = lantingPreface + lantingPreface;
|
||||
const fragment = document.createDocumentFragment();
|
||||
const tones = ['#2d2821', '#2d2821', '#2d2821', '#874734', '#345f63'];
|
||||
let cursor = Math.floor(Math.random() * lantingPreface.length);
|
||||
|
||||
for (let index = 0; index < columnCount; index += 1) {
|
||||
const length = Math.floor(randomBetween(3, 8));
|
||||
const column = document.createElement('span');
|
||||
const fontSize = isCompact ? randomBetween(22, 48) : randomBetween(28, 78);
|
||||
const duration = randomBetween(0.8, 1.2) * (isCompact ? 68 : 82);
|
||||
|
||||
column.className = 'calligraphy-column';
|
||||
column.textContent = source.slice(cursor, cursor + length);
|
||||
column.style.setProperty('--top', `${randomBetween(-4, 82).toFixed(2)}vh`);
|
||||
column.style.setProperty('--start-x', `${randomBetween(106, 158).toFixed(2)}vw`);
|
||||
column.style.setProperty('--rest-x', `${randomBetween(2, 94).toFixed(2)}vw`);
|
||||
column.style.setProperty('--font-size', `${fontSize.toFixed(2)}px`);
|
||||
column.style.setProperty('--opacity', randomBetween(0.12, 0.4).toFixed(3));
|
||||
column.style.setProperty('--duration', `${duration.toFixed(2)}s`);
|
||||
column.style.setProperty('--delay', `${(-randomBetween(0, duration)).toFixed(2)}s`);
|
||||
column.style.setProperty('--tone', tones[Math.floor(Math.random() * tones.length)]);
|
||||
fragment.append(column);
|
||||
|
||||
cursor = (cursor + length) % lantingPreface.length;
|
||||
}
|
||||
|
||||
calligraphyField.replaceChildren(fragment);
|
||||
calligraphyWidth = window.innerWidth;
|
||||
};
|
||||
|
||||
const showAll = () => {
|
||||
revealItems.forEach((item) => item.classList.add('is-visible'));
|
||||
};
|
||||
|
||||
if ('IntersectionObserver' in window && !reduceMotion.matches) {
|
||||
const observer = new IntersectionObserver(
|
||||
(entries) => {
|
||||
entries.forEach((entry) => {
|
||||
if (!entry.isIntersecting) return;
|
||||
entry.target.classList.add('is-visible');
|
||||
observer.unobserve(entry.target);
|
||||
});
|
||||
},
|
||||
{ threshold: 0.12, rootMargin: '0px 0px -8% 0px' },
|
||||
);
|
||||
|
||||
revealItems.forEach((item) => observer.observe(item));
|
||||
window.addEventListener('pagehide', () => observer.disconnect(), { once: true });
|
||||
} else {
|
||||
showAll();
|
||||
}
|
||||
|
||||
const updateScrollEffects = () => {
|
||||
const scrollTop = window.scrollY;
|
||||
const scrollRange = Math.max(1, root.scrollHeight - window.innerHeight);
|
||||
const progress = Math.min(1, Math.max(0, scrollTop / scrollRange));
|
||||
|
||||
root.style.setProperty('--scroll-progress', progress.toFixed(4));
|
||||
header?.classList.toggle('is-scrolled', scrollTop > Math.max(90, window.innerHeight * 0.72));
|
||||
|
||||
if (!motionPaused && scrollTop < window.innerHeight * 1.15) {
|
||||
const heroProgress = Math.min(1, Math.max(0, scrollTop / window.innerHeight));
|
||||
cards.forEach((card, index) => {
|
||||
const direction = index % 2 === 0 ? -1 : 1;
|
||||
const distance = (14 + (index % 3) * 7) * heroProgress * direction;
|
||||
card.style.setProperty('--drift', `${distance.toFixed(2)}px`);
|
||||
});
|
||||
}
|
||||
|
||||
frameRequested = false;
|
||||
};
|
||||
|
||||
const requestScrollUpdate = () => {
|
||||
if (frameRequested) return;
|
||||
frameRequested = true;
|
||||
requestAnimationFrame(updateScrollEffects);
|
||||
};
|
||||
|
||||
const setMotionState = (paused) => {
|
||||
motionPaused = paused;
|
||||
body.classList.toggle('is-motion-paused', paused);
|
||||
motionToggle?.setAttribute('aria-pressed', String(paused));
|
||||
|
||||
if (motionToggle) {
|
||||
motionToggle.textContent = paused ? '恢复动态' : '暂停动态';
|
||||
}
|
||||
|
||||
if (paused) {
|
||||
cards.forEach((card) => card.style.setProperty('--drift', '0px'));
|
||||
showAll();
|
||||
} else {
|
||||
requestScrollUpdate();
|
||||
}
|
||||
};
|
||||
|
||||
const syncMusicState = () => {
|
||||
if (!musicToggle || !backgroundMusic) return;
|
||||
const isPlaying = !backgroundMusic.paused;
|
||||
musicToggle.setAttribute('aria-pressed', String(isPlaying));
|
||||
musicToggle.textContent = isPlaying ? '暂停音乐' : '播放音乐';
|
||||
};
|
||||
|
||||
const toggleMusic = async () => {
|
||||
if (!backgroundMusic || !musicToggle) return;
|
||||
|
||||
if (!backgroundMusic.paused) {
|
||||
backgroundMusic.pause();
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
await backgroundMusic.play();
|
||||
} catch {
|
||||
musicToggle.textContent = '音乐不可用';
|
||||
musicToggle.setAttribute('aria-pressed', 'false');
|
||||
}
|
||||
};
|
||||
|
||||
motionToggle?.addEventListener('click', () => setMotionState(!motionPaused));
|
||||
musicToggle?.addEventListener('click', toggleMusic);
|
||||
backgroundMusic?.addEventListener('play', syncMusicState);
|
||||
backgroundMusic?.addEventListener('pause', syncMusicState);
|
||||
backgroundMusic?.addEventListener('error', () => {
|
||||
if (musicToggle) musicToggle.textContent = '音乐不可用';
|
||||
});
|
||||
window.addEventListener('scroll', requestScrollUpdate, { passive: true });
|
||||
window.addEventListener('resize', requestScrollUpdate, { passive: true });
|
||||
window.addEventListener('resize', () => {
|
||||
window.clearTimeout(calligraphyResizeTimer);
|
||||
calligraphyResizeTimer = window.setTimeout(() => {
|
||||
if (Math.abs(window.innerWidth - calligraphyWidth) > 120) createCalligraphyField();
|
||||
}, 220);
|
||||
}, { passive: true });
|
||||
reduceMotion.addEventListener?.('change', (event) => setMotionState(event.matches));
|
||||
|
||||
requestAnimationFrame(() => {
|
||||
createCalligraphyField();
|
||||
if (backgroundMusic) backgroundMusic.volume = 0.28;
|
||||
syncMusicState();
|
||||
body.classList.add('is-ready');
|
||||
setMotionState(motionPaused);
|
||||
updateScrollEffects();
|
||||
});
|
||||
})();
|
||||
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1787640980513" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="14469" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M962 962H62V62h900v900zM162 862h700V162H162v700z" p-id="14470" fill="#2c2c2c"></path></svg>
|
||||
|
After Width: | Height: | Size: 425 B |
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1787640936341" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="12356" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M64.164369 555.936675 64.164369 466.466967l894.496507 0 0 89.469708L64.164369 555.936675 64.164369 555.936675zM466.676745 958.450075 466.676745 63.953567l89.469708 0 0 894.497531L466.676745 958.451098 466.676745 958.450075z" fill="#2c2c2c" p-id="12357"></path></svg>
|
||||
|
After Width: | Height: | Size: 600 B |
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1787640959653" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13428" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M512 928C282.624 928 96 741.376 96 512S282.624 96 512 96s416 186.624 416 416-186.624 416-416 416z m0-768C317.92 160 160 317.92 160 512s157.92 352 352 352 352-157.92 352-352S706.08 160 512 160z" fill="#2c2c2c" p-id="13429"></path></svg>
|
||||
|
After Width: | Height: | Size: 569 B |
@@ -0,0 +1,325 @@
|
||||
{
|
||||
"event": {
|
||||
"canonicalName": "五丈原之战(诸葛亮卒于军)",
|
||||
"aliases": [
|
||||
"诸葛亮卒于军·司马懿坚壁",
|
||||
"五丈原之战",
|
||||
"诸葛亮最后一次北伐"
|
||||
],
|
||||
"era": "三国·蜀汉建兴十二年/曹魏青龙二年",
|
||||
"date": "234年春至八月",
|
||||
"place": "武功五丈原、渭水南岸(今陕西省宝鸡市岐山县五丈原一带)",
|
||||
"summary": "诸葛亮据五丈原屯田久驻,司马懿奉诏坚壁拒守;两军相持百余日后诸葛亮病卒军中,蜀军整阵退还。"
|
||||
},
|
||||
"narration": {
|
||||
"language": "zh-CN",
|
||||
"estimatedSeconds": 86,
|
||||
"fullText": "建兴十二年春,诸葛亮率军从斜谷出,以流马运粮,进驻武功五丈原。渭水对面,司马懿渡河背水筑垒,两军隔着关中平野相持。诸葛亮深知,往日北伐常被粮运拖住,于是分兵屯田,让军士与渭滨百姓杂处耕作,军纪严整,不扰民居。他想把这次远征,变成一场耐力战。曹魏的选择却更耐心:魏明帝命司马懿坚壁拒守,等蜀军锐气消磨、粮道吃紧。百余日间,诸葛亮屡次挑战,司马懿始终不出。使者往来时,司马懿只问诸葛亮吃了多少、每天处理多少事务。听说他食少事烦,便判断他难以持久。八月,诸葛亮病势转重,卒于军中,年五十四。杨仪整军撤退,姜维令军中反旗鸣鼓,做出回身迎战之势,司马懿收兵不逼。待蜀军入谷,死讯才公布。司马懿察看留下的营垒,叹他是天下奇才。五丈原没有决战,胜负却在百日相持与一人生命的尽头落定。"
|
||||
},
|
||||
"scenes": [
|
||||
{
|
||||
"id": "01",
|
||||
"title": "出斜谷",
|
||||
"timePlace": "234年春,斜谷至武功五丈原",
|
||||
"purpose": "交代诸葛亮最后一次北伐的行军、运输与两军隔渭对峙格局。",
|
||||
"narration": "建兴十二年春,诸葛亮率军从斜谷出,以流马运粮,进驻武功五丈原。渭水对面,司马懿渡河背水筑垒,两军隔着关中平野相持。",
|
||||
"overlay": {
|
||||
"heading": "出斜谷",
|
||||
"line": "最后一次北伐,从秦岭谷口一直铺到渭水南岸。"
|
||||
},
|
||||
"people": [
|
||||
{
|
||||
"name": "诸葛亮",
|
||||
"office": "蜀汉丞相、武乡侯、北伐统帅",
|
||||
"action": "率军出斜谷,据武功五丈原"
|
||||
},
|
||||
{
|
||||
"name": "司马懿",
|
||||
"office": "曹魏大将军、关中诸军统帅",
|
||||
"action": "渡渭背水筑垒,拒蜀军于渭南"
|
||||
}
|
||||
],
|
||||
"image": {
|
||||
"original": "images/01-cross-xie-valley.png",
|
||||
"delivery": "images/01-cross-xie-valley.webp",
|
||||
"alt": "春日薄雾中,蜀军运输队从秦岭谷口进入五丈原营地,诸葛亮在高处察看,渭水远岸是司马懿的魏军营垒。",
|
||||
"prompt": "Use case: historical-scene. Asset type: Digital Me historical battle story frame, 16:9 landscape. Scene 1 of a consistent five-image sequence, spring 234 CE, late Eastern Han / Three Kingdoms China. The Qinling Xie Valley opens onto the Wuzhang Plains south of the Wei River. Zhuge Liang, age 53, lean with a composed angular face, short moustache and sparse beard, wearing a dark layered hemp commander's robe with restrained lacquered lamellar shoulder protection and a plain black cloth headwrap, stands on a newly built Shu earthwork overlooking disciplined supply columns entering camp. Compact hand-pushed wooden supply carriers suggest the historically recorded flowing-horse logistics without literal animal shapes or fantasy machinery. Across the river, distant Wei troops build a back-to-water fortified camp. Cinematic historical realism, dusty ochre, desaturated teal and smoke blue, soft spring haze, wide strategic composition with negative space for overlay. Strict third-century materials and architecture. No feather fan, no readable banners, no text, calligraphy, logos, watermark, modern objects, firearms, Ming/Qing armor, fantasy or gore.",
|
||||
"visualInference": "营垒位置、运输器具外形、两军同框距离和春日薄雾属于视觉重构;流马的具体形制不作确定复原。",
|
||||
"referenceImages": [],
|
||||
"refinementPrompt": "只把初稿中的四轮箱车替换为简洁的两轮木制手推运输车与成捆粮袋;人物、地貌、河流、营垒、光线和构图保持不变。"
|
||||
},
|
||||
"sources": [
|
||||
"《三国志·蜀书·诸葛亮传》",
|
||||
"《资治通鉴》卷七十二"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "02",
|
||||
"title": "渭滨屯田",
|
||||
"timePlace": "234年春夏,五丈原与渭水南岸",
|
||||
"purpose": "呈现诸葛亮针对粮运难题采取的久驻策略,以及蜀军不扰百姓的纪律。",
|
||||
"narration": "诸葛亮深知,往日北伐常被粮运拖住,于是分兵屯田,让军士与渭滨百姓杂处耕作,军纪严整,不扰民居。他想把这次远征,变成一场耐力战。",
|
||||
"overlay": {
|
||||
"heading": "渭滨屯田",
|
||||
"line": "军队开始耕地,远征便不再只靠身后的栈道。"
|
||||
},
|
||||
"people": [
|
||||
{
|
||||
"name": "诸葛亮",
|
||||
"office": "蜀汉丞相、北伐统帅",
|
||||
"action": "分兵屯田,为久驻之基"
|
||||
},
|
||||
{
|
||||
"name": "蜀汉军士",
|
||||
"office": "屯田士卒",
|
||||
"action": "与渭滨居民杂处耕作,不侵扰百姓"
|
||||
},
|
||||
{
|
||||
"name": "渭滨居民",
|
||||
"office": "当地百姓",
|
||||
"action": "在两军对峙期间仍安居耕作"
|
||||
}
|
||||
],
|
||||
"image": {
|
||||
"original": "images/02-farming-wei-bank.png",
|
||||
"delivery": "images/02-farming-wei-bank.webp",
|
||||
"alt": "渭水南岸的田地中,蜀军士卒与当地农人分畦耕作,远处五丈原军营秩序井然。",
|
||||
"prompt": "Use case: historical-scene. Same visual world, palette, historical realism and character continuity as Scene 1. Scene 2, spring to early summer 234 CE on fields beside the Wei River below Wuzhang Plains. Shu soldiers have set aside helmets and some armor to work separate field rows beside local farming families, using plausible late-Han wooden ploughs, hoes and baskets; interactions are calm and respectful, with no seizure of food or property. A disciplined Shu camp and watch posts remain on the plateau in the distance. Zhuge Liang's small recognizable silhouette observes from a raised field path, not posed heroically. Wide lateral composition connecting farmland, river and camp; warm morning light, muted ochre and desaturated green, negative space for overlay. No modern crops or tools, no idyllic fantasy abundance, no feather fan, readable writing, text, logos, watermark, firearms, Ming/Qing armor or gore.",
|
||||
"visualInference": "具体农具、田畦布局、人物距离与光线为视觉补全;史料只明确屯田、军民杂处、百姓安堵与军无私焉。",
|
||||
"referenceImages": [
|
||||
"images/01-cross-xie-valley.png(风格、地貌与诸葛亮身份参照)"
|
||||
],
|
||||
"refinementPrompt": ""
|
||||
},
|
||||
"sources": [
|
||||
"《三国志·蜀书·诸葛亮传》",
|
||||
"《资治通鉴》卷七十二"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "03",
|
||||
"title": "坚壁百日",
|
||||
"timePlace": "234年夏至八月,渭南两军营垒",
|
||||
"purpose": "突出司马懿的核心策略不是出战取胜,而是以坚垒和时间消磨蜀军。",
|
||||
"narration": "曹魏的选择却更耐心:魏明帝命司马懿坚壁拒守,等蜀军锐气消磨、粮道吃紧。百余日间,诸葛亮屡次挑战,司马懿始终不出。",
|
||||
"overlay": {
|
||||
"heading": "坚壁不战",
|
||||
"line": "诸葛亮要一场决战,司马懿只把时间留在壁垒之外。"
|
||||
},
|
||||
"people": [
|
||||
{
|
||||
"name": "司马懿",
|
||||
"office": "曹魏大将军、关中诸军统帅",
|
||||
"action": "奉诏坚壁拒守,屡不应战"
|
||||
},
|
||||
{
|
||||
"name": "诸葛亮",
|
||||
"office": "蜀汉丞相、北伐统帅",
|
||||
"action": "数次挑战,试图迫使魏军出垒"
|
||||
},
|
||||
{
|
||||
"name": "辛毗",
|
||||
"office": "曹魏卫尉、持节军师",
|
||||
"action": "持节到军中,约束魏军不得擅战"
|
||||
}
|
||||
],
|
||||
"image": {
|
||||
"original": "images/03-fortified-stalemate.png",
|
||||
"delivery": "images/03-fortified-stalemate.webp",
|
||||
"alt": "夏日尘风中,司马懿与持节的辛毗站在紧闭的魏军壁垒内,远处蜀军使者和战阵等待却无人出战。",
|
||||
"prompt": "Use case: historical-scene. Same late-Han world and restrained cinematic realism. Scene 3, high summer 234 CE: inside a closed Wei rammed-earth fortification south of the Wei River, Sima Yi, age about 55, sturdy with a controlled severe expression, greying moustache and beard, wearing a dark brown command robe over restrained lacquered lamellar armor, stands calmly above a shut timber gate. Beside him Xin Pi holds a plain imperial tally staff, preventing an unauthorized sortie. Outside across a broad dusty no-man's-land, a small Shu envoy and distant disciplined battle line wait in vain; the armies do not clash. Emphasize wall, distance and patience rather than combat. Harsh late-afternoon dust, dusty ochre, charcoal and smoke blue, 16:9 wide composition with negative space. No women's clothing gag, duel, feather fan, readable banners, text, logos, watermark, modern objects, firearms, Ming/Qing armor, fantasy or gore.",
|
||||
"visualInference": "壁垒门楼、使者站位、军阵距离与沙尘天气为镜头化处理;画面不采用送巾帼服饰的戏剧化桥段。",
|
||||
"referenceImages": [
|
||||
"images/01-cross-xie-valley.png(风格与关中地貌参照)"
|
||||
],
|
||||
"refinementPrompt": "只修正司马懿的身份特征:宽方脸、高额、浓眉、灰鬓、较丰的灰黑短须与低平深褐军巾,使其明确区别于诸葛亮;姿势、衣甲、辛毗、壁垒、军阵、光线和构图保持不变。"
|
||||
},
|
||||
"sources": [
|
||||
"《三国志·魏书·明帝纪》及裴松之注引《魏氏春秋》",
|
||||
"《资治通鉴》卷七十二"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "04",
|
||||
"title": "食少事烦",
|
||||
"timePlace": "234年八月,五丈原蜀军中军帐",
|
||||
"purpose": "从使者带回的生活细节过渡到诸葛亮病笃卒军,避免神异化死亡叙事。",
|
||||
"narration": "使者往来时,司马懿只问诸葛亮吃了多少、每天处理多少事务。听说他食少事烦,便判断他难以持久。八月,诸葛亮病势转重,卒于军中,年五十四。",
|
||||
"overlay": {
|
||||
"heading": "卒于军中",
|
||||
"line": "没有决战的百余日,先耗尽了主帅的生命。"
|
||||
},
|
||||
"people": [
|
||||
{
|
||||
"name": "诸葛亮",
|
||||
"office": "蜀汉丞相、北伐统帅",
|
||||
"action": "夙兴夜寐、食少事烦;八月病卒军中,时年五十四"
|
||||
},
|
||||
{
|
||||
"name": "蜀汉使者",
|
||||
"office": "往来魏营的军使",
|
||||
"action": "向司马懿回答诸葛亮寝食与政务状况"
|
||||
},
|
||||
{
|
||||
"name": "司马懿",
|
||||
"office": "曹魏大将军",
|
||||
"action": "由使者回答判断诸葛亮难以持久;不在本幕画面"
|
||||
}
|
||||
],
|
||||
"image": {
|
||||
"original": "images/04-lamp-fades-in-camp.png",
|
||||
"delivery": "images/04-lamp-fades-in-camp.webp",
|
||||
"alt": "五丈原夜帐中,病中的诸葛亮在油灯下审阅竹简,旁边饭食未动,医者与属官沉默守候。",
|
||||
"prompt": "Use case: historical-scene. Preserve Zhuge Liang's exact established appearance and clothing from Scene 1, now visibly pale and physically weakened but dignified. Scene 4, a deep night in August 234 CE inside the sparse Shu command tent at Wuzhang Plains. Zhuge Liang remains seated at a low map desk reviewing bamboo slips under one small oil lamp; a plain bowl of food is almost untouched. A physician and two senior attendants wait quietly in shadow, aware of his worsening illness. The lamp flame is low, but do not depict a corpse, collapse or melodramatic death. Intimate medium-wide composition, dark indigo, muted amber and worn hemp textures, room for overlay, cinematic historical realism. No stars entering the tent, ritual lamps, magic, feather fan, visible written characters, text, logos, watermark, modern medical objects, Ming/Qing costume, fantasy or gore.",
|
||||
"visualInference": "诸葛亮面貌、竹简数量、饭食器皿、医者站位和油灯将尽是象征性视觉补全;不把落星入营等注家异闻画成事实。",
|
||||
"referenceImages": [
|
||||
"images/01-cross-xie-valley.png(诸葛亮身份、衣着与色调参照)"
|
||||
],
|
||||
"refinementPrompt": ""
|
||||
},
|
||||
"sources": [
|
||||
"《三国志·蜀书·诸葛亮传》及裴松之注引《魏氏春秋》",
|
||||
"《资治通鉴》卷七十二"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "05",
|
||||
"title": "整阵归谷",
|
||||
"timePlace": "234年八月,五丈原至斜谷撤军方向",
|
||||
"purpose": "收束诸葛亮死后蜀军的有序撤离,以及司马懿对其营垒的评价。",
|
||||
"narration": "杨仪整军撤退,姜维令军中反旗鸣鼓,做出回身迎战之势,司马懿收兵不逼。待蜀军入谷,死讯才公布。司马懿察看留下的营垒,叹他是天下奇才。五丈原没有决战,胜负却在百日相持与一人生命的尽头落定。",
|
||||
"overlay": {
|
||||
"heading": "整阵归谷",
|
||||
"line": "主帅已逝,留下的军阵仍让追兵止步。"
|
||||
},
|
||||
"people": [
|
||||
{
|
||||
"name": "杨仪",
|
||||
"office": "蜀汉丞相长史",
|
||||
"action": "整顿诸军,组织撤离"
|
||||
},
|
||||
{
|
||||
"name": "姜维",
|
||||
"office": "蜀汉护军",
|
||||
"action": "令军队反旗鸣鼓,作势回击"
|
||||
},
|
||||
{
|
||||
"name": "司马懿",
|
||||
"office": "曹魏大将军",
|
||||
"action": "追击时收军不逼,后察看诸葛亮营垒并称天下奇才"
|
||||
},
|
||||
{
|
||||
"name": "诸葛亮",
|
||||
"office": "蜀汉丞相",
|
||||
"action": "死讯在军队入谷后才公布;不在本幕画面"
|
||||
}
|
||||
],
|
||||
"image": {
|
||||
"original": "images/05-ordered-retreat.png",
|
||||
"delivery": "images/05-ordered-retreat.webp",
|
||||
"alt": "清晨的空营中,司马懿下马察看蜀军留下的整齐壁垒,远处蜀军队列正有序退入秦岭谷道。",
|
||||
"prompt": "Use case: historical-scene. Same palette, terrain and Sima Yi appearance as Scene 3. Scene 5, cold dawn after the Shu withdrawal in August 234 CE. In the foreground, the abandoned Wuzhang Plains camp remains remarkably ordered: clean rammed-earth lines, mapped lanes, stacked but empty supply spaces, no bodies. Sima Yi has dismounted and studies the fortifications with restrained respect. Far beyond him, disciplined Shu columns with reversed standards and drums withdraw in formation toward the Qinling valley while Wei cavalry has halted on the open plain instead of pressing close. Layered wide 16:9 composition connecting empty camp, halted pursuit and distant retreat; blue-grey dawn with a thin amber horizon, somber historical realism and negative space. No wooden statue of Zhuge Liang, no coffin, no supernatural signs, duel, triumphal pose, readable banners, text, logos, watermark, modern objects, firearms, Ming/Qing armor, fantasy or gore.",
|
||||
"visualInference": "把魏军收兵、蜀军入谷和司马懿案行营垒压缩为同一幅层次化构图;具体晨光、距离与队形均属视觉补全。",
|
||||
"referenceImages": [
|
||||
"images/01-cross-xie-valley.png(地貌、色调与视觉世界参照)",
|
||||
"images/03-fortified-stalemate.png(司马懿身份与衣甲参照)"
|
||||
],
|
||||
"refinementPrompt": ""
|
||||
},
|
||||
"sources": [
|
||||
"《三国志·蜀书·诸葛亮传》及裴松之注引《汉晋春秋》",
|
||||
"《资治通鉴》卷七十二"
|
||||
]
|
||||
}
|
||||
],
|
||||
"bgm": {
|
||||
"catalogId": "seed-music-v1:linjiu:青崖引",
|
||||
"title": "青崖引",
|
||||
"version": "建议制作 72 BPM、无主唱纯伴奏的五丈原剪辑版",
|
||||
"status": "pending-export",
|
||||
"pathOrUrl": "",
|
||||
"usage": "以古琴短动机为骨,配低音弦乐、埙或低箫气声与极轻战鼓;若只得到人声版本,使用伴奏或去人声 stem,并在旁白下压低。",
|
||||
"reason": "项目说明以山间起雾的四音古琴动机为核心,适合从春雾、百日坚壁到灯尽撤军的克制叙事,不靠英雄式高潮,更能衬出时间取胜的主题。",
|
||||
"cues": [
|
||||
{
|
||||
"from": "00:00",
|
||||
"to": "00:16",
|
||||
"scene": "01",
|
||||
"direction": "单个古琴动机与低风声起,运输队出谷时加入极轻低弦,不给战鼓高潮。"
|
||||
},
|
||||
{
|
||||
"from": "00:16",
|
||||
"to": "00:32",
|
||||
"scene": "02",
|
||||
"direction": "加入木质轻击与疏缓拨弦,保持田地劳动的规律感,整体音量让位旁白。"
|
||||
},
|
||||
{
|
||||
"from": "00:32",
|
||||
"to": "00:49",
|
||||
"scene": "03",
|
||||
"direction": "低弦持续音收紧,极轻鼓点像时间推进;始终不出后短暂停顿。"
|
||||
},
|
||||
{
|
||||
"from": "00:49",
|
||||
"to": "01:06",
|
||||
"scene": "04",
|
||||
"direction": "抽掉节拍,只留古琴泛音、低箫气声与灯芯般的细噪;卒于军中后留半秒静默。"
|
||||
},
|
||||
{
|
||||
"from": "01:06",
|
||||
"to": "01:26",
|
||||
"scene": "05",
|
||||
"direction": "低弦短暂回归支撑整阵撤退,最后回到最初四音动机,尾音自然消失。"
|
||||
}
|
||||
]
|
||||
},
|
||||
"sources": [
|
||||
{
|
||||
"claim": "由斜谷出、流马运粮、据五丈原、屯田、相持、病卒与营垒评价",
|
||||
"citation": "《三国志·蜀书·诸葛亮传》",
|
||||
"url": "https://zh.wikisource.org/zh/三國志/卷35"
|
||||
},
|
||||
{
|
||||
"claim": "魏明帝命司马懿坚壁拒守,诸葛亮数次挑战而坚垒不应",
|
||||
"citation": "《三国志·魏书·明帝纪》",
|
||||
"url": "https://zh.wikisource.org/zh-hans/三國志/卷03"
|
||||
},
|
||||
{
|
||||
"claim": "司马懿渡渭背水筑垒、使者问答、诸葛亮卒军与蜀军整阵入谷",
|
||||
"citation": "《资治通鉴》卷七十二",
|
||||
"url": "https://zh.wikisource.org/zh-hans/資治通鑑/卷072"
|
||||
},
|
||||
{
|
||||
"claim": "晋方关于持重拒战、追击与案行蜀营的叙事",
|
||||
"citation": "《晋书·宣帝纪》",
|
||||
"url": "https://zh.wikisource.org/wiki/晉書_(四庫全書本)"
|
||||
},
|
||||
{
|
||||
"claim": "项目内《青崖引》曲目与创作说明;无实际音频",
|
||||
"citation": "digital-me-backend/scripts/seed-music.js"
|
||||
}
|
||||
],
|
||||
"blacklist": [
|
||||
"七星灯续命、禳星法事、落星三投或神魂升天",
|
||||
"木雕诸葛亮吓退司马懿",
|
||||
"诸葛亮与司马懿单挑、阵前会面或五丈原大决战",
|
||||
"把送巾帼妇人之服做成主视觉",
|
||||
"诸葛亮吐血败逃",
|
||||
"给双方写确定兵力数字",
|
||||
"把流马画成确定复原或幻想机械兽",
|
||||
"明清盔甲城楼、羽扇纶巾定型造型、京剧脸谱、火药爆炸或现代马鞍"
|
||||
],
|
||||
"storyWeb": {
|
||||
"entry": "../index.html",
|
||||
"template": "historical-battle-assets/story-template-v1",
|
||||
"calligraphy": {
|
||||
"text": "兰亭集序",
|
||||
"font": "../assets/fonts/YunFengJingLongXingShu-2.ttf",
|
||||
"required": true
|
||||
},
|
||||
"previews": [
|
||||
"../preview-desktop.png",
|
||||
"../preview-mobile.png"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,162 @@
|
||||
# 五丈原之战(诸葛亮卒于军)|素材说明
|
||||
|
||||
- 用户原称:诸葛亮卒于军·司马懿坚壁
|
||||
- 规范事件名:五丈原之战(诸葛亮卒于军)
|
||||
- 时代:三国·蜀汉建兴十二年/曹魏青龙二年(234年)
|
||||
- 时间:234年春至八月
|
||||
- 地点:武功五丈原、渭水南岸;今陕西省宝鸡市岐山县五丈原一带
|
||||
- 一句话结论:诸葛亮据五丈原屯田久驻,司马懿奉诏坚壁拒守;两军相持百余日后诸葛亮病卒军中,蜀军整阵退还。
|
||||
|
||||
## 约 86 秒主旁白
|
||||
|
||||
建兴十二年春,诸葛亮率军从斜谷出,以流马运粮,进驻武功五丈原。渭水对面,司马懿渡河背水筑垒,两军隔着关中平野相持。诸葛亮深知,往日北伐常被粮运拖住,于是分兵屯田,让军士与渭滨百姓杂处耕作,军纪严整,不扰民居。他想把这次远征,变成一场耐力战。曹魏的选择却更耐心:魏明帝命司马懿坚壁拒守,等蜀军锐气消磨、粮道吃紧。百余日间,诸葛亮屡次挑战,司马懿始终不出。使者往来时,司马懿只问诸葛亮吃了多少、每天处理多少事务。听说他食少事烦,便判断他难以持久。八月,诸葛亮病势转重,卒于军中,年五十四。杨仪整军撤退,姜维令军中反旗鸣鼓,做出回身迎战之势,司马懿收兵不逼。待蜀军入谷,死讯才公布。司马懿察看留下的营垒,叹他是天下奇才。五丈原没有决战,胜负却在百日相持与一人生命的尽头落定。
|
||||
|
||||
## 分幕素材
|
||||
|
||||
### 第一幕|出斜谷
|
||||
|
||||
- 时间地点:234年春,斜谷至武功五丈原
|
||||
- 叙事作用:交代诸葛亮最后一次北伐的行军、运输与两军隔渭对峙格局。
|
||||
- 旁白:建兴十二年春,诸葛亮率军从斜谷出,以流马运粮,进驻武功五丈原。渭水对面,司马懿渡河背水筑垒,两军隔着关中平野相持。
|
||||
- 叠字标题:出斜谷
|
||||
- 一句短文案:最后一次北伐,从秦岭谷口一直铺到渭水南岸。
|
||||
- 人物标签:
|
||||
- 诸葛亮/蜀汉丞相、武乡侯、北伐统帅/率军出斜谷,据武功五丈原
|
||||
- 司马懿/曹魏大将军、关中诸军统帅/渡渭背水筑垒,拒蜀军于渭南
|
||||
- 图片:`images/01-cross-xie-valley.png`、`images/01-cross-xie-valley.webp`
|
||||
- 画面说明:秦岭斜谷口展开为关中平原,诸葛亮立于五丈原新筑营垒高处,运输队正把粮秣送入营中;渭水远岸可见魏军背水营垒。
|
||||
- 替代文本:春日薄雾中,蜀军运输队从秦岭谷口进入五丈原营地,诸葛亮在高处察看,渭水远岸是司马懿的魏军营垒。
|
||||
- 最终提示词摘要:234年春斜谷与五丈原全景,诸葛亮据原建营,粮运队进入,渭水对岸魏军背水筑垒;三国写实、16:9、无文字。
|
||||
- 视觉补全:营垒位置、运输器具外形、两军同框距离和春日薄雾属于不改变战局的视觉重构;“流马”的具体形制不作确定复原。
|
||||
- 史实依据:《三国志·蜀书·诸葛亮传》;《资治通鉴》卷七十二。
|
||||
|
||||
### 第二幕|渭滨屯田
|
||||
|
||||
- 时间地点:234年春夏,五丈原与渭水南岸
|
||||
- 叙事作用:呈现诸葛亮针对粮运难题采取的久驻策略,以及蜀军“不扰百姓”的纪律。
|
||||
- 旁白:诸葛亮深知,往日北伐常被粮运拖住,于是分兵屯田,让军士与渭滨百姓杂处耕作,军纪严整,不扰民居。他想把这次远征,变成一场耐力战。
|
||||
- 叠字标题:渭滨屯田
|
||||
- 一句短文案:军队开始耕地,远征便不再只靠身后的栈道。
|
||||
- 人物标签:
|
||||
- 诸葛亮/蜀汉丞相、北伐统帅/分兵屯田,为久驻之基
|
||||
- 蜀汉军士/屯田士卒/与渭滨居民杂处耕作,不侵扰百姓
|
||||
- 渭滨居民/当地百姓/在两军对峙期间仍安居耕作
|
||||
- 图片:`images/02-farming-wei-bank.png`、`images/02-farming-wei-bank.webp`
|
||||
- 画面说明:渭水南岸田地里,卸下部分甲具的蜀军士卒与当地农人分畦劳作,军营和警戒哨位保持在远处,表现“屯田而不扰民”。
|
||||
- 替代文本:渭水南岸的田地中,蜀军士卒与当地农人分畦耕作,远处五丈原军营秩序井然。
|
||||
- 最终提示词摘要:五丈原春夏屯田,蜀军与渭滨百姓共同耕作,远处军营有序警戒;克制写实、16:9、无文字。
|
||||
- 视觉补全:具体农具、田畦布局、人物距离与光线为视觉补全;史料只明确屯田、军民杂处、百姓安堵与军无私焉。
|
||||
- 史实依据:《三国志·蜀书·诸葛亮传》;《资治通鉴》卷七十二。
|
||||
|
||||
### 第三幕|坚壁百日
|
||||
|
||||
- 时间地点:234年夏至八月,渭南两军营垒
|
||||
- 叙事作用:突出司马懿的核心策略不是出战取胜,而是以坚垒和时间消磨蜀军。
|
||||
- 旁白:曹魏的选择却更耐心:魏明帝命司马懿坚壁拒守,等蜀军锐气消磨、粮道吃紧。百余日间,诸葛亮屡次挑战,司马懿始终不出。
|
||||
- 叠字标题:坚壁不战
|
||||
- 一句短文案:诸葛亮要一场决战,司马懿只把时间留在壁垒之外。
|
||||
- 人物标签:
|
||||
- 司马懿/曹魏大将军、关中诸军统帅/奉诏坚壁拒守,屡不应战
|
||||
- 诸葛亮/蜀汉丞相、北伐统帅/数次挑战,试图迫使魏军出垒
|
||||
- 辛毗/曹魏卫尉、持节军师/持节到军中,约束魏军不得擅战
|
||||
- 图片:`images/03-fortified-stalemate.png`、`images/03-fortified-stalemate.webp`
|
||||
- 画面说明:魏军夯土壁垒紧闭,司马懿与持节的辛毗立在垒内;垒外远处蜀军使者与战阵停在旷野,双方没有交锋。
|
||||
- 替代文本:夏日尘风中,司马懿与持节的辛毗站在紧闭的魏军壁垒内,远处蜀军使者和战阵等待却无人出战。
|
||||
- 最终提示词摘要:渭南魏军夯土壁垒紧闭,司马懿持重,辛毗持节,蜀军挑战者停在垒外;用空间表现拒战,16:9、无文字。
|
||||
- 视觉补全:壁垒门楼、使者站位、军阵距离与沙尘天气为镜头化处理;画面不采用“送巾帼服饰”的戏剧化桥段。
|
||||
- 史实依据:《三国志·魏书·明帝纪》及裴松之注引《魏氏春秋》;《资治通鉴》卷七十二。
|
||||
|
||||
### 第四幕|食少事烦
|
||||
|
||||
- 时间地点:234年八月,五丈原蜀军中军帐
|
||||
- 叙事作用:从使者带回的生活细节过渡到诸葛亮病笃卒军,避免神异化死亡叙事。
|
||||
- 旁白:使者往来时,司马懿只问诸葛亮吃了多少、每天处理多少事务。听说他食少事烦,便判断他难以持久。八月,诸葛亮病势转重,卒于军中,年五十四。
|
||||
- 叠字标题:卒于军中
|
||||
- 一句短文案:没有决战的百余日,先耗尽了主帅的生命。
|
||||
- 人物标签:
|
||||
- 诸葛亮/蜀汉丞相、北伐统帅/夙兴夜寐、食少事烦;八月病卒军中,时年五十四
|
||||
- 蜀汉使者/往来魏营的军使/向司马懿回答诸葛亮寝食与政务状况
|
||||
- 司马懿/曹魏大将军/由使者回答判断诸葛亮难以持久;不在本幕画面
|
||||
- 图片:`images/04-lamp-fades-in-camp.png`、`images/04-lamp-fades-in-camp.webp`
|
||||
- 画面说明:夜深的蜀军中军帐里,消瘦病中的诸葛亮仍伏案处理竹简,身旁饭食几乎未动,医者和属官在暗处静候;不直接表现遗体。
|
||||
- 替代文本:五丈原夜帐中,病中的诸葛亮在油灯下审阅竹简,旁边饭食未动,医者与属官沉默守候。
|
||||
- 最终提示词摘要:五丈原深夜军帐,病中诸葛亮伏案理事、食物未动、灯火将尽,属官静候;克制写实、16:9、无神异元素、无文字。
|
||||
- 视觉补全:诸葛亮面貌、竹简数量、饭食器皿、医者站位和油灯将尽是象征性视觉补全;不把“落星入营”等注家异闻画成事实。
|
||||
- 史实依据:《三国志·蜀书·诸葛亮传》及裴松之注引《魏氏春秋》;《资治通鉴》卷七十二。
|
||||
|
||||
### 第五幕|整阵归谷
|
||||
|
||||
- 时间地点:234年八月,五丈原至斜谷撤军方向
|
||||
- 叙事作用:收束诸葛亮死后蜀军的有序撤离,以及司马懿对其营垒的评价。
|
||||
- 旁白:杨仪整军撤退,姜维令军中反旗鸣鼓,做出回身迎战之势,司马懿收兵不逼。待蜀军入谷,死讯才公布。司马懿察看留下的营垒,叹他是天下奇才。五丈原没有决战,胜负却在百日相持与一人生命的尽头落定。
|
||||
- 叠字标题:整阵归谷
|
||||
- 一句短文案:主帅已逝,留下的军阵仍让追兵止步。
|
||||
- 人物标签:
|
||||
- 杨仪/蜀汉丞相长史/整顿诸军,组织撤离
|
||||
- 姜维/蜀汉护军/令军队反旗鸣鼓,作势回击
|
||||
- 司马懿/曹魏大将军/追击时收军不逼,后察看诸葛亮营垒并称“天下奇才”
|
||||
- 诸葛亮/蜀汉丞相/死讯在军队入谷后才公布;不在本幕画面
|
||||
- 图片:`images/05-ordered-retreat.png`、`images/05-ordered-retreat.webp`
|
||||
- 画面说明:前景是撤空后仍井然有序的蜀军营垒,司马懿下马察看;远处蜀军旗鼓整齐地退入秦岭谷道,魏军骑兵停在平野上未再逼近。
|
||||
- 替代文本:清晨的空营中,司马懿下马察看蜀军留下的整齐壁垒,远处蜀军队列正有序退入秦岭谷道。
|
||||
- 最终提示词摘要:撤空的五丈原蜀营仍秩序严整,司马懿下马察看,远处蜀军整阵入谷、魏骑止步;苍凉克制、16:9、无文字。
|
||||
- 视觉补全:把“魏军收兵”“蜀军入谷”和“司马懿案行营垒”压缩为同一幅层次化构图;具体晨光、距离与队形均属视觉补全。
|
||||
- 史实依据:《三国志·蜀书·诸葛亮传》及裴松之注引《汉晋春秋》;《资治通鉴》卷七十二。
|
||||
|
||||
## BGM 选择
|
||||
|
||||
- 选中曲目:项目曲库种子键 `seed-music-v1:linjiu:青崖引`《青崖引》
|
||||
- 版本:建议制作 72 BPM、无主唱纯伴奏的“五丈原剪辑版”
|
||||
- 项目状态:待生成/待导出;仓库当前只有曲目与创作说明,没有 `audioUrl` 或本地音频,素材包不附 MP3。
|
||||
- 使用方式:以古琴短动机为骨,配低音弦乐、埙或低箫气声与极轻战鼓;若只得到人声版本,必须使用伴奏或去人声 stem,并在旁白下压低。
|
||||
- 选择理由:《青崖引》的项目说明本就以“山间起雾”的四音古琴动机为核心,适合五丈原从春雾、百日坚壁到灯尽撤军的克制叙事;它不靠英雄式高潮,更能衬出“时间取胜”的主题。
|
||||
|
||||
### Cue sheet
|
||||
|
||||
| 时间 | 幕次 | 剪辑方向 |
|
||||
| --- | --- | --- |
|
||||
| 00:00–00:16 | 01 | 单个古琴动机与低风声起,运输队出谷时加入极轻低弦,不给战鼓高潮。 |
|
||||
| 00:16–00:32 | 02 | 加入木质轻击与疏缓拨弦,保持田地劳动的规律感,整体音量让位旁白。 |
|
||||
| 00:32–00:49 | 03 | 低弦持续音收紧,极轻鼓点像时间推进;“始终不出”后短暂停顿。 |
|
||||
| 00:49–01:06 | 04 | 抽掉节拍,只留古琴泛音、低箫气声与灯芯般的细噪;“卒于军中”后留半秒静默。 |
|
||||
| 01:06–01:26 | 05 | 低弦短暂回归支撑整阵撤退,最后回到最初四音动机,尾音自然消失。 |
|
||||
|
||||
## 史实边界
|
||||
|
||||
### 史实依据
|
||||
|
||||
- 《三国志·蜀书·诸葛亮传》:由斜谷出、流马运粮、据武功五丈原、分兵屯田、相持百余日、八月病卒军中,以及司马懿察看营垒后称“天下奇才”。
|
||||
- 《三国志·魏书·明帝纪》:魏明帝命司马懿“坚壁拒守以挫其锋”,诸葛亮数次挑战而魏军坚垒不应。
|
||||
- 《资治通鉴》卷七十二:司马懿渡渭背水筑垒、两军相持、使者问答、诸葛亮病卒、杨仪整军、姜维反旗鸣鼓与蜀军入谷后发丧。
|
||||
- 《晋书·宣帝纪》:五丈原对垒、持重拒战、追至赤岸及察看蜀营等晋方叙事;其中带有明显晋室立场的夸胜细节不写入确定旁白。
|
||||
- 项目内曲库核对:`digital-me-backend/scripts/seed-music.js` 中 `linjiu / 青崖引` 曲目方案;仓库未发现该曲目的实际音频文件。
|
||||
|
||||
### 可视化补全
|
||||
|
||||
- 五幕的天气、时辰、镜头站位、营帐样式、军阵距离、人物面貌均为视觉设计,不作为史实断言。
|
||||
- 画面统一采用东汉末年至三国时期可解释的衣甲、军帐、夯土壁垒、农具与关中地貌;不使用明清盔甲、城楼或戏曲脸谱。
|
||||
- 第一幕的“流马”只以紧凑木制运输器具作概念性表现,不宣称还原其确切结构。
|
||||
- 第五幕把先后发生的收兵、入谷、察看营垒压缩为一幅远近层次构图,便于剪辑收束。
|
||||
|
||||
### 禁用元素
|
||||
|
||||
- 不画七星灯续命、禳星法事、落星三投、神魂升天等神异桥段。
|
||||
- 不画木雕诸葛亮吓退司马懿;正史注引版本写的是反旗鸣鼓、结阵而退。
|
||||
- 不画诸葛亮与司马懿单挑、阵前会面或大规模决战;此役核心是百余日对峙。
|
||||
- 不把“送巾帼妇人之服”做成主视觉,也不使用后世戏剧化服饰羞辱场面。
|
||||
- 不画诸葛亮吐血败逃;裴松之已质疑魏方这一夸胜说法。
|
||||
- 不给双方写确定兵力数字,不画现代意义上的整齐制服军团。
|
||||
- 不使用明清盔甲、明清城楼、羽扇纶巾定型造型、京剧脸谱、火药爆炸、现代马鞍或幻想机械流马。
|
||||
|
||||
## 生成说明
|
||||
|
||||
- 图片由内置图像生成工具制作,共 5 张原始 PNG 与 5 张 WebP,统一横版 16:9。
|
||||
- 图片不烘焙人物姓名、字幕、书法、Logo 或水印,并为后期叠字保留负空间。
|
||||
- 五张图的最终完整提示词保存在 `manifest.json` 的各幕 `image.prompt` 字段。
|
||||
|
||||
## 在线史料入口
|
||||
|
||||
- [《三国志·卷三十五·诸葛亮传》](https://zh.wikisource.org/zh/三國志/卷35)
|
||||
- [《三国志·卷三·明帝纪》](https://zh.wikisource.org/zh-hans/三國志/卷03)
|
||||
- [《资治通鉴·卷七十二》](https://zh.wikisource.org/zh-hans/資治通鑑/卷072)
|
||||
- [《晋书》四库全书本·宣帝纪相关段落](https://zh.wikisource.org/wiki/晉書_(四庫全書本))
|
||||
@@ -0,0 +1,222 @@
|
||||
<!doctype html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta name="theme-color" content="#eee8dc" />
|
||||
<meta
|
||||
name="description"
|
||||
content="五丈原之战图文叙事:从诸葛亮出斜谷、渭滨屯田,到坚壁百日、病卒军中与蜀军整阵归谷。"
|
||||
/>
|
||||
<title>五丈原之战|百日相持,灯尽军中</title>
|
||||
<link rel="stylesheet" href="./styles.css" />
|
||||
</head>
|
||||
<body>
|
||||
<a class="skip-link" href="#story">跳到正文</a>
|
||||
<a class="collection-back" href="../../index.html" aria-label="返回三国故事集">返回故事集</a>
|
||||
|
||||
<div class="page-motifs" aria-hidden="true">
|
||||
<div class="flow-grid flow-grid--primary"></div>
|
||||
<div class="flow-grid flow-grid--secondary"></div>
|
||||
<img class="ambient-shape ambient-shape--01 orbit-a" src="./assets/meta/十字-01.svg" alt="" />
|
||||
<img class="ambient-shape ambient-shape--02 orbit-b" src="./assets/meta/形状-椭圆形.svg" alt="" />
|
||||
<img class="ambient-shape ambient-shape--03 orbit-c" src="./assets/meta/tx-正方形.svg" alt="" />
|
||||
<img class="ambient-shape ambient-shape--04 orbit-b" src="./assets/meta/十字-01.svg" alt="" />
|
||||
<img class="ambient-shape ambient-shape--05 orbit-a" src="./assets/meta/形状-椭圆形.svg" alt="" />
|
||||
<img class="ambient-shape ambient-shape--06 orbit-c" src="./assets/meta/tx-正方形.svg" alt="" />
|
||||
<img class="ambient-shape ambient-shape--07 orbit-a" src="./assets/meta/十字-01.svg" alt="" />
|
||||
<img class="ambient-shape ambient-shape--08 orbit-b" src="./assets/meta/形状-椭圆形.svg" alt="" />
|
||||
<img class="ambient-shape ambient-shape--09 orbit-c" src="./assets/meta/tx-正方形.svg" alt="" />
|
||||
<div class="motion-matrix motion-matrix--01"><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i></div>
|
||||
<div class="motion-matrix motion-matrix--02"><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i></div>
|
||||
<div class="motion-matrix motion-matrix--03"><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i></div>
|
||||
<div class="motion-matrix motion-matrix--04"><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i></div>
|
||||
</div>
|
||||
<div class="calligraphy-field" id="calligraphy-field" aria-hidden="true"></div>
|
||||
|
||||
<header class="site-header">
|
||||
<a class="brand" href="#top" aria-label="返回卷首">
|
||||
<span class="brand__seal">原</span>
|
||||
<span class="brand__copy"><b>五丈原</b><small>ILLUSTRATED CHRONICLE</small></span>
|
||||
</a>
|
||||
<nav aria-label="主导航">
|
||||
<a href="#story">卷首</a><a href="#chronicle">画卷</a><a href="#timeline">编年</a><a href="#archive">人物</a>
|
||||
</nav>
|
||||
<span class="site-header__volume">三国纪 · 234</span>
|
||||
<i class="site-header__progress" aria-hidden="true"></i>
|
||||
</header>
|
||||
|
||||
<main>
|
||||
<section class="collage" id="top" aria-label="五丈原之战五幕历史画卷">
|
||||
<div class="collage__field" aria-hidden="true">
|
||||
<figure class="collage-card collage-card--01" style="--r: -3.5deg"><img src="./assets/images/01-cross-xie-valley.webp" alt="" /></figure>
|
||||
<figure class="collage-card collage-card--02" style="--r: 2.8deg"><img src="./assets/images/02-farming-wei-bank.webp" alt="" /></figure>
|
||||
<figure class="collage-card collage-card--03" style="--r: -1.8deg"><img src="./assets/images/03-fortified-stalemate.webp" alt="" /></figure>
|
||||
<figure class="collage-card collage-card--04" style="--r: 3.2deg"><img src="./assets/images/04-lamp-fades-in-camp.webp" alt="" /></figure>
|
||||
<figure class="collage-card collage-card--05" style="--r: -2.2deg"><img src="./assets/images/05-ordered-retreat.webp" alt="" /></figure>
|
||||
</div>
|
||||
<div class="collage__veil"></div>
|
||||
<div class="collage__title">
|
||||
<p><span>三国 · 蜀汉建兴十二年</span><i></i><span>公元 234 年</span></p>
|
||||
<h1>五丈原<br />之战</h1>
|
||||
<div class="collage__summary"><b>百日相持,灯尽军中</b><span>诸葛亮最后一次北伐</span></div>
|
||||
</div>
|
||||
<div class="collage__stamp" aria-hidden="true"><span>历史画卷</span><b>伍</b></div>
|
||||
<div class="collage__caption"><span>武功五丈原 · 渭水南岸</span><span>五幕 / 约八十六秒</span></div>
|
||||
<a class="collage__scroll" href="#story"><span>向下翻阅</span><i></i></a>
|
||||
</section>
|
||||
|
||||
<section class="story-intro" id="story" aria-labelledby="story-title">
|
||||
<div class="story-intro__grid">
|
||||
<aside class="story-intro__chapter" data-reveal data-direction="left"><span>CHAPTER</span><b>建兴<br />十二年</b><i></i></aside>
|
||||
<div class="story-intro__title" data-reveal data-direction="left">
|
||||
<p class="eyebrow"><span></span> ILLUSTRATED RECORD</p>
|
||||
<h2 id="story-title">没有决战的<br />最后一战。</h2>
|
||||
</div>
|
||||
<div class="story-intro__lead" data-reveal data-direction="right">
|
||||
<p>诸葛亮据五丈原屯田久驻,司马懿奉诏坚壁拒守;两军相持百余日后,诸葛亮病卒军中,蜀军整阵退还。</p>
|
||||
<dl>
|
||||
<div><dt>时间</dt><dd>234年春至八月</dd></div>
|
||||
<div><dt>地点</dt><dd>武功五丈原、渭水南岸</dd></div>
|
||||
<div><dt>核心</dt><dd>一场由粮道、时间与生命决定的战争</dd></div>
|
||||
</dl>
|
||||
</div>
|
||||
</div>
|
||||
<figure class="story-intro__image" data-reveal data-direction="up">
|
||||
<img src="./assets/images/01-cross-xie-valley.webp" alt="春日薄雾中,蜀军运输队从秦岭谷口进入五丈原营地,诸葛亮在高处察看,渭水远岸是司马懿的魏军营垒。" />
|
||||
<figcaption><span>图一 · 出斜谷</span><small>斜谷至武功五丈原 · 234年春</small></figcaption>
|
||||
</figure>
|
||||
</section>
|
||||
|
||||
<section class="chronicle" id="chronicle" aria-label="五丈原之战图文叙事画卷">
|
||||
<header class="chronicle__header">
|
||||
<p data-reveal data-direction="left">画卷 / PICTORIAL RECORD</p><span data-reveal data-direction="right">五幕,从春雾到秋暮</span>
|
||||
</header>
|
||||
|
||||
<article class="chronicle-entry" data-scene="01">
|
||||
<figure data-reveal data-direction="left">
|
||||
<img src="./assets/images/01-cross-xie-valley.webp" alt="春日薄雾中,蜀军运输队从秦岭谷口进入五丈原营地,诸葛亮在高处察看,渭水远岸是司马懿的魏军营垒。" loading="lazy" />
|
||||
<figcaption><span>01 / 出斜谷</span><small>五丈原新筑营垒</small></figcaption>
|
||||
</figure>
|
||||
<div class="chronicle-entry__copy" data-reveal data-direction="right">
|
||||
<time datetime="0234">234年春 · 斜谷至武功五丈原</time>
|
||||
<h2><span>01</span>出斜谷</h2>
|
||||
<p>建兴十二年春,诸葛亮率军从斜谷出,以流马运粮,进驻武功五丈原。渭水对面,司马懿渡河背水筑垒,两军隔着关中平野相持。</p>
|
||||
<aside><b>画面札记</b><span>最后一次北伐,从秦岭谷口一直铺到渭水南岸。</span></aside>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="chronicle-entry chronicle-entry--reverse" data-scene="02">
|
||||
<figure data-reveal data-direction="right">
|
||||
<img src="./assets/images/02-farming-wei-bank.webp" alt="渭水南岸的田地中,蜀军士卒与当地农人分畦耕作,远处五丈原军营秩序井然。" loading="lazy" />
|
||||
<figcaption><span>02 / 渭滨屯田</span><small>五丈原与渭水南岸</small></figcaption>
|
||||
</figure>
|
||||
<div class="chronicle-entry__copy" data-reveal data-direction="left">
|
||||
<time datetime="0234">234年春夏 · 五丈原与渭水南岸</time>
|
||||
<h2><span>02</span>渭滨屯田</h2>
|
||||
<p>诸葛亮深知,往日北伐常被粮运拖住,于是分兵屯田,让军士与渭滨百姓杂处耕作,军纪严整,不扰民居。他想把这次远征,变成一场耐力战。</p>
|
||||
<aside><b>画面札记</b><span>军队开始耕地,远征便不再只靠身后的栈道。</span></aside>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="chronicle-entry" data-scene="03">
|
||||
<figure data-reveal data-direction="left">
|
||||
<img src="./assets/images/03-fortified-stalemate.webp" alt="夏日尘风中,司马懿与持节的辛毗站在紧闭的魏军壁垒内,远处蜀军使者和战阵等待却无人出战。" loading="lazy" />
|
||||
<figcaption><span>03 / 坚壁不战</span><small>渭南两军营垒</small></figcaption>
|
||||
</figure>
|
||||
<div class="chronicle-entry__copy" data-reveal data-direction="right">
|
||||
<time datetime="0234-08">234年夏至八月 · 渭南两军营垒</time>
|
||||
<h2><span>03</span>坚壁百日</h2>
|
||||
<p>曹魏的选择却更耐心:魏明帝命司马懿坚壁拒守,等蜀军锐气消磨、粮道吃紧。百余日间,诸葛亮屡次挑战,司马懿始终不出。</p>
|
||||
<aside><b>画面札记</b><span>诸葛亮要一场决战,司马懿只把时间留在壁垒之外。</span></aside>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="chronicle-entry chronicle-entry--reverse chronicle-entry--night" data-scene="04">
|
||||
<figure data-reveal data-direction="right">
|
||||
<img src="./assets/images/04-lamp-fades-in-camp.webp" alt="五丈原夜帐中,病中的诸葛亮在油灯下审阅竹简,旁边饭食未动,医者与属官沉默守候。" loading="lazy" />
|
||||
<figcaption><span>04 / 食少事烦</span><small>五丈原蜀军中军帐</small></figcaption>
|
||||
</figure>
|
||||
<div class="chronicle-entry__copy" data-reveal data-direction="left">
|
||||
<time datetime="0234-08">234年八月 · 五丈原蜀军中军帐</time>
|
||||
<h2><span>04</span>卒于军中</h2>
|
||||
<p>使者往来时,司马懿只问诸葛亮吃了多少、每天处理多少事务。听说他食少事烦,便判断他难以持久。八月,诸葛亮病势转重,卒于军中,年五十四。</p>
|
||||
<aside><b>画面札记</b><span>没有决战的百余日,先耗尽了主帅的生命。</span></aside>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="chronicle-entry" data-scene="05">
|
||||
<figure data-reveal data-direction="left">
|
||||
<img src="./assets/images/05-ordered-retreat.webp" alt="清晨的空营中,司马懿下马察看蜀军留下的整齐壁垒,远处蜀军队列正有序退入秦岭谷道。" loading="lazy" />
|
||||
<figcaption><span>05 / 整阵归谷</span><small>五丈原至斜谷撤军方向</small></figcaption>
|
||||
</figure>
|
||||
<div class="chronicle-entry__copy" data-reveal data-direction="right">
|
||||
<time datetime="0234-08">234年八月 · 五丈原至斜谷</time>
|
||||
<h2><span>05</span>整阵归谷</h2>
|
||||
<p>杨仪整军撤退,姜维令军中反旗鸣鼓,做出回身迎战之势,司马懿收兵不逼。待蜀军入谷,死讯才公布。司马懿察看留下的营垒,叹他是天下奇才。</p>
|
||||
<aside><b>画面札记</b><span>主帅已逝,留下的军阵仍让追兵止步。</span></aside>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<blockquote class="chronicle-quote" data-reveal data-direction="up">
|
||||
<p>五丈原没有决战,<br />胜负却在百日相持与<br />一人生命的尽头落定。</p>
|
||||
<cite>五丈原之战 · 卷末语</cite>
|
||||
</blockquote>
|
||||
</section>
|
||||
|
||||
<section class="record-line" id="timeline" aria-labelledby="timeline-title">
|
||||
<header data-reveal data-direction="left">
|
||||
<p class="eyebrow"><span></span> CHRONOLOGY</p>
|
||||
<h2 id="timeline-title">百日之间,<br />时间成为战场。</h2>
|
||||
</header>
|
||||
<ol>
|
||||
<li data-reveal data-direction="right"><time>234 · 春</time><i></i><div><b>出斜谷,据五丈原</b><p>流马运粮,蜀军在渭水南岸建立营垒。</p></div></li>
|
||||
<li data-reveal data-direction="right"><time>春夏</time><i></i><div><b>分兵屯田</b><p>军士与渭滨居民杂处耕作,准备久驻。</p></div></li>
|
||||
<li data-reveal data-direction="right"><time>百余日</time><i></i><div><b>坚壁拒守</b><p>蜀军屡次挑战,魏军坚垒不应。</p></div></li>
|
||||
<li data-reveal data-direction="right"><time>八月</time><i></i><div><b>病卒军中</b><p>诸葛亮病势转重,卒于五丈原军中,年五十四。</p></div></li>
|
||||
<li data-reveal data-direction="right"><time>八月</time><i></i><div><b>整阵入谷</b><p>杨仪整军、姜维反旗鸣鼓,蜀军有序退还。</p></div></li>
|
||||
</ol>
|
||||
</section>
|
||||
|
||||
<section class="archive" id="archive" aria-labelledby="archive-title">
|
||||
<header data-reveal data-direction="left">
|
||||
<p class="eyebrow"><span></span> CHARACTER FILES</p>
|
||||
<h2 id="archive-title">相持之局,<br />各有其位。</h2>
|
||||
</header>
|
||||
<div class="archive__list">
|
||||
<article data-reveal data-direction="up"><span>01</span><h3>诸葛亮</h3><p><b>蜀汉丞相 · 北伐统帅</b>率军出斜谷,据五丈原屯田久驻;八月病卒军中,年五十四。</p></article>
|
||||
<article data-reveal data-direction="up"><span>02</span><h3>司马懿</h3><p><b>曹魏大将军 · 关中诸军统帅</b>奉诏坚壁拒守,察看蜀军遗留营垒后称诸葛亮为“天下奇才”。</p></article>
|
||||
<article data-reveal data-direction="up"><span>03</span><h3>辛毗</h3><p><b>曹魏卫尉 · 持节军师</b>持节到军中,约束魏军不得擅战。</p></article>
|
||||
<article data-reveal data-direction="up"><span>04</span><h3>杨仪</h3><p><b>蜀汉丞相长史</b>诸葛亮卒后整顿诸军,组织撤离。</p></article>
|
||||
<article data-reveal data-direction="up"><span>05</span><h3>姜维</h3><p><b>蜀汉护军</b>令军队反旗鸣鼓,作势回击,使追兵止步。</p></article>
|
||||
</div>
|
||||
<p class="archive__ending" data-reveal data-direction="up">不战,亦是一种战法。</p>
|
||||
</section>
|
||||
|
||||
<footer class="source-notes">
|
||||
<div><p class="eyebrow"><span></span> HISTORICAL SOURCES</p><h2>史实边界</h2></div>
|
||||
<div class="source-notes__copy">
|
||||
<p>本页叙事依据《三国志·蜀书·诸葛亮传》《三国志·魏书·明帝纪》及《资治通鉴》卷七十二。天气、时辰、营帐样式与人物面貌为视觉重构,不作为史实断言。</p>
|
||||
<nav aria-label="在线史料">
|
||||
<a href="https://zh.wikisource.org/zh/三國志/卷35" target="_blank" rel="noreferrer">《诸葛亮传》↗</a>
|
||||
<a href="https://zh.wikisource.org/zh-hans/三國志/卷03" target="_blank" rel="noreferrer">《明帝纪》↗</a>
|
||||
<a href="https://zh.wikisource.org/zh-hans/資治通鑑/卷072" target="_blank" rel="noreferrer">《资治通鉴》卷七十二 ↗</a>
|
||||
</nav>
|
||||
</div>
|
||||
</footer>
|
||||
</main>
|
||||
|
||||
<audio id="background-music" preload="metadata" loop>
|
||||
<source src="./assets/audio/guiling-guzheng.m4a" type="audio/mp4" />
|
||||
</audio>
|
||||
<div class="experience-controls" aria-label="页面体验控制">
|
||||
<button class="music-toggle" id="music-toggle" type="button" aria-pressed="false" title="古筝《归零》">播放音乐</button>
|
||||
<button class="motion-toggle" id="motion-toggle" type="button" aria-pressed="false">暂停动态</button>
|
||||
</div>
|
||||
<noscript>
|
||||
<style>[data-reveal] { opacity: 1 !important; filter: none !important; transform: none !important; }</style>
|
||||
<div class="no-script">当前为静态阅读模式。</div>
|
||||
</noscript>
|
||||
<script src="./main.js" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,191 @@
|
||||
(() => {
|
||||
const body = document.body;
|
||||
const root = document.documentElement;
|
||||
const header = document.querySelector('.site-header');
|
||||
const revealItems = [...document.querySelectorAll('[data-reveal]')];
|
||||
const cards = [...document.querySelectorAll('.collage-card')];
|
||||
const motionToggle = document.querySelector('#motion-toggle');
|
||||
const musicToggle = document.querySelector('#music-toggle');
|
||||
const backgroundMusic = document.querySelector('#background-music');
|
||||
const calligraphyField = document.querySelector('#calligraphy-field');
|
||||
const collectionBack = document.querySelector('.collection-back');
|
||||
const reduceMotion = window.matchMedia('(prefers-reduced-motion: reduce)');
|
||||
let motionPaused = reduceMotion.matches;
|
||||
let frameRequested = false;
|
||||
let calligraphyResizeTimer = 0;
|
||||
let calligraphyWidth = window.innerWidth;
|
||||
|
||||
collectionBack?.addEventListener('click', (event) => {
|
||||
if (window.parent === window) return;
|
||||
event.preventDefault();
|
||||
window.parent.postMessage(
|
||||
{ type: 'three-kingdoms-story-close' },
|
||||
window.location.origin,
|
||||
);
|
||||
});
|
||||
|
||||
const lantingPreface = `
|
||||
永和九年歲在癸丑暮春之初會於會稽山陰之蘭亭修禊事也群賢畢至少長咸集
|
||||
此地有崇山峻嶺茂林修竹又有清流激湍映帶左右引以為流觴曲水列坐其次
|
||||
雖無絲竹管弦之盛一觴一詠亦足以暢敘幽情是日也天朗氣清惠風和暢
|
||||
仰觀宇宙之大俯察品類之盛所以遊目騁懷足以極視聽之娛信可樂也
|
||||
夫人之相與俯仰一世或取諸懷抱晤言一室之內或因寄所託放浪形骸之外
|
||||
雖趣舍萬殊靜躁不同當其欣於所遇暫得於己快然自足不知老之將至
|
||||
及其所之既倦情隨事遷感慨係之矣向之所欣俯仰之間已為陳跡
|
||||
猶不能不以之興懷況修短隨化終期於盡古人云死生亦大矣豈不痛哉
|
||||
每覽昔人興感之由若合一契未嘗不臨文嗟悼不能喻之於懷
|
||||
固知一死生為虛誕齊彭殤為妄作後之視今亦猶今之視昔悲夫
|
||||
故列敘時人錄其所述雖世殊事異所以興懷其致一也後之覽者亦將有感於斯文
|
||||
`.replace(/[^\u3400-\u9fff]/g, '');
|
||||
|
||||
const randomBetween = (minimum, maximum) => minimum + Math.random() * (maximum - minimum);
|
||||
|
||||
const createCalligraphyField = () => {
|
||||
if (!calligraphyField) return;
|
||||
|
||||
const isCompact = window.innerWidth <= 680;
|
||||
const columnCount = isCompact ? 36 : Math.min(72, Math.max(48, Math.ceil(window.innerWidth / 28)));
|
||||
const source = lantingPreface + lantingPreface;
|
||||
const fragment = document.createDocumentFragment();
|
||||
const tones = ['#2d2821', '#2d2821', '#2d2821', '#874734', '#345f63'];
|
||||
let cursor = Math.floor(Math.random() * lantingPreface.length);
|
||||
|
||||
for (let index = 0; index < columnCount; index += 1) {
|
||||
const length = Math.floor(randomBetween(3, 8));
|
||||
const column = document.createElement('span');
|
||||
const fontSize = isCompact ? randomBetween(22, 48) : randomBetween(28, 78);
|
||||
const duration = randomBetween(0.8, 1.2) * (isCompact ? 68 : 82);
|
||||
|
||||
column.className = 'calligraphy-column';
|
||||
column.textContent = source.slice(cursor, cursor + length);
|
||||
column.style.setProperty('--top', `${randomBetween(-4, 82).toFixed(2)}vh`);
|
||||
column.style.setProperty('--start-x', `${randomBetween(106, 158).toFixed(2)}vw`);
|
||||
column.style.setProperty('--rest-x', `${randomBetween(2, 94).toFixed(2)}vw`);
|
||||
column.style.setProperty('--font-size', `${fontSize.toFixed(2)}px`);
|
||||
column.style.setProperty('--opacity', randomBetween(0.12, 0.4).toFixed(3));
|
||||
column.style.setProperty('--duration', `${duration.toFixed(2)}s`);
|
||||
column.style.setProperty('--delay', `${(-randomBetween(0, duration)).toFixed(2)}s`);
|
||||
column.style.setProperty('--tone', tones[Math.floor(Math.random() * tones.length)]);
|
||||
fragment.append(column);
|
||||
|
||||
cursor = (cursor + length) % lantingPreface.length;
|
||||
}
|
||||
|
||||
calligraphyField.replaceChildren(fragment);
|
||||
calligraphyWidth = window.innerWidth;
|
||||
};
|
||||
|
||||
const showAll = () => {
|
||||
revealItems.forEach((item) => item.classList.add('is-visible'));
|
||||
};
|
||||
|
||||
if ('IntersectionObserver' in window && !reduceMotion.matches) {
|
||||
const observer = new IntersectionObserver(
|
||||
(entries) => {
|
||||
entries.forEach((entry) => {
|
||||
if (!entry.isIntersecting) return;
|
||||
entry.target.classList.add('is-visible');
|
||||
observer.unobserve(entry.target);
|
||||
});
|
||||
},
|
||||
{ threshold: 0.12, rootMargin: '0px 0px -8% 0px' },
|
||||
);
|
||||
|
||||
revealItems.forEach((item) => observer.observe(item));
|
||||
window.addEventListener('pagehide', () => observer.disconnect(), { once: true });
|
||||
} else {
|
||||
showAll();
|
||||
}
|
||||
|
||||
const updateScrollEffects = () => {
|
||||
const scrollTop = window.scrollY;
|
||||
const scrollRange = Math.max(1, root.scrollHeight - window.innerHeight);
|
||||
const progress = Math.min(1, Math.max(0, scrollTop / scrollRange));
|
||||
|
||||
root.style.setProperty('--scroll-progress', progress.toFixed(4));
|
||||
header?.classList.toggle('is-scrolled', scrollTop > Math.max(90, window.innerHeight * 0.72));
|
||||
|
||||
if (!motionPaused && scrollTop < window.innerHeight * 1.15) {
|
||||
const heroProgress = Math.min(1, Math.max(0, scrollTop / window.innerHeight));
|
||||
cards.forEach((card, index) => {
|
||||
const direction = index % 2 === 0 ? -1 : 1;
|
||||
const distance = (14 + (index % 3) * 7) * heroProgress * direction;
|
||||
card.style.setProperty('--drift', `${distance.toFixed(2)}px`);
|
||||
});
|
||||
}
|
||||
|
||||
frameRequested = false;
|
||||
};
|
||||
|
||||
const requestScrollUpdate = () => {
|
||||
if (frameRequested) return;
|
||||
frameRequested = true;
|
||||
requestAnimationFrame(updateScrollEffects);
|
||||
};
|
||||
|
||||
const setMotionState = (paused) => {
|
||||
motionPaused = paused;
|
||||
body.classList.toggle('is-motion-paused', paused);
|
||||
motionToggle?.setAttribute('aria-pressed', String(paused));
|
||||
|
||||
if (motionToggle) {
|
||||
motionToggle.textContent = paused ? '恢复动态' : '暂停动态';
|
||||
}
|
||||
|
||||
if (paused) {
|
||||
cards.forEach((card) => card.style.setProperty('--drift', '0px'));
|
||||
showAll();
|
||||
} else {
|
||||
requestScrollUpdate();
|
||||
}
|
||||
};
|
||||
|
||||
const syncMusicState = () => {
|
||||
if (!musicToggle || !backgroundMusic) return;
|
||||
const isPlaying = !backgroundMusic.paused;
|
||||
musicToggle.setAttribute('aria-pressed', String(isPlaying));
|
||||
musicToggle.textContent = isPlaying ? '暂停音乐' : '播放音乐';
|
||||
};
|
||||
|
||||
const toggleMusic = async () => {
|
||||
if (!backgroundMusic || !musicToggle) return;
|
||||
|
||||
if (!backgroundMusic.paused) {
|
||||
backgroundMusic.pause();
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
await backgroundMusic.play();
|
||||
} catch {
|
||||
musicToggle.textContent = '音乐不可用';
|
||||
musicToggle.setAttribute('aria-pressed', 'false');
|
||||
}
|
||||
};
|
||||
|
||||
motionToggle?.addEventListener('click', () => setMotionState(!motionPaused));
|
||||
musicToggle?.addEventListener('click', toggleMusic);
|
||||
backgroundMusic?.addEventListener('play', syncMusicState);
|
||||
backgroundMusic?.addEventListener('pause', syncMusicState);
|
||||
backgroundMusic?.addEventListener('error', () => {
|
||||
if (musicToggle) musicToggle.textContent = '音乐不可用';
|
||||
});
|
||||
window.addEventListener('scroll', requestScrollUpdate, { passive: true });
|
||||
window.addEventListener('resize', requestScrollUpdate, { passive: true });
|
||||
window.addEventListener('resize', () => {
|
||||
window.clearTimeout(calligraphyResizeTimer);
|
||||
calligraphyResizeTimer = window.setTimeout(() => {
|
||||
if (Math.abs(window.innerWidth - calligraphyWidth) > 120) createCalligraphyField();
|
||||
}, 220);
|
||||
}, { passive: true });
|
||||
reduceMotion.addEventListener?.('change', (event) => setMotionState(event.matches));
|
||||
|
||||
requestAnimationFrame(() => {
|
||||
createCalligraphyField();
|
||||
if (backgroundMusic) backgroundMusic.volume = 0.28;
|
||||
syncMusicState();
|
||||
body.classList.add('is-ready');
|
||||
setMotionState(motionPaused);
|
||||
updateScrollEffects();
|
||||
});
|
||||
})();
|
||||
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1787640980513" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="14469" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M962 962H62V62h900v900zM162 862h700V162H162v700z" p-id="14470" fill="#2c2c2c"></path></svg>
|
||||
|
After Width: | Height: | Size: 425 B |
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1787640936341" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="12356" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M64.164369 555.936675 64.164369 466.466967l894.496507 0 0 89.469708L64.164369 555.936675 64.164369 555.936675zM466.676745 958.450075 466.676745 63.953567l89.469708 0 0 894.497531L466.676745 958.451098 466.676745 958.450075z" fill="#2c2c2c" p-id="12357"></path></svg>
|
||||
|
After Width: | Height: | Size: 600 B |
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1787640959653" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13428" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M512 928C282.624 928 96 741.376 96 512S282.624 96 512 96s416 186.624 416 416-186.624 416-416 416z m0-768C317.92 160 160 317.92 160 512s157.92 352 352 352 352-157.92 352-352S706.08 160 512 160z" fill="#2c2c2c" p-id="13429"></path></svg>
|
||||
|
After Width: | Height: | Size: 569 B |
@@ -0,0 +1,324 @@
|
||||
{
|
||||
"event": {
|
||||
"canonicalName": "钟会之乱(邓艾、钟会之死)",
|
||||
"aliases": [
|
||||
"钟会之乱·邓艾钟会之死",
|
||||
"钟会之乱",
|
||||
"成都之乱"
|
||||
],
|
||||
"era": "三国·曹魏景元五年(264年;同年五月改元咸熙)",
|
||||
"date": "264年正月;钟会正月十五日至成都、十六日起兵、十八日兵败身死,邓艾随后遇害",
|
||||
"place": "益州成都、绵竹西",
|
||||
"summary": "灭蜀后,钟会先促成邓艾被捕,继而在成都起兵失败;钟会与姜维死于兵变,刚被旧部救出的邓艾也与子邓忠在绵竹西被杀。"
|
||||
},
|
||||
"narration": {
|
||||
"language": "zh-CN",
|
||||
"estimatedSeconds": 89,
|
||||
"fullText": "景元四年末,蜀汉已经投降,灭蜀的两员魏将却先争起功来。钟会忌惮邓艾,又借他在成都擅自承制封拜,密奏其有反状。景元五年正月,卫瓘趁夜先入成都,离散邓艾诸将;天明时擒下邓艾父子,装入槛车送往京师。正月十五,钟会进入成都。邓艾一去,他独统大军。可司马昭已带十万大军屯于长安,钟会知道自己已被怀疑,决定起兵:成则取天下,不成便据蜀自守。十六日,他召集魏军将领和蜀汉旧官,为太后发丧,矫称遗诏讨伐司马昭,随后关闭宫门城门,将不肯听命者囚禁。姜维想借乱复汉,劝钟会先杀北来诸将;钟会却迟疑未决。消息一夜传遍军营。十八日中午,胡渊率兵鼓噪,诸军争先攻入。箭雨和火烟中,姜维奋战而死,钟会也被乱兵杀死。邓艾旧部追上槛车把他迎回,卫瓘自知曾与钟会共同奏陷邓艾,担心他返回生变,立即派田续追击。绵竹西的冬路上,邓艾与儿子邓忠一同被杀。蜀汉覆亡后的第一个正月,两位灭蜀主将都没能走出蜀地。"
|
||||
},
|
||||
"scenes": [
|
||||
{
|
||||
"id": "01",
|
||||
"title": "槛车征艾",
|
||||
"timePlace": "264年正月,成都邓艾驻所",
|
||||
"purpose": "从灭蜀后的争功转入权力清算,交代钟会先借朝廷诏命除去唯一忌惮的邓艾。",
|
||||
"narration": "景元四年末,蜀汉已经投降,灭蜀的两员魏将却先争起功来。钟会忌惮邓艾,又借他在成都擅自承制封拜,密奏其有反状。景元五年正月,卫瓘趁夜先入成都,离散邓艾诸将;天明时擒下邓艾父子,装入槛车送往京师。",
|
||||
"overlay": {
|
||||
"heading": "槛车征艾",
|
||||
"line": "灭蜀第一功尚未还朝,先被送上了囚车。"
|
||||
},
|
||||
"people": [
|
||||
{
|
||||
"name": "邓艾",
|
||||
"office": "曹魏太尉、灭蜀主将",
|
||||
"action": "被诏书以槛车征召,在成都与子一同被捕"
|
||||
},
|
||||
{
|
||||
"name": "邓忠",
|
||||
"office": "邓艾之子、魏军将领",
|
||||
"action": "与父亲同被收捕"
|
||||
},
|
||||
{
|
||||
"name": "卫瓘",
|
||||
"office": "曹魏监军、镇西军司",
|
||||
"action": "先入成都离散邓艾诸将,于天明擒下邓艾父子"
|
||||
},
|
||||
{
|
||||
"name": "钟会",
|
||||
"office": "曹魏司徒、灭蜀主将",
|
||||
"action": "密奏邓艾有反状,命卫瓘先行收捕;不在本幕画面"
|
||||
}
|
||||
],
|
||||
"image": {
|
||||
"original": "images/01-arrest-deng-ai.png",
|
||||
"delivery": "images/01-arrest-deng-ai.webp",
|
||||
"alt": "冬日拂晓的成都驻所内,卫瓘监督卫士押走邓艾父子,一辆木制槛车停在雾中。",
|
||||
"prompt": "Use case: historical-scene. Asset type: Digital Me historical event story frame, first image in a consistent five-image sequence, 16:9 landscape. Primary request: The dawn arrest of Deng Ai in Chengdu in the first lunar month of 264 CE, after the conquest of Shu. Wei Guan arrives with only a small disciplined guard in a plain envoy carriage, disarms Deng Ai's officers through an imperial order, and takes Deng Ai and his adult son Deng Zhong into custody; a wooden prisoner transport cart waits behind them. Scene/backdrop: a restrained former Shu military residence inside winter Chengdu, rammed-earth walls, dark timber galleries, simple grey roof tiles, damp cold dawn mist; recently surrendered city, no battle damage spectacle. Subjects and continuity: Deng Ai is an elderly, broad-shouldered veteran with a weathered square face, greying short beard, grey-brown robe under worn dark-brown lacquered lamellar; he has just risen and is held under guard with dignity, not humiliated. Deng Zhong is a sturdy adult officer beside him. Wei Guan is a lean grave middle-aged officer in plain black-green lamellar with small bronze fittings, calmly overseeing the arrest from the foreground. Style/medium: cinematic historical realism, natural human proportions, credible third-century China, high-detail film still, restrained epic tone. Composition/framing: wide strategic composition, arrest group in the middle distance, envoy carriage and cage cart establishing the story, usable misty negative space in upper-left for later overlay; no direct eye contact with camera. Lighting/mood: cold blue-grey dawn with limited warm lantern light; tense, procedural, irreversible. Color palette: ash blue, cold grey-green, dark lacquer brown, muted rust red, lantern amber; this exact palette should continue across the five scenes. Materials/textures: damp packed earth, worn hemp, weathered wood, lacquered lamellar, bronze fittings. Constraints: period-accurate late Eastern Han / Three Kingdoms clothing, armor, carts and architecture; respectful non-graphic historical violence; no readable documents or banners; no baked-in names, subtitles, calligraphy, logos or watermark. Avoid: Ming or Qing armor and buildings, winged helmets, opera costumes, feather fans, fantasy weapons, palace extravagance, firearms, explosions, blood, severed heads, modern objects, extra central heroes.",
|
||||
"visualInference": "驻所样式、人物外貌、槛车结构、站位与拂晓雾气为可视化重构;史料明言卫瓘夜入成都、平旦入邓艾所居、擒父子置槛车。"
|
||||
},
|
||||
"sources": [
|
||||
"《三国志·魏书·邓艾传》",
|
||||
"《三国志·魏书·钟会传》",
|
||||
"《资治通鉴》卷七十八"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "02",
|
||||
"title": "大军独属",
|
||||
"timePlace": "264年正月十五日,成都",
|
||||
"purpose": "呈现邓艾被除去后钟会独统大军,以及司马昭大军西来如何逼他立即行动。",
|
||||
"narration": "正月十五,钟会进入成都。邓艾一去,他独统大军。可司马昭已带十万大军屯于长安,钟会知道自己已被怀疑,决定起兵:成则取天下,不成便据蜀自守。",
|
||||
"overlay": {
|
||||
"heading": "大军独属",
|
||||
"line": "邓艾一去,钟会把灭蜀之功握成了自己的兵权。"
|
||||
},
|
||||
"people": [
|
||||
{
|
||||
"name": "钟会",
|
||||
"office": "曹魏司徒、灭蜀主将",
|
||||
"action": "在邓艾被收后独统大军,得知司马昭亲至长安后决意起兵"
|
||||
},
|
||||
{
|
||||
"name": "姜维",
|
||||
"office": "前蜀汉大将军",
|
||||
"action": "利用钟会异志试图构成内乱,再图复汉"
|
||||
},
|
||||
{
|
||||
"name": "司马昭",
|
||||
"office": "曹魏相国、晋公",
|
||||
"action": "命贾充入斜谷,自将十万屯长安;不在本幕画面"
|
||||
}
|
||||
],
|
||||
"image": {
|
||||
"original": "images/02-zhong-hui-decides-revolt.png",
|
||||
"delivery": "images/02-zhong-hui-decides-revolt.webp",
|
||||
"alt": "冬日成都军府里,钟会在地图案前读信,姜维从后注视,门外魏军列队等候。",
|
||||
"prompt": "Use case: historical-scene. Asset type: Digital Me historical event story frame, second image in the same consistent five-image 16:9 sequence. Primary request: Zhong Hui reaches Chengdu on the fifteenth day of the first lunar month, 264 CE. With Deng Ai already removed, he reads Sima Zhao's warning letter and realizes a vast army is moving toward Chang'an; he decides to rebel. Jiang Wei stands nearby, watchful and controlled, as a campaign map and command tallies show Zhong Hui now commands the main force. Scene/backdrop: captured Shu command hall in winter Chengdu, modest third-century timber structure with dark pillars, rammed-earth courtyard visible beyond, grey roof tiles and cold mist outside; stacked armor racks and disciplined troops in the far courtyard imply a huge army without crowding the room. Subjects and continuity: Zhong Hui is a slender late-thirties commander with a sharp intelligent face, narrow eyes, thin moustache, black folded headcloth, dark muted-rust command robe beneath black lacquered lamellar; he grips an opened but entirely unreadable silk letter, startled calculation turning into resolve. Jiang Wei is a tall lean early-sixties veteran with grey at the temples, trimmed beard and restrained blue-grey Shu lamellar, standing slightly behind and observing rather than theatrically whispering. No Deng Ai in this scene. Style/medium: cinematic historical realism, natural faces and proportions, high-detail film still, sober political thriller inside a credible Three Kingdoms setting. Composition/framing: wide 16:9 interior, Zhong Hui near center-right at a low map table, Jiang Wei in depth, large open doorway reveals ranks of troops; generous dim negative space on left for later overlay; no one looks at camera. Lighting/mood: cold winter daylight through the doorway, one low amber oil lamp; contained ambition, suspicion, dangerous opportunity. Color palette: exact sequence palette of ash blue, cold grey-green, dark lacquer brown, muted rust red and limited amber. Materials/textures: rough silk letter without visible characters, bamboo tallies, wood map table, worn hemp, lacquered lamellar, damp stone and packed earth. Constraints: historically grounded late Eastern Han / Three Kingdoms clothing, armor, furniture and architecture; no readable Chinese on letter, maps or banners; no baked-in text, names, calligraphy, logos or watermark; keep Zhong Hui and Jiang Wei visually consistent for later scene. Avoid: Ming/Qing palace grandeur, ornate dragon throne, bright imperial colors, feather fans, opera costume, fantasy armor, winged helmets, modern paper maps, firearms, blood, melodramatic evil gestures.",
|
||||
"visualInference": "军府室内、地图、兵符、来书外形、姜维站位与庭院军阵均为画面重构;不将钟会的心理活动画成可证实的私室对话。"
|
||||
},
|
||||
"sources": [
|
||||
"《三国志·魏书·钟会传》",
|
||||
"《资治通鉴》卷七十八"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "03",
|
||||
"title": "矫诏闭门",
|
||||
"timePlace": "264年正月十六日,成都蜀汉旧朝堂与益州官署",
|
||||
"purpose": "呈现钟会之乱正式发动,以谎称的太后遗诏与对魏蜀官员的囚禁封闭全城。",
|
||||
"narration": "十六日,钟会召集魏军将领和蜀汉旧官,为太后发丧,矫称遗诏讨伐司马昭,随后关闭宫门城门,将不肯听命者囚禁。姜维想借乱复汉,劝钟会先杀北来诸将;钟会却迟疑未决。",
|
||||
"overlay": {
|
||||
"heading": "矫诏闭门",
|
||||
"line": "一纸虚构的遗诏,把成都变成一座封闭的赌局。"
|
||||
},
|
||||
"people": [
|
||||
{
|
||||
"name": "钟会",
|
||||
"office": "曹魏司徒、叛乱发动者",
|
||||
"action": "矫称郭太后遗诏讨司马昭,收押诸将与官员"
|
||||
},
|
||||
{
|
||||
"name": "姜维",
|
||||
"office": "前蜀汉大将军",
|
||||
"action": "试图借钟会之乱杀北来诸将、重建蜀汉"
|
||||
},
|
||||
{
|
||||
"name": "胡烈",
|
||||
"office": "魏军将领",
|
||||
"action": "与其他魏军将领一同被拘闭,将密告传给其子胡渊"
|
||||
},
|
||||
{
|
||||
"name": "邱建",
|
||||
"office": "钟会帐下督",
|
||||
"action": "为胡烈求得亲兵入内送食,导致消息外泄"
|
||||
}
|
||||
],
|
||||
"image": {
|
||||
"original": "images/03-forged-edict-sealed-gates.png",
|
||||
"delivery": "images/03-forged-edict-sealed-gates.webp",
|
||||
"alt": "成都旧朝堂内,钟会手持丝书面对不安的魏蜀官员,后方守军正缓缓关上木门。",
|
||||
"prompt": "Use case: historical-scene. Asset type: Digital Me historical event story frame, third image in the same consistent five-image 16:9 sequence. Primary request: On the sixteenth day of the first lunar month, 264 CE, Zhong Hui gathers Wei protectors, commandants, cavalry-gate officers and former Shu officials in the Chengdu court hall under the pretext of mourning the recently deceased empress dowager. He presents a forged testament calling for action against Sima Zhao, forces the assembled officials to assent, then closes the palace and city gates and confines dissenting commanders. Scene/backdrop: sober former Shu audience hall in winter Chengdu, early third-century timber columns, rammed-earth walls, modest tiled roof, plain mourning drapery with absolutely no writing; heavy timber doors visibly closing in the background, guards taking positions at thresholds. Subjects and continuity: Zhong Hui, the same slender late-thirties commander with sharp face, narrow eyes, thin moustache, black folded headcloth, muted-rust robe and black lacquered lamellar, stands on a low platform holding an unmarked pale silk document. Rows of uneasy middle-aged military officials and former Shu civil officials kneel or stand below; a few are quietly redirected by armed guards toward side chambers. Jiang Wei, the same tall lean early-sixties veteran with grey temples and trimmed beard in blue-grey Shu lamellar, stands off to the side, controlled and unreadable. Style/medium: cinematic historical realism, natural proportions, high-detail film still, political confinement rather than theatrical coronation. Composition/framing: wide symmetrical 16:9 hall with Zhong Hui off-center, anxious officials across the middle ground, doors and guards telling the story in depth; clear negative space in upper right for overlay; nobody faces camera directly. Lighting/mood: cold daylight cut by closing doors, low amber lamps, claustrophobic and irreversible. Color palette: same ash blue, cold grey-green, dark lacquer brown, muted rust red and limited amber. Materials/textures: rough undyed mourning cloth, dark wood grain, packed earth, muted silk, worn lamellar and hemp robes. Constraints: period-grounded late Eastern Han / Three Kingdoms architecture, garments, official caps and armor; the silk testament and all banners/drapery must contain zero visible writing or symbols; no baked-in text, names, subtitles, calligraphy, logos or watermark; non-graphic and historically restrained. Avoid: emperor throne, dragon imagery, Ming/Qing grand palace, bright red-and-gold ceremony, opera costume, tall fantasy crowns, winged helmets, feather fans, modern paper, chains, torture, blood, modern objects.",
|
||||
"visualInference": "座次、服饰、丧帷、丝书、关门时刻与侧室押解为多步事件的同幕压缩;郭太后未在成都,因此不画灵柩或遗体。"
|
||||
},
|
||||
"sources": [
|
||||
"《三国志·魏书·钟会传》及裴松之注引《汉晋春秋》",
|
||||
"《资治通鉴》卷七十八"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "04",
|
||||
"title": "正月十八",
|
||||
"timePlace": "264年正月十八日中午,成都",
|
||||
"purpose": "以军队自发攻城呈现钟会失去控制,收束钟会与姜维之死。",
|
||||
"narration": "消息一夜传遍军营。十八日中午,胡渊率兵鼓噪,诸军不期而动,争先攻入。有人架梯登城,有人放火,矢下如雨。姜维在钟会身边奋战而死,钟会也被乱兵杀死,蜀中劫掠死丧,数日后才稍定。",
|
||||
"overlay": {
|
||||
"heading": "正月十八",
|
||||
"line": "鼓声一响,主将不再能指挥军队,只能被军队吞没。"
|
||||
},
|
||||
"people": [
|
||||
{
|
||||
"name": "胡渊",
|
||||
"office": "胡烈之子、魏军将领",
|
||||
"action": "率父兵鼓噪出营,引发诸军攻入成都囚禁区"
|
||||
},
|
||||
{
|
||||
"name": "钟会",
|
||||
"office": "曹魏司徒、叛乱发动者",
|
||||
"action": "与姜维并肩抵抗,被乱兵杀死"
|
||||
},
|
||||
{
|
||||
"name": "姜维",
|
||||
"office": "前蜀汉大将军",
|
||||
"action": "率钟会左右作战,杀伤数人后被杀"
|
||||
},
|
||||
{
|
||||
"name": "卫瓘",
|
||||
"office": "曹魏监军",
|
||||
"action": "此前诈称病笃脱身,兵变后组织诸军,数日后才定乱"
|
||||
}
|
||||
],
|
||||
"image": {
|
||||
"original": "images/04-chengdu-mutiny.png",
|
||||
"delivery": "images/04-chengdu-mutiny.webp",
|
||||
"alt": "成都兵变中,魏军冲破木门、架梯越墙,钟会与姜维在烟尘和箭雨中被层层包围。",
|
||||
"prompt": "Use case: historical-scene. Asset type: Digital Me historical event story frame, fourth image in the same consistent five-image 16:9 sequence. Primary request: At noon on the eighteenth day of the first lunar month, 264 CE, Wei soldiers led by Hu Yuan surge toward the sealed Chengdu compound without waiting for a unified command. Drums sound, ladders rise, roof tiles and arrows rain into the courtyard. Inside, Zhong Hui and Jiang Wei fight with a small guard and are overwhelmed; their deaths are imminent and should be conveyed through collapsing defense and aftermath, never through gore. Scene/backdrop: winter Chengdu inner military compound, modest rammed-earth wall and dark timber galleries with grey roof tiles, one small roof fire and smoke caused by the assault, heavy gate forced open, ladders against the wall; no giant imperial palace. Subjects and continuity: Zhong Hui is the same slender late-thirties commander with sharp face, thin moustache, muted-rust robe and black lacquered lamellar, sword lowered as attackers close from multiple directions. Jiang Wei is the same tall lean early-sixties veteran with grey temples, trimmed beard and blue-grey Shu lamellar, defending beside him with a polearm, exhausted but resolute. Hu Yuan's Wei troops flood through the gate and over walls; the scale and direction of the rush matter more than individual hero poses. Style/medium: cinematic historical realism, high-detail film still, natural movement, urgent but sober, historical tragedy rather than action fantasy. Composition/framing: dynamic wide 16:9 diagonal from attackers entering lower-left and over the wall toward Zhong Hui and Jiang Wei in the middle-right; arrows and smoke lead the eye; usable smoky negative space upper-right for overlay; no camera-facing poses. Lighting/mood: cold white noon diffused through smoke, muted orange flame, sudden chaos, failed coup, inescapable end. Color palette: same ash blue, cold grey-green, dark lacquer brown, muted rust red and limited amber/orange. Materials/textures: splintered timber gate, wet roof tiles, hemp banners with no marks, battered lamellar, dust and pale smoke. Constraints: accurate late Eastern Han / Three Kingdoms armor, weapons and architecture; action and consequences imply death but show no blood, wounds, severed body parts, execution or corpse close-ups; no readable signs or banners; no baked-in text, names, subtitles, calligraphy, logos or watermark; preserve Zhong Hui and Jiang Wei appearances from earlier scenes. Avoid: superhero poses, wire-fu, magical effects, fire explosions, Ming/Qing city walls or armor, opera costume, winged helmets, firearms, gore, severed heads, piles of corpses, modern objects.",
|
||||
"visualInference": "把鼓噪、攻门、架梯、纵火、箭雨与钟会姜维之死压缩为一幅构图;人物站位、屋火规模与具体死亡瞬间不作史实还原。"
|
||||
},
|
||||
"sources": [
|
||||
"《三国志·魏书·钟会传》",
|
||||
"《资治通鉴》卷七十八"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "05",
|
||||
"title": "绵竹西",
|
||||
"timePlace": "264年正月十八日后,绵竹西",
|
||||
"purpose": "交代钟会死后邓艾短暂获释却仍遭杀害,将灭蜀两主将的结局并置收束。",
|
||||
"narration": "钟会死后,邓艾旧部追上槛车把他迎回。卫瓘自知曾与钟会共同奏陷邓艾,担心他返回生变,立即派田续追击。绵竹西的冬路上,邓艾与儿子邓忠一同被杀。蜀汉覆亡后的第一个正月,两位灭蜀主将都没能走出蜀地。",
|
||||
"overlay": {
|
||||
"heading": "绵竹西",
|
||||
"line": "邓艾刚离开槛车,又走进一条没有归路的冬路。"
|
||||
},
|
||||
"people": [
|
||||
{
|
||||
"name": "邓艾",
|
||||
"office": "曹魏太尉、灭蜀主将",
|
||||
"action": "被旧部从槛车迎回后,在绵竹西被田续所部杀害"
|
||||
},
|
||||
{
|
||||
"name": "邓忠",
|
||||
"office": "邓艾之子、魏军将领",
|
||||
"action": "与父亲同死于绵竹西"
|
||||
},
|
||||
{
|
||||
"name": "田续",
|
||||
"office": "曹魏护军",
|
||||
"action": "受卫瓘之命追击邓艾,于绵竹西杀邓艾父子"
|
||||
},
|
||||
{
|
||||
"name": "卫瓘",
|
||||
"office": "曹魏监军",
|
||||
"action": "因曾与钟会共陷邓艾、恐其为变,派田续袭杀;不在本幕画面"
|
||||
}
|
||||
],
|
||||
"image": {
|
||||
"original": "images/05-death-west-mianzhu.png",
|
||||
"delivery": "images/05-death-west-mianzhu.webp",
|
||||
"alt": "绵竹西的泥泞冬路上,打开的槛车停在旁边,邓艾与邓忠被持枪魏军团团围住。",
|
||||
"prompt": "Use case: historical-scene. Asset type: Digital Me historical event story frame, fifth and final image in the same consistent five-image 16:9 sequence. Primary request: After Zhong Hui has been killed in Chengdu, Deng Ai's former soldiers catch up with the wooden prisoner cart and release him. On the winter road west of Mianzhu, Wei Guan's officer Tian Xu and an armed detachment intercept Deng Ai and his son Deng Zhong. Show the instant the veteran father and son realize they are surrounded and cannot escape; their deaths are conveyed by the closed ring of spearpoints, the abandoned cage cart, and their doomed stance, with no graphic killing. Scene/backdrop: damp winter Sichuan road west of third-century Mianzhu, low wooded hills, bare branches, reeds, cold mist, muddy ruts and a narrow timber bridge in the distance; an opened wooden cage cart stands askew behind Deng Ai, establishing that he had just been freed. Subjects and continuity: Deng Ai is the same elderly broad-shouldered veteran from scene one, weathered square face, greying short beard, travel-worn grey-brown robe and worn dark-brown lacquered lamellar, standing unarmed or with hands away from weapons. His sturdy adult son Deng Zhong stands close beside him. Tian Xu, a hard middle-aged officer in plain dark Wei lamellar, remains with his detachment in the middle distance; disciplined soldiers close the road from both sides. Deng Ai and Deng Zhong are dignified, exhausted, and visibly trapped, not posing heroically. Style/medium: cinematic historical realism, natural proportions, high-detail film still, mournful political tragedy, restrained and historically credible. Composition/framing: wide 16:9 road composition, opened cage cart in left middle ground, Deng Ai and son centered but small within the enclosing detachment, misty hill and empty sky provide upper-right negative space for overlay; use spear diagonals to imply the final blow without showing impact. Lighting/mood: cold late-afternoon winter light with faint amber at the horizon; bitter, exhausted, unjust end after victory. Color palette: same sequence palette of ash blue, cold grey-green, dark lacquer brown, muted rust red and very limited amber. Materials/textures: wet earth, rough hemp, weathered wood cage, dull iron spearheads, worn lacquered lamellar, winter reeds. Constraints: period-grounded late Eastern Han / Three Kingdoms clothing, armor, cart and road landscape; respectful non-graphic violence; no blood, wounds, severed heads, visible execution stroke or corpse; no readable signs or banners; no baked-in text, names, subtitles, calligraphy, logos or watermark; preserve Deng Ai and Deng Zhong from scene one. Avoid: snowy northern landscape, Ming/Qing armor or city gate, fantasy weapons, winged helmets, opera costume, heroic cavalry charge, gore, torture, ropes around necks, modern roads or carts, magical light.",
|
||||
"visualInference": "史料只明言“遇于绵竹西,斩之”;冬路、车辙、雾气、包围阵形、人物表情与将槛车纳入同景均为不改变结局的视觉补全。"
|
||||
},
|
||||
"sources": [
|
||||
"《三国志·魏书·邓艾传》及裴松之注引《汉晋春秋》",
|
||||
"《资治通鉴》卷七十八"
|
||||
]
|
||||
}
|
||||
],
|
||||
"bgm": {
|
||||
"catalogId": "seed-music-v1:linjiu:广陵散·今译",
|
||||
"title": "广陵散·今译",
|
||||
"version": "约80 BPM、无主唱纯伴奏的成都兵变剪辑版",
|
||||
"status": "pending-export",
|
||||
"pathOrUrl": "",
|
||||
"usage": "纯伴奏:箫或低箫短气息、古琴主干、低音弦乐和木质打击;如果未来只有含人声版,必须使用伴奏或去人声 stem",
|
||||
"reason": "项目说明将这首古曲改编定义为箫起头、弦乐垫底的当代配器,适合从冷静收捕和权力移交逐步推入城中兵变,再以空冷尾音收束绵竹西的结局。",
|
||||
"cues": [
|
||||
{
|
||||
"from": "00:00",
|
||||
"to": "00:17",
|
||||
"scene": "01",
|
||||
"direction": "低箫气息与单个古琴散音起,微弱木质声像槛车轮轴;擒下邓艾父子时加一个低音点。"
|
||||
},
|
||||
{
|
||||
"from": "00:17",
|
||||
"to": "00:34",
|
||||
"scene": "02",
|
||||
"direction": "加入极低弦乐持续音,读到司马昭大军屯长安时才出现规律脉冲,不做英雄主题。"
|
||||
},
|
||||
{
|
||||
"from": "00:34",
|
||||
"to": "00:51",
|
||||
"scene": "03",
|
||||
"direction": "木质打击由疏变密,大门合拢时突然收掉高频,留低频与短促管乐气声。"
|
||||
},
|
||||
{
|
||||
"from": "00:51",
|
||||
"to": "01:11",
|
||||
"scene": "04",
|
||||
"direction": "十八日中午前短停半秒,随后不规则木鼓与弦乐断奏爆发;钟会、姜维之死处不起高潮,直接断拍。"
|
||||
},
|
||||
{
|
||||
"from": "01:11",
|
||||
"to": "01:29",
|
||||
"scene": "05",
|
||||
"direction": "抽掉打击,只留低弦和两个疏离古琴音;都没能走出蜀地后留一秒环境空白。"
|
||||
}
|
||||
]
|
||||
},
|
||||
"sources": [
|
||||
{
|
||||
"claim": "钟会密白邓艾有反状,卫瓘先行收邓艾,邓艾父子被置于槛车。",
|
||||
"citation": "《三国志·魏书·邓艾传》;《三国志·魏书·钟会传》;《资治通鉴》卷七十八"
|
||||
},
|
||||
{
|
||||
"claim": "钟会于正月十五日至成都,十六日矫太后遗诏起兵,囚禁魏蜀官员。",
|
||||
"citation": "《三国志·魏书·钟会传》;《资治通鉴》卷七十八"
|
||||
},
|
||||
{
|
||||
"claim": "正月十八日胡渊率兵鼓噪,诸军攻城,钟会与姜维死于兵变。",
|
||||
"citation": "《三国志·魏书·钟会传》;《资治通鉴》卷七十八"
|
||||
},
|
||||
{
|
||||
"claim": "钟会死后,邓艾旧部追出槛车迎还,卫瓘遣田续等追击,邓艾与邓忠遇害于绵竹西。",
|
||||
"citation": "《三国志·魏书·邓艾传》及裴松之注引《汉晋春秋》;《资治通鉴》卷七十八"
|
||||
},
|
||||
{
|
||||
"claim": "成都乱后军众抄掠,死丧狼藉,数日乃安集。",
|
||||
"citation": "《三国志·蜀书·后主传》;《资治通鉴》卷七十八"
|
||||
}
|
||||
],
|
||||
"blacklist": [
|
||||
"不把邓艾确已谋反写成史实;只写钟会等奏其有反状、朝廷以槛车征召",
|
||||
"不画邓艾与钟会单挑、对质或同场被杀",
|
||||
"不画钟会登基、称帝、戴冕或穿龙袍",
|
||||
"不画郭太后遗体或灵柩出现在成都",
|
||||
"不把姜维剖腹胆大如斗之类血腥异闻做成画面,不复制秘信全文或戏剧台词",
|
||||
"不画诸葛亮显灵、锦囊定计或其他三国演义式神异介入",
|
||||
"不出现晋朝皇帝、国号或帝制旗号;264年西晋尚未取代曹魏",
|
||||
"不编造超出史书明载的精确兵力,画面不按数字机械复原军阵",
|
||||
"不使用明清盔甲、明清宫城、戏曲脸谱、翼状头盔、火药爆炸、现代马车、奇幻武器或血腥特写"
|
||||
],
|
||||
"storyWeb": {
|
||||
"entry": "../index.html",
|
||||
"template": "historical-battle-assets/story-template-v1",
|
||||
"calligraphy": {
|
||||
"text": "兰亭集序",
|
||||
"font": "../assets/fonts/YunFengJingLongXingShu-2.ttf",
|
||||
"required": true
|
||||
},
|
||||
"previews": [
|
||||
"../preview-desktop.png",
|
||||
"../preview-mobile.png"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,167 @@
|
||||
# 钟会之乱(邓艾、钟会之死)|素材说明
|
||||
|
||||
- 用户原称:钟会之乱·邓艾钟会之死
|
||||
- 规范事件名:钟会之乱(邓艾、钟会之死)
|
||||
- 时代:三国·曹魏景元五年(264年;同年五月改元咸熙)
|
||||
- 时间:264年正月;钟会于正月十五日至成都、十六日起兵、十八日兵败身死,邓艾随后遇害
|
||||
- 地点:益州成都、绵竹西
|
||||
- 一句话结论:灭蜀后,钟会先促成邓艾被捕,继而在成都起兵失败;钟会与姜维死于兵变,刚被旧部救出的邓艾也与子邓忠在绵竹西被杀。
|
||||
|
||||
## 约 89 秒主旁白
|
||||
|
||||
景元四年末,蜀汉已经投降,灭蜀的两员魏将却先争起功来。钟会忌惮邓艾,又借他在成都擅自承制封拜,密奏其有反状。景元五年正月,卫瓘趁夜先入成都,离散邓艾诸将;天明时擒下邓艾父子,装入槛车送往京师。正月十五,钟会进入成都。邓艾一去,他独统大军。可司马昭已带十万大军屯于长安,钟会知道自己已被怀疑,决定起兵:成则取天下,不成便据蜀自守。十六日,他召集魏军将领和蜀汉旧官,为太后发丧,矫称遗诏讨伐司马昭,随后关闭宫门城门,将不肯听命者囚禁。姜维想借乱复汉,劝钟会先杀北来诸将;钟会却迟疑未决。消息一夜传遍军营。十八日中午,胡渊率兵鼓噪,诸军争先攻入。箭雨和火烟中,姜维奋战而死,钟会也被乱兵杀死。邓艾旧部追上槛车把他迎回,卫瓘自知曾与钟会共同奏陷邓艾,担心他返回生变,立即派田续追击。绵竹西的冬路上,邓艾与儿子邓忠一同被杀。蜀汉覆亡后的第一个正月,两位灭蜀主将都没能走出蜀地。
|
||||
|
||||
## 分幕素材
|
||||
|
||||
### 第一幕|槛车征艾
|
||||
|
||||
- 时间地点:264年正月,成都邓艾驻所
|
||||
- 叙事作用:从灭蜀后的争功转入权力清算,交代钟会先借朝廷诏命除去唯一忌惮的邓艾。
|
||||
- 旁白:景元四年末,蜀汉已经投降,灭蜀的两员魏将却先争起功来。钟会忌惮邓艾,又借他在成都擅自承制封拜,密奏其有反状。景元五年正月,卫瓘趁夜先入成都,离散邓艾诸将;天明时擒下邓艾父子,装入槛车送往京师。
|
||||
- 叠字标题:槛车征艾
|
||||
- 一句短文案:灭蜀第一功尚未还朝,先被送上了囚车。
|
||||
- 人物标签:
|
||||
- 邓艾/曹魏太尉、灭蜀主将/被诏书以槛车征召,在成都与子一同被捕
|
||||
- 邓忠/邓艾之子、魏军将领/与父亲同被收捕
|
||||
- 卫瓘/曹魏监军、镇西军司/先入成都离散邓艾诸将,于天明擒下邓艾父子
|
||||
- 钟会/曹魏司徒、灭蜀主将/密奏邓艾有反状,命卫瓘先行收捕;不在本幕画面
|
||||
- 图片:`images/01-arrest-deng-ai.png`、`images/01-arrest-deng-ai.webp`
|
||||
- 画面说明:冬日拂晓,卫瓘率少量卫士进入邓艾在成都的驻所;邓艾与邓忠被押向等候的木制槛车,周围魏军已经放下兵器。
|
||||
- 替代文本:冬日拂晓的成都驻所内,卫瓘监督卫士押走邓艾父子,一辆木制槛车停在雾中。
|
||||
- 最终提示词摘要:264年正月成都拂晓,卫瓘收捕邓艾父子,木制槛车在后;三国写实、16:9、无文字、无血腥。
|
||||
- 视觉补全:驻所样式、人物外貌、槛车结构、站位与拂晓雾气为可视化重构;史料明言卫瓘夜入成都、平旦入邓艾所居、擒父子置槛车。
|
||||
- 史实依据:《三国志·魏书·邓艾传》;《三国志·魏书·钟会传》;《资治通鉴》卷七十八。
|
||||
|
||||
### 第二幕|大军独属
|
||||
|
||||
- 时间地点:264年正月十五日,成都
|
||||
- 叙事作用:呈现邓艾被除去后钟会独统大军,以及司马昭大军西来如何逼他立即行动。
|
||||
- 旁白:正月十五,钟会进入成都。邓艾一去,他独统大军。可司马昭已带十万大军屯于长安,钟会知道自己已被怀疑,决定起兵:成则取天下,不成便据蜀自守。
|
||||
- 叠字标题:大军独属
|
||||
- 一句短文案:邓艾一去,钟会把灭蜀之功握成了自己的兵权。
|
||||
- 人物标签:
|
||||
- 钟会/曹魏司徒、灭蜀主将/在邓艾被收后独统大军,得知司马昭亲至长安后决意起兵
|
||||
- 姜维/前蜀汉大将军/利用钟会异志试图构成内乱,再图复汉
|
||||
- 司马昭/曹魏相国、晋公/命贾充入斜谷,自将十万屯长安;不在本幕画面
|
||||
- 图片:`images/02-zhong-hui-decides-revolt.png`、`images/02-zhong-hui-decides-revolt.webp`
|
||||
- 画面说明:钟会在成都军府展开司马昭来书,简朴地图与兵符摆在案上;姜维站在其后观察,庭院远处是钟会所统魏军。
|
||||
- 替代文本:冬日成都军府里,钟会在地图案前读信,姜维从后注视,门外魏军列队等候。
|
||||
- 最终提示词摘要:钟会进成都后独统大军,在姜维面前读到司马昭西来书信,决意起兵;政治惊悚、16:9、无可读文字。
|
||||
- 视觉补全:军府室内、地图、兵符、来书外形、姜维站位与庭院军阵均为画面重构;不将钟会的心理活动画成可证实的私室对话。
|
||||
- 史实依据:《三国志·魏书·钟会传》;《资治通鉴》卷七十八。
|
||||
|
||||
### 第三幕|矫诏闭门
|
||||
|
||||
- 时间地点:264年正月十六日,成都蜀汉旧朝堂与益州官署
|
||||
- 叙事作用:呈现钟会之乱正式发动,以谎称的太后遗诏与对魏蜀官员的囚禁封闭全城。
|
||||
- 旁白:十六日,钟会召集魏军将领和蜀汉旧官,为太后发丧,矫称遗诏讨伐司马昭,随后关闭宫门城门,将不肯听命者囚禁。姜维想借乱复汉,劝钟会先杀北来诸将;钟会却迟疑未决。
|
||||
- 叠字标题:矫诏闭门
|
||||
- 一句短文案:一纸虚构的遗诏,把成都变成一座封闭的赌局。
|
||||
- 人物标签:
|
||||
- 钟会/曹魏司徒、叛乱发动者/矫称郭太后遗诏讨司马昭,收押诸将与官员
|
||||
- 姜维/前蜀汉大将军/试图借钟会之乱杀北来诸将、重建蜀汉
|
||||
- 胡烈/魏军将领/与其他魏军将领一同被拘闭,将密告传给其子胡渊
|
||||
- 邱建/钟会帐下督/为胡烈求得亲兵入内送食,导致消息外泄
|
||||
- 图片:`images/03-forged-edict-sealed-gates.png`、`images/03-forged-edict-sealed-gates.webp`
|
||||
- 画面说明:简朴的蜀汉旧朝堂里,钟会举起无字丝书,官员们被迫聚集;背景里守军正在关闭厚重木门,一些人被引向侧室囚禁。
|
||||
- 替代文本:成都旧朝堂内,钟会手持丝书面对不安的魏蜀官员,后方守军正缓缓关上木门。
|
||||
- 最终提示词摘要:264年正月十六成都,钟会以矫诏发动叛乱,魏蜀官员被囚、宫门关闭;压抑写实、16:9、丝书无字。
|
||||
- 视觉补全:座次、服饰、丧帷、丝书、关门时刻与侧室押解为多步事件的同幕压缩;郭太后未在成都,因此不画灵柩或遗体。
|
||||
- 史实依据:《三国志·魏书·钟会传》及裴松之注引《汉晋春秋》;《资治通鉴》卷七十八。
|
||||
|
||||
### 第四幕|正月十八
|
||||
|
||||
- 时间地点:264年正月十八日中午,成都
|
||||
- 叙事作用:以军队自发攻城呈现钟会失去控制,收束钟会与姜维之死。
|
||||
- 旁白:消息一夜传遍军营。十八日中午,胡渊率兵鼓噪,诸军不期而动,争先攻入。有人架梯登城,有人放火,矢下如雨。姜维在钟会身边奋战而死,钟会也被乱兵杀死,蜀中劫掠死丧,数日后才稍定。
|
||||
- 叠字标题:正月十八
|
||||
- 一句短文案:鼓声一响,主将不再能指挥军队,只能被军队吞没。
|
||||
- 人物标签:
|
||||
- 胡渊/胡烈之子、魏军将领/率父兵鼓噪出营,引发诸军攻入成都囚禁区
|
||||
- 钟会/曹魏司徒、叛乱发动者/与姜维并肩抵抗,被乱兵杀死
|
||||
- 姜维/前蜀汉大将军/率钟会左右作战,杀伤数人后被杀
|
||||
- 卫瓘/曹魏监军/此前诈称病笃脱身,兵变后组织诸军,数日后才定乱
|
||||
- 图片:`images/04-chengdu-mutiny.png`、`images/04-chengdu-mutiny.webp`
|
||||
- 画面说明:成都内院木门被撞开,魏军从门口和墙梯同时涌入,屋顶火烟与箭雨压下;钟会和姜维在少量护卫中陷入合围。
|
||||
- 替代文本:成都兵变中,魏军冲破木门、架梯越墙,钟会与姜维在烟尘和箭雨中被层层包围。
|
||||
- 最终提示词摘要:264年正月十八成都兵变,胡渊所部与魏军攻门登城,钟会姜维被包围;动作暗示结局,无血腥特写。
|
||||
- 视觉补全:把鼓噪、攻门、架梯、纵火、箭雨与钟会姜维之死压缩为一幅构图;人物站位、屋火规模与具体死亡瞬间不作史实还原。
|
||||
- 史实依据:《三国志·魏书·钟会传》;《资治通鉴》卷七十八。
|
||||
|
||||
### 第五幕|绵竹西
|
||||
|
||||
- 时间地点:264年正月十八日后,绵竹西
|
||||
- 叙事作用:交代钟会死后邓艾短暂获释却仍遭杀害,将灭蜀两主将的结局并置收束。
|
||||
- 旁白:钟会死后,邓艾旧部追上槛车把他迎回。卫瓘自知曾与钟会共同奏陷邓艾,担心他返回生变,立即派田续追击。绵竹西的冬路上,邓艾与儿子邓忠一同被杀。蜀汉覆亡后的第一个正月,两位灭蜀主将都没能走出蜀地。
|
||||
- 叠字标题:绵竹西
|
||||
- 一句短文案:邓艾刚离开槛车,又走进一条没有归路的冬路。
|
||||
- 人物标签:
|
||||
- 邓艾/曹魏太尉、灭蜀主将/被旧部从槛车迎回后,在绵竹西被田续所部杀害
|
||||
- 邓忠/邓艾之子、魏军将领/与父亲同死于绵竹西
|
||||
- 田续/曹魏护军/受卫瓘之命追击邓艾,于绵竹西杀邓艾父子
|
||||
- 卫瓘/曹魏监军/因曾与钟会共陷邓艾、恐其为变,派田续袭杀;不在本幕画面
|
||||
- 图片:`images/05-death-west-mianzhu.png`、`images/05-death-west-mianzhu.webp`
|
||||
- 画面说明:潮湿雾冷的绵竹西冬路上,被打开的槛车留在身后,邓艾与邓忠被田续所部成环包围,枪锋交错暗示无可避免的结局。
|
||||
- 替代文本:绵竹西的泥泞冬路上,打开的槛车停在旁边,邓艾与邓忠被持枪魏军团团围住。
|
||||
- 最终提示词摘要:钟会死后,邓艾父子在绵竹西被田续所部包围,身后是打开的槛车;悲剧写实、16:9、无血腥杀戮。
|
||||
- 视觉补全:史料只明言“遇于绵竹西,斩之”;冬路、车辙、雾气、包围阵形、人物表情与将槛车纳入同景均为不改变结局的视觉补全。
|
||||
- 史实依据:《三国志·魏书·邓艾传》及裴松之注引《汉晋春秋》;《资治通鉴》卷七十八。
|
||||
|
||||
## BGM 选择
|
||||
|
||||
- 选中曲目:项目曲库种子键 `seed-music-v1:linjiu:广陵散·今译`《广陵散·今译》
|
||||
- 版本:建议制作约 80 BPM、无主唱纯伴奏的“成都兵变剪辑版”
|
||||
- 项目状态:待生成/待导出;仓库当前只有曲目与创作说明,没有 `audioUrl` 或对应本地音频,本素材包不附 MP3。
|
||||
- 使用方式:以箫或低箫的短气息开场,保留古琴主干,低音弦乐与木质打击逐段加压;不使用主唱。若将来只导出含人声版本,必须改用伴奏或去人声 stem。
|
||||
- 选择理由:项目说明已将这首古曲改编定义为“箫起头、弦乐垫底”的当代配器,比更舒缓的《青崖引》更适合从冷静收捕、权力移交逐步推入城中兵变,又能在绵竹西以空冷尾音收束。
|
||||
|
||||
### Cue sheet
|
||||
|
||||
| 时间 | 幕次 | 剪辑方向 |
|
||||
| --- | --- | --- |
|
||||
| 00:00–00:17 | 01 | 低箫气息与单个古琴散音起,微弱木质声像槛车轮轴;“擒下邓艾父子”时加一个低音点。 |
|
||||
| 00:17–00:34 | 02 | 加入极低弦乐持续音,读到司马昭大军屯长安时才出现规律脉冲,不做英雄主题。 |
|
||||
| 00:34–00:51 | 03 | 木质打击由疏变密,大门合拢时突然收掉高频,留低频与短促管乐气声。 |
|
||||
| 00:51–01:11 | 04 | “十八日中午”前短停半秒,随后不规则木鼓与弦乐断奏爆发;钟会、姜维之死处不起高潮,直接断拍。 |
|
||||
| 01:11–01:29 | 05 | 抽掉打击,只留低弦和两个疏离古琴音;“都没能走出蜀地”后留一秒环境空白。 |
|
||||
|
||||
## 史实边界
|
||||
|
||||
### 史实依据
|
||||
|
||||
- 《三国志·魏书·钟会传》:钟会密白邓艾有反状、卫瓘先行收邓艾、钟会独统大众后谋反、正月十五日至成都、十六日矫诏囚官、十八日兵变及钟会姜维之死。
|
||||
- 《三国志·魏书·邓艾传》:邓艾之承制封拜与遭众将白为“悖逆”,槛车征还,钟会死后邓艾被旧部迎回,又在绵竹西与子邓忠俱死。
|
||||
- 《资治通鉴》卷七十八:卫瓘夜入成都、平旦擒邓艾父子;钟会所统与司马昭西来;十六日囚禁众官;十八日胡渊与诸军攻城、登梯、纵火、矢下如雨;邓艾父子遇害于绵竹西。
|
||||
- 《三国志·蜀书·后主传》:邓艾被收、钟会至成都作乱、蜀中军众抄掠死丧狼藉、数日乃安集。
|
||||
- 项目内曲库核对:`digital-me-backend/scripts/seed-music.js` 中 `linjiu / 广陵散·今译` 曲目方案;仓库未发现该曲对应音频文件。
|
||||
|
||||
### 可视化补全
|
||||
|
||||
- 五幕的冬日雾气、时辰光线、人物面貌、衣甲细节、站位、军府与道路样式均为视觉设计,不作为史实断言。
|
||||
- 成都建筑统一采用东汉末至三国时期可解释的夿土、深色木构与灰瓦,不使用明清宫殿或城楼。
|
||||
- 第四幕把数个先后动作压缩为同一攻入瞬间;第五幕把旧部迎还与绵竹西被截串在同一画面中,以打开的槛车交代前事。
|
||||
- 图像不表现连续血腥杀戮,只用动作、包围、兵器与后果暗示人物结局。
|
||||
|
||||
### 禁用元素
|
||||
|
||||
- 不把邓艾“确已谋反”写成史实;可确认的是钟会等奏其有反状、朝廷以槛车征召。
|
||||
- 不画邓艾与钟会单挑、对质或同场被杀;两人之死地与先后均不同。
|
||||
- 不画钟会登基、称帝、戴冕或穿龙袍;他的起兵三日即败,未建立新朝。
|
||||
- 不画郭太后遗体或灵柩在成都;钟会只是借发丧矫称遗诏。
|
||||
- 不把姜维“剖腹胆大如斗”之类后世血腥异闻做成画面,也不复制秘信全文或戏剧台词。
|
||||
- 不画诸葛亮显灵、锦囊定计或其他《三国演义》式神异介入。
|
||||
- 不出现“晋朝”皇帝、国号或帝制旗号;264年司马昭是魏相国、晋公,西晋尚未取代曹魏。
|
||||
- 不编造超出史书明载的精确兵力,画面不按数字机械复原军阵;不使用明清盔甲、明清宫城、戏曲脸谱、翼状头盔、火药爆炸、现代马车或奇幻武器。
|
||||
|
||||
## 生成说明
|
||||
|
||||
- 图片由内置图像生成工具制作,共 5 张原始 PNG 与 5 张 WebP,全部为 1672×941 横版(约 16:9)。
|
||||
- 图片不烘焙人物姓名、字幕、书法、Logo 或水印,并为后期叠字保留负空间。
|
||||
- 五张图的最终完整提示词保存在 `manifest.json` 各幕 `image.prompt` 字段。
|
||||
|
||||
## 在线史料入口
|
||||
|
||||
- [《三国志·魏书·钟会传》](https://ctext.org/text.pl?if=gb&node=603245)
|
||||
- [《三国志·魏书·邓艾传》](https://ctext.org/text.pl?if=gb&node=603228)
|
||||
- [《资治通鉴》卷七十八](https://zh.wikisource.org/zh-hans/資治通鑑/卷078)
|
||||
- [《三国志·蜀书·后主传》](https://zh.wikisource.org/zh-hans/三國志_(四庫全書本)/蜀志/卷03)
|
||||
@@ -0,0 +1,211 @@
|
||||
<!doctype html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta name="theme-color" content="#eee8dc" />
|
||||
<meta name="description" content="灭蜀后,钟会先促成邓艾被捕,继而在成都起兵失败;钟会与姜维死于兵变,刚被旧部救出的邓艾也与子邓忠在绵竹西被杀。" />
|
||||
<title>钟会之乱(邓艾、钟会之死)|灭国之后,成都再乱</title>
|
||||
<link rel="stylesheet" href="./styles.css" />
|
||||
</head>
|
||||
<body>
|
||||
<a class="skip-link" href="#story">跳到正文</a>
|
||||
<a class="collection-back" href="../../index.html" aria-label="返回三国故事集">返回故事集</a>
|
||||
|
||||
<div class="page-motifs" aria-hidden="true">
|
||||
<div class="flow-grid flow-grid--primary"></div>
|
||||
<div class="flow-grid flow-grid--secondary"></div>
|
||||
<img class="ambient-shape ambient-shape--01 orbit-a" src="./assets/meta/十字-01.svg" alt="" />
|
||||
<img class="ambient-shape ambient-shape--02 orbit-b" src="./assets/meta/形状-椭圆形.svg" alt="" />
|
||||
<img class="ambient-shape ambient-shape--03 orbit-c" src="./assets/meta/tx-正方形.svg" alt="" />
|
||||
<img class="ambient-shape ambient-shape--04 orbit-b" src="./assets/meta/十字-01.svg" alt="" />
|
||||
<img class="ambient-shape ambient-shape--05 orbit-a" src="./assets/meta/形状-椭圆形.svg" alt="" />
|
||||
<img class="ambient-shape ambient-shape--06 orbit-c" src="./assets/meta/tx-正方形.svg" alt="" />
|
||||
<img class="ambient-shape ambient-shape--07 orbit-a" src="./assets/meta/十字-01.svg" alt="" />
|
||||
<img class="ambient-shape ambient-shape--08 orbit-b" src="./assets/meta/形状-椭圆形.svg" alt="" />
|
||||
<img class="ambient-shape ambient-shape--09 orbit-c" src="./assets/meta/tx-正方形.svg" alt="" />
|
||||
<div class="motion-matrix motion-matrix--01"><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i></div>
|
||||
<div class="motion-matrix motion-matrix--02"><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i></div>
|
||||
<div class="motion-matrix motion-matrix--03"><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i></div>
|
||||
<div class="motion-matrix motion-matrix--04"><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i></div>
|
||||
</div>
|
||||
<div class="calligraphy-field" id="calligraphy-field" aria-hidden="true"></div>
|
||||
|
||||
<header class="site-header">
|
||||
<a class="brand" href="#top" aria-label="返回卷首">
|
||||
<span class="brand__seal">会</span>
|
||||
<span class="brand__copy"><b>钟会之乱</b><small>ILLUSTRATED CHRONICLE</small></span>
|
||||
</a>
|
||||
<nav aria-label="主导航">
|
||||
<a href="#story">卷首</a><a href="#chronicle">画卷</a><a href="#timeline">编年</a><a href="#archive">人物</a>
|
||||
</nav>
|
||||
<span class="site-header__volume">三国纪 · 264</span>
|
||||
<i class="site-header__progress" aria-hidden="true"></i>
|
||||
</header>
|
||||
|
||||
<main>
|
||||
<section class="collage" id="top" aria-label="钟会之乱(邓艾、钟会之死)五幕历史画卷">
|
||||
<div class="collage__field" aria-hidden="true">
|
||||
<figure class="collage-card collage-card--01" style="--r: -3.5deg"><img src="./assets/images/01-arrest-deng-ai.webp" alt="" /></figure>
|
||||
<figure class="collage-card collage-card--02" style="--r: 2.8deg"><img src="./assets/images/02-zhong-hui-decides-revolt.webp" alt="" /></figure>
|
||||
<figure class="collage-card collage-card--03" style="--r: -1.8deg"><img src="./assets/images/03-forged-edict-sealed-gates.webp" alt="" /></figure>
|
||||
<figure class="collage-card collage-card--04" style="--r: 3.2deg"><img src="./assets/images/04-chengdu-mutiny.webp" alt="" /></figure>
|
||||
<figure class="collage-card collage-card--05" style="--r: -2.2deg"><img src="./assets/images/05-death-west-mianzhu.webp" alt="" /></figure>
|
||||
</div>
|
||||
<div class="collage__veil"></div>
|
||||
<div class="collage__title">
|
||||
<p><span>三国·曹魏景元五年(264年;同年五月改元咸熙)</span><i></i><span>264年正月;钟会正月十五日至成都、十六日起兵、十八日兵败身死,邓艾随后遇害</span></p>
|
||||
<h1>钟会<br />之乱</h1>
|
||||
<div class="collage__summary"><b>灭国之后,成都再乱</b><span>景元五年正月兵变</span></div>
|
||||
</div>
|
||||
<div class="collage__stamp" aria-hidden="true"><span>历史画卷</span><b>伍</b></div>
|
||||
<div class="collage__caption"><span>益州成都、绵竹西</span><span>伍幕 / 约89秒</span></div>
|
||||
<a class="collage__scroll" href="#story"><span>向下翻阅</span><i></i></a>
|
||||
</section>
|
||||
|
||||
<section class="story-intro" id="story" aria-labelledby="story-title">
|
||||
<div class="story-intro__grid">
|
||||
<aside class="story-intro__chapter" data-reveal data-direction="left"><span>CHAPTER</span><b>景元<br />五年</b><i></i></aside>
|
||||
<div class="story-intro__title" data-reveal data-direction="left">
|
||||
<p class="eyebrow"><span></span> ILLUSTRATED RECORD</p>
|
||||
<h2 id="story-title">胜利刚刚结束,<br />同盟已经崩裂。</h2>
|
||||
</div>
|
||||
<div class="story-intro__lead" data-reveal data-direction="right">
|
||||
<p>灭蜀后,钟会先促成邓艾被捕,继而在成都起兵失败;钟会与姜维死于兵变,刚被旧部救出的邓艾也与子邓忠在绵竹西被杀。</p>
|
||||
<dl><div><dt>时间</dt><dd>264年正月;钟会正月十五日至成都、十六日起兵、十八日兵败身死,邓艾随后遇害</dd></div><div><dt>地点</dt><dd>益州成都、绵竹西</dd></div><div><dt>核心</dt><dd>灭蜀后,钟会先促成邓艾被捕,继而在成都起兵失败;钟会与姜维死于兵变,刚被旧部救出的邓艾也与子邓忠在绵竹西被杀。</dd></div></dl>
|
||||
</div>
|
||||
</div>
|
||||
<figure class="story-intro__image" data-reveal data-direction="up">
|
||||
<img src="./assets/images/01-arrest-deng-ai.webp" alt="冬日拂晓的成都驻所内,卫瓘监督卫士押走邓艾父子,一辆木制槛车停在雾中。" />
|
||||
<figcaption><span>图一 · 槛车征艾</span><small>264年正月,成都邓艾驻所</small></figcaption>
|
||||
</figure>
|
||||
</section>
|
||||
|
||||
<section class="chronicle" id="chronicle" aria-label="图文叙事画卷">
|
||||
<header class="chronicle__header">
|
||||
<p data-reveal data-direction="left">画卷 / PICTORIAL RECORD</p><span data-reveal data-direction="right">五幕,从槛车入蜀到绵竹西</span>
|
||||
</header>
|
||||
<article class="chronicle-entry" data-scene="01">
|
||||
<figure data-reveal data-direction="left">
|
||||
<img src="./assets/images/01-arrest-deng-ai.webp" alt="冬日拂晓的成都驻所内,卫瓘监督卫士押走邓艾父子,一辆木制槛车停在雾中。" loading="lazy" />
|
||||
<figcaption><span>01 / 槛车征艾</span><small>264年正月,成都邓艾驻所</small></figcaption>
|
||||
</figure>
|
||||
<div class="chronicle-entry__copy" data-reveal data-direction="right">
|
||||
<time datetime="264">264年正月,成都邓艾驻所</time>
|
||||
<h2><span>01</span>槛车征艾</h2>
|
||||
<p>景元四年末,蜀汉已经投降,灭蜀的两员魏将却先争起功来。钟会忌惮邓艾,又借他在成都擅自承制封拜,密奏其有反状。景元五年正月,卫瓘趁夜先入成都,离散邓艾诸将;天明时擒下邓艾父子,装入槛车送往京师。</p>
|
||||
<aside><b>画面札记</b><span>灭蜀第一功尚未还朝,先被送上了囚车。</span></aside>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="chronicle-entry chronicle-entry--reverse" data-scene="02">
|
||||
<figure data-reveal data-direction="right">
|
||||
<img src="./assets/images/02-zhong-hui-decides-revolt.webp" alt="冬日成都军府里,钟会在地图案前读信,姜维从后注视,门外魏军列队等候。" loading="lazy" />
|
||||
<figcaption><span>02 / 大军独属</span><small>264年正月十五日,成都</small></figcaption>
|
||||
</figure>
|
||||
<div class="chronicle-entry__copy" data-reveal data-direction="left">
|
||||
<time datetime="264">264年正月十五日,成都</time>
|
||||
<h2><span>02</span>大军独属</h2>
|
||||
<p>正月十五,钟会进入成都。邓艾一去,他独统大军。可司马昭已带十万大军屯于长安,钟会知道自己已被怀疑,决定起兵:成则取天下,不成便据蜀自守。</p>
|
||||
<aside><b>画面札记</b><span>邓艾一去,钟会把灭蜀之功握成了自己的兵权。</span></aside>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="chronicle-entry" data-scene="03">
|
||||
<figure data-reveal data-direction="left">
|
||||
<img src="./assets/images/03-forged-edict-sealed-gates.webp" alt="成都旧朝堂内,钟会手持丝书面对不安的魏蜀官员,后方守军正缓缓关上木门。" loading="lazy" />
|
||||
<figcaption><span>03 / 矫诏闭门</span><small>264年正月十六日,成都蜀汉旧朝堂与益州官署</small></figcaption>
|
||||
</figure>
|
||||
<div class="chronicle-entry__copy" data-reveal data-direction="right">
|
||||
<time datetime="264">264年正月十六日,成都蜀汉旧朝堂与益州官署</time>
|
||||
<h2><span>03</span>矫诏闭门</h2>
|
||||
<p>十六日,钟会召集魏军将领和蜀汉旧官,为太后发丧,矫称遗诏讨伐司马昭,随后关闭宫门城门,将不肯听命者囚禁。姜维想借乱复汉,劝钟会先杀北来诸将;钟会却迟疑未决。</p>
|
||||
<aside><b>画面札记</b><span>一纸虚构的遗诏,把成都变成一座封闭的赌局。</span></aside>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="chronicle-entry chronicle-entry--reverse" data-scene="04">
|
||||
<figure data-reveal data-direction="right">
|
||||
<img src="./assets/images/04-chengdu-mutiny.webp" alt="成都兵变中,魏军冲破木门、架梯越墙,钟会与姜维在烟尘和箭雨中被层层包围。" loading="lazy" />
|
||||
<figcaption><span>04 / 正月十八</span><small>264年正月十八日中午,成都</small></figcaption>
|
||||
</figure>
|
||||
<div class="chronicle-entry__copy" data-reveal data-direction="left">
|
||||
<time datetime="264">264年正月十八日中午,成都</time>
|
||||
<h2><span>04</span>正月十八</h2>
|
||||
<p>消息一夜传遍军营。十八日中午,胡渊率兵鼓噪,诸军不期而动,争先攻入。有人架梯登城,有人放火,矢下如雨。姜维在钟会身边奋战而死,钟会也被乱兵杀死,蜀中劫掠死丧,数日后才稍定。</p>
|
||||
<aside><b>画面札记</b><span>鼓声一响,主将不再能指挥军队,只能被军队吞没。</span></aside>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="chronicle-entry" data-scene="05">
|
||||
<figure data-reveal data-direction="left">
|
||||
<img src="./assets/images/05-death-west-mianzhu.webp" alt="绵竹西的泥泞冬路上,打开的槛车停在旁边,邓艾与邓忠被持枪魏军团团围住。" loading="lazy" />
|
||||
<figcaption><span>05 / 绵竹西</span><small>264年正月十八日后,绵竹西</small></figcaption>
|
||||
</figure>
|
||||
<div class="chronicle-entry__copy" data-reveal data-direction="right">
|
||||
<time datetime="264">264年正月十八日后,绵竹西</time>
|
||||
<h2><span>05</span>绵竹西</h2>
|
||||
<p>钟会死后,邓艾旧部追上槛车把他迎回。卫瓘自知曾与钟会共同奏陷邓艾,担心他返回生变,立即派田续追击。绵竹西的冬路上,邓艾与儿子邓忠一同被杀。蜀汉覆亡后的第一个正月,两位灭蜀主将都没能走出蜀地。</p>
|
||||
<aside><b>画面札记</b><span>邓艾刚离开槛车,又走进一条没有归路的冬路。</span></aside>
|
||||
</div>
|
||||
</article>
|
||||
<blockquote class="chronicle-quote" data-reveal data-direction="up">
|
||||
<p>邓艾刚离开槛车,又走进一条没有归路的冬路。</p>
|
||||
<cite>钟会之乱(邓艾、钟会之死) · 卷末语</cite>
|
||||
</blockquote>
|
||||
</section>
|
||||
|
||||
<section class="record-line" id="timeline" aria-labelledby="timeline-title">
|
||||
<header data-reveal data-direction="left">
|
||||
<p class="eyebrow"><span></span> CHRONOLOGY</p>
|
||||
<h2 id="timeline-title">五个节点,<br />串起钟会之乱(邓艾、钟会之死)。</h2>
|
||||
</header>
|
||||
<ol>
|
||||
<li data-reveal data-direction="right"><time>264年正月,成都邓艾驻所</time><i></i><div><b>槛车征艾</b><p>景元四年末,蜀汉已经投降,灭蜀的两员魏将却先争起功来。钟会忌惮邓艾,又借他在成都擅自承制封拜,密奏其有反状。景元五年正月,卫瓘趁夜先入成都,离散邓艾诸将;天明时擒下邓艾父子,装入槛车送往京师。</p></div></li>
|
||||
<li data-reveal data-direction="right"><time>264年正月十五日,成都</time><i></i><div><b>大军独属</b><p>正月十五,钟会进入成都。邓艾一去,他独统大军。可司马昭已带十万大军屯于长安,钟会知道自己已被怀疑,决定起兵:成则取天下,不成便据蜀自守。</p></div></li>
|
||||
<li data-reveal data-direction="right"><time>264年正月十六日,成都蜀汉旧朝堂与益州官署</time><i></i><div><b>矫诏闭门</b><p>十六日,钟会召集魏军将领和蜀汉旧官,为太后发丧,矫称遗诏讨伐司马昭,随后关闭宫门城门,将不肯听命者囚禁。姜维想借乱复汉,劝钟会先杀北来诸将;钟会却迟疑未决。</p></div></li>
|
||||
<li data-reveal data-direction="right"><time>264年正月十八日中午,成都</time><i></i><div><b>正月十八</b><p>消息一夜传遍军营。十八日中午,胡渊率兵鼓噪,诸军不期而动,争先攻入。有人架梯登城,有人放火,矢下如雨。姜维在钟会身边奋战而死,钟会也被乱兵杀死,蜀中劫掠死丧,数日后才稍定。</p></div></li>
|
||||
<li data-reveal data-direction="right"><time>264年正月十八日后,绵竹西</time><i></i><div><b>绵竹西</b><p>钟会死后,邓艾旧部追上槛车把他迎回。卫瓘自知曾与钟会共同奏陷邓艾,担心他返回生变,立即派田续追击。绵竹西的冬路上,邓艾与儿子邓忠一同被杀。蜀汉覆亡后的第一个正月,两位灭蜀主将都没能走出蜀地。</p></div></li>
|
||||
</ol>
|
||||
</section>
|
||||
|
||||
<section class="archive" id="archive" aria-labelledby="archive-title">
|
||||
<header data-reveal data-direction="left">
|
||||
<p class="eyebrow"><span></span> CHARACTER FILES</p>
|
||||
<h2 id="archive-title">身在局中,<br />各有其位。</h2>
|
||||
</header>
|
||||
<div class="archive__list">
|
||||
<article data-reveal data-direction="up"><span>01</span><h3>邓艾</h3><p><b>曹魏太尉、灭蜀主将</b>被诏书以槛车征召,在成都与子一同被捕</p></article>
|
||||
<article data-reveal data-direction="up"><span>02</span><h3>邓忠</h3><p><b>邓艾之子、魏军将领</b>与父亲同被收捕</p></article>
|
||||
<article data-reveal data-direction="up"><span>03</span><h3>卫瓘</h3><p><b>曹魏监军、镇西军司</b>先入成都离散邓艾诸将,于天明擒下邓艾父子</p></article>
|
||||
<article data-reveal data-direction="up"><span>04</span><h3>钟会</h3><p><b>曹魏司徒、灭蜀主将</b>密奏邓艾有反状,命卫瓘先行收捕;不在本幕画面</p></article>
|
||||
<article data-reveal data-direction="up"><span>05</span><h3>姜维</h3><p><b>前蜀汉大将军</b>利用钟会异志试图构成内乱,再图复汉</p></article>
|
||||
<article data-reveal data-direction="up"><span>06</span><h3>司马昭</h3><p><b>曹魏相国、晋公</b>命贾充入斜谷,自将十万屯长安;不在本幕画面</p></article>
|
||||
<article data-reveal data-direction="up"><span>07</span><h3>胡烈</h3><p><b>魏军将领</b>与其他魏军将领一同被拘闭,将密告传给其子胡渊</p></article>
|
||||
<article data-reveal data-direction="up"><span>08</span><h3>邱建</h3><p><b>钟会帐下督</b>为胡烈求得亲兵入内送食,导致消息外泄</p></article>
|
||||
<article data-reveal data-direction="up"><span>09</span><h3>胡渊</h3><p><b>胡烈之子、魏军将领</b>率父兵鼓噪出营,引发诸军攻入成都囚禁区</p></article>
|
||||
<article data-reveal data-direction="up"><span>10</span><h3>田续</h3><p><b>曹魏护军</b>受卫瓘之命追击邓艾,于绵竹西杀邓艾父子</p></article></div>
|
||||
<p class="archive__ending" data-reveal data-direction="up">灭蜀后,钟会先促成邓艾被捕,继而在成都起兵失败;钟会与姜维死于兵变,刚被旧部救出的邓艾也与子邓忠在绵竹西被杀。</p>
|
||||
</section>
|
||||
|
||||
<footer class="source-notes">
|
||||
<div><p class="eyebrow"><span></span> HISTORICAL SOURCES</p><h2>史实边界</h2></div>
|
||||
<div class="source-notes__copy">
|
||||
<p>事实叙述以《三国志·魏书·邓艾传》;《三国志·魏书·钟会传》;《资治通鉴》卷七十八、《三国志·魏书·钟会传》;《资治通鉴》卷七十八、《三国志·魏书·邓艾传》及裴松之注引《汉晋春秋》;《资治通鉴》卷七十八、《三国志·蜀书·后主传》;《资治通鉴》卷七十八为边界;图片中的天气、人物站位、光线与建筑细部属于可视化补全,均不作为史书记载。演义、神异与后世附会不写成确定事实。</p>
|
||||
<nav aria-label="在线史料"><a href="./data/素材说明.md">本地素材说明</a><a href="./data/manifest.json">结构化史料清单</a></nav>
|
||||
</div>
|
||||
</footer>
|
||||
</main>
|
||||
|
||||
|
||||
<div class="experience-controls" aria-label="页面体验控制">
|
||||
|
||||
<button class="motion-toggle" id="motion-toggle" type="button" aria-pressed="false">暂停动态</button>
|
||||
</div>
|
||||
<noscript>
|
||||
<style>[data-reveal] { opacity: 1 !important; filter: none !important; transform: none !important; }</style>
|
||||
<div class="no-script">当前为静态阅读模式。</div>
|
||||
</noscript>
|
||||
<script src="./main.js" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,191 @@
|
||||
(() => {
|
||||
const body = document.body;
|
||||
const root = document.documentElement;
|
||||
const header = document.querySelector('.site-header');
|
||||
const revealItems = [...document.querySelectorAll('[data-reveal]')];
|
||||
const cards = [...document.querySelectorAll('.collage-card')];
|
||||
const motionToggle = document.querySelector('#motion-toggle');
|
||||
const musicToggle = document.querySelector('#music-toggle');
|
||||
const backgroundMusic = document.querySelector('#background-music');
|
||||
const calligraphyField = document.querySelector('#calligraphy-field');
|
||||
const collectionBack = document.querySelector('.collection-back');
|
||||
const reduceMotion = window.matchMedia('(prefers-reduced-motion: reduce)');
|
||||
let motionPaused = reduceMotion.matches;
|
||||
let frameRequested = false;
|
||||
let calligraphyResizeTimer = 0;
|
||||
let calligraphyWidth = window.innerWidth;
|
||||
|
||||
collectionBack?.addEventListener('click', (event) => {
|
||||
if (window.parent === window) return;
|
||||
event.preventDefault();
|
||||
window.parent.postMessage(
|
||||
{ type: 'three-kingdoms-story-close' },
|
||||
window.location.origin,
|
||||
);
|
||||
});
|
||||
|
||||
const lantingPreface = `
|
||||
永和九年歲在癸丑暮春之初會於會稽山陰之蘭亭修禊事也群賢畢至少長咸集
|
||||
此地有崇山峻嶺茂林修竹又有清流激湍映帶左右引以為流觴曲水列坐其次
|
||||
雖無絲竹管弦之盛一觴一詠亦足以暢敘幽情是日也天朗氣清惠風和暢
|
||||
仰觀宇宙之大俯察品類之盛所以遊目騁懷足以極視聽之娛信可樂也
|
||||
夫人之相與俯仰一世或取諸懷抱晤言一室之內或因寄所託放浪形骸之外
|
||||
雖趣舍萬殊靜躁不同當其欣於所遇暫得於己快然自足不知老之將至
|
||||
及其所之既倦情隨事遷感慨係之矣向之所欣俯仰之間已為陳跡
|
||||
猶不能不以之興懷況修短隨化終期於盡古人云死生亦大矣豈不痛哉
|
||||
每覽昔人興感之由若合一契未嘗不臨文嗟悼不能喻之於懷
|
||||
固知一死生為虛誕齊彭殤為妄作後之視今亦猶今之視昔悲夫
|
||||
故列敘時人錄其所述雖世殊事異所以興懷其致一也後之覽者亦將有感於斯文
|
||||
`.replace(/[^\u3400-\u9fff]/g, '');
|
||||
|
||||
const randomBetween = (minimum, maximum) => minimum + Math.random() * (maximum - minimum);
|
||||
|
||||
const createCalligraphyField = () => {
|
||||
if (!calligraphyField) return;
|
||||
|
||||
const isCompact = window.innerWidth <= 680;
|
||||
const columnCount = isCompact ? 36 : Math.min(72, Math.max(48, Math.ceil(window.innerWidth / 28)));
|
||||
const source = lantingPreface + lantingPreface;
|
||||
const fragment = document.createDocumentFragment();
|
||||
const tones = ['#2d2821', '#2d2821', '#2d2821', '#874734', '#345f63'];
|
||||
let cursor = Math.floor(Math.random() * lantingPreface.length);
|
||||
|
||||
for (let index = 0; index < columnCount; index += 1) {
|
||||
const length = Math.floor(randomBetween(3, 8));
|
||||
const column = document.createElement('span');
|
||||
const fontSize = isCompact ? randomBetween(22, 48) : randomBetween(28, 78);
|
||||
const duration = randomBetween(0.8, 1.2) * (isCompact ? 68 : 82);
|
||||
|
||||
column.className = 'calligraphy-column';
|
||||
column.textContent = source.slice(cursor, cursor + length);
|
||||
column.style.setProperty('--top', `${randomBetween(-4, 82).toFixed(2)}vh`);
|
||||
column.style.setProperty('--start-x', `${randomBetween(106, 158).toFixed(2)}vw`);
|
||||
column.style.setProperty('--rest-x', `${randomBetween(2, 94).toFixed(2)}vw`);
|
||||
column.style.setProperty('--font-size', `${fontSize.toFixed(2)}px`);
|
||||
column.style.setProperty('--opacity', randomBetween(0.12, 0.4).toFixed(3));
|
||||
column.style.setProperty('--duration', `${duration.toFixed(2)}s`);
|
||||
column.style.setProperty('--delay', `${(-randomBetween(0, duration)).toFixed(2)}s`);
|
||||
column.style.setProperty('--tone', tones[Math.floor(Math.random() * tones.length)]);
|
||||
fragment.append(column);
|
||||
|
||||
cursor = (cursor + length) % lantingPreface.length;
|
||||
}
|
||||
|
||||
calligraphyField.replaceChildren(fragment);
|
||||
calligraphyWidth = window.innerWidth;
|
||||
};
|
||||
|
||||
const showAll = () => {
|
||||
revealItems.forEach((item) => item.classList.add('is-visible'));
|
||||
};
|
||||
|
||||
if ('IntersectionObserver' in window && !reduceMotion.matches) {
|
||||
const observer = new IntersectionObserver(
|
||||
(entries) => {
|
||||
entries.forEach((entry) => {
|
||||
if (!entry.isIntersecting) return;
|
||||
entry.target.classList.add('is-visible');
|
||||
observer.unobserve(entry.target);
|
||||
});
|
||||
},
|
||||
{ threshold: 0.12, rootMargin: '0px 0px -8% 0px' },
|
||||
);
|
||||
|
||||
revealItems.forEach((item) => observer.observe(item));
|
||||
window.addEventListener('pagehide', () => observer.disconnect(), { once: true });
|
||||
} else {
|
||||
showAll();
|
||||
}
|
||||
|
||||
const updateScrollEffects = () => {
|
||||
const scrollTop = window.scrollY;
|
||||
const scrollRange = Math.max(1, root.scrollHeight - window.innerHeight);
|
||||
const progress = Math.min(1, Math.max(0, scrollTop / scrollRange));
|
||||
|
||||
root.style.setProperty('--scroll-progress', progress.toFixed(4));
|
||||
header?.classList.toggle('is-scrolled', scrollTop > Math.max(90, window.innerHeight * 0.72));
|
||||
|
||||
if (!motionPaused && scrollTop < window.innerHeight * 1.15) {
|
||||
const heroProgress = Math.min(1, Math.max(0, scrollTop / window.innerHeight));
|
||||
cards.forEach((card, index) => {
|
||||
const direction = index % 2 === 0 ? -1 : 1;
|
||||
const distance = (14 + (index % 3) * 7) * heroProgress * direction;
|
||||
card.style.setProperty('--drift', `${distance.toFixed(2)}px`);
|
||||
});
|
||||
}
|
||||
|
||||
frameRequested = false;
|
||||
};
|
||||
|
||||
const requestScrollUpdate = () => {
|
||||
if (frameRequested) return;
|
||||
frameRequested = true;
|
||||
requestAnimationFrame(updateScrollEffects);
|
||||
};
|
||||
|
||||
const setMotionState = (paused) => {
|
||||
motionPaused = paused;
|
||||
body.classList.toggle('is-motion-paused', paused);
|
||||
motionToggle?.setAttribute('aria-pressed', String(paused));
|
||||
|
||||
if (motionToggle) {
|
||||
motionToggle.textContent = paused ? '恢复动态' : '暂停动态';
|
||||
}
|
||||
|
||||
if (paused) {
|
||||
cards.forEach((card) => card.style.setProperty('--drift', '0px'));
|
||||
showAll();
|
||||
} else {
|
||||
requestScrollUpdate();
|
||||
}
|
||||
};
|
||||
|
||||
const syncMusicState = () => {
|
||||
if (!musicToggle || !backgroundMusic) return;
|
||||
const isPlaying = !backgroundMusic.paused;
|
||||
musicToggle.setAttribute('aria-pressed', String(isPlaying));
|
||||
musicToggle.textContent = isPlaying ? '暂停音乐' : '播放音乐';
|
||||
};
|
||||
|
||||
const toggleMusic = async () => {
|
||||
if (!backgroundMusic || !musicToggle) return;
|
||||
|
||||
if (!backgroundMusic.paused) {
|
||||
backgroundMusic.pause();
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
await backgroundMusic.play();
|
||||
} catch {
|
||||
musicToggle.textContent = '音乐不可用';
|
||||
musicToggle.setAttribute('aria-pressed', 'false');
|
||||
}
|
||||
};
|
||||
|
||||
motionToggle?.addEventListener('click', () => setMotionState(!motionPaused));
|
||||
musicToggle?.addEventListener('click', toggleMusic);
|
||||
backgroundMusic?.addEventListener('play', syncMusicState);
|
||||
backgroundMusic?.addEventListener('pause', syncMusicState);
|
||||
backgroundMusic?.addEventListener('error', () => {
|
||||
if (musicToggle) musicToggle.textContent = '音乐不可用';
|
||||
});
|
||||
window.addEventListener('scroll', requestScrollUpdate, { passive: true });
|
||||
window.addEventListener('resize', requestScrollUpdate, { passive: true });
|
||||
window.addEventListener('resize', () => {
|
||||
window.clearTimeout(calligraphyResizeTimer);
|
||||
calligraphyResizeTimer = window.setTimeout(() => {
|
||||
if (Math.abs(window.innerWidth - calligraphyWidth) > 120) createCalligraphyField();
|
||||
}, 220);
|
||||
}, { passive: true });
|
||||
reduceMotion.addEventListener?.('change', (event) => setMotionState(event.matches));
|
||||
|
||||
requestAnimationFrame(() => {
|
||||
createCalligraphyField();
|
||||
if (backgroundMusic) backgroundMusic.volume = 0.28;
|
||||
syncMusicState();
|
||||
body.classList.add('is-ready');
|
||||
setMotionState(motionPaused);
|
||||
updateScrollEffects();
|
||||
});
|
||||
})();
|
||||