Opus 5.5 《桃花源记》3D 文学场景叙事导览提示词
本提示词由宝玉 (@dotey) 事后还原,将 Claude 设定为兼具文学理解力的场景艺术导演、叙事交互设计师和资深网页 3D 开发者,用 Three.js 实时渲染《桃花源记》全篇 28 幕文学场景。
提示词建立了一条统管文本、镜头、人物、昼夜、落花、风力与朗读音画同步的叙事时间线,支持自动巡游导览与自由漫游。
完整制作提示词
# 《桃源 · 豁然开朗》制作提示词
> 用法:把本文整份交给能建文件、能运行命令、最好能开浏览器截图的 AI 编程助手。朗读 MP3 和逐字时间戳 JSON 都是可选素材,有就一起放进项目目录,并在对话里告诉它文件名。
---
你是一位兼具文学理解力的场景艺术导演、叙事交互设计师和资深网页 3D 开发者。
请根据文末的【课文全文】和【场景描述】,做一个完成度高、能在浏览器里实时交互的 3D 文学场景网页。它既能自由漫游观景,也能“循文入境”:读者跟着原文的顺序、人物的行动和视线的变化,完整经历整篇文章,而不是只看几个景点或读几张说明卡片。
用 three.js 实时渲染。交付可以实际打开的网页成品,不要只给方案、伪代码、零散组件或效果描述。不要生成图片,也不要用照片、全景图、视频或视差背景冒充 3D。非关键的设计细节自己做出一致的选择,不必逐项找我确认。
优先级依次是:
1. 原文含义与空间关系、全文体验完整;
2. 叙事与镜头连续;
3. 默认画面的构图与光照;
4. 关键景物的细节;
5. 附加功能。
功能要服务于作品。不要做成按钮很多、场景粗糙的技术演示。
## 一、先理解文章,再建造世界
以我提供的全文为原文依据。不要只凭标题、摘要或熟悉的名句来做,也不要把自己补写的文字当作原文。
先在内部梳理文章的时间顺序、空间顺序、人物、活动、情绪变化,以及明确写出的数量、位置和因果。再建立“原文句段—叙事幕—场景位置—镜头路径—人物或环境变化”的对应关系,用它来组织实现。不必先停下来交一份设计方案。
原文顺序和内容要完整保留。开头、转折、离开、结局与后记,不能因为不够好看就省掉。原文写明的内容必须忠实;没交代的细节可以克制地推演,但时代、地域、建筑、衣着、工具和植物要彼此一致。不要混搭不相关的文化符号,也不要宣称是某个真实地点的精确复原。
## 二、建立一个真实存在、可以理解的三维空间
先设计地形、水系、道路、建筑尺度和人物动线,再布置景物。
- **远景不能断**:室外场景从前景、中景自然延伸到远景,不能是悬浮岛、盆景、带底座的沙盘,也不能是突然结束的地板。
- **原文里相邻、可行走的区域必须真的连通**:山洞、洞口、小路、渔舟都要有真实几何和合理尺度。要经过的通道必须存在,不能用黑屏、穿墙或传送掩盖缺失的空间。
- **可以明确切镜的情形**:跨越很远地点或很长时间的内容(如“及郡下”“南阳刘子骥”),可以用明确的叙事切镜,加简短文字交代时空变化。
- **各部分落在实处**:
- 水体嵌进地形,岸线顺着地形自然过渡;
- 道路坡度合理;
- 人物和动物的脚落在地面上;
- 远景靠真实地形和空气透视延续,不要用浓雾掩盖空场景。
- **固定种子**:整个世界的地形、树、花、房屋、人物、动物、船都用代码程序化生成,并使用固定随机种子,每次打开完全相同。
## 三、把“循文入境”做成核心体验
打开网页先是可以自由走动的场景(见【场景描述】里的“默认画面”),并有醒目的「循文入境」入口。开始后从文章开头一直推进到篇末,不要让用户先去找菜单,也不要只演示最有名的几句。
**一条叙事时间线统管一切**:原文显示、镜头、人物动作、船、昼夜、落花、风、曝光、朗读都由它驱动,可以暂停、回看和跳转。每一幕都要能回答四个问题:此时读到哪里、人在何处、正在看什么、发生了什么。
**状态由位置复原**:画面状态只由“第几幕、幕内进度”决定。顺序播到某处和直接跳到该处,画面与人物状态必须完全相同:不重复生成道具,也不残留后面的人物。
**镜头**:镜头要体现文章的观看方式和情绪。
- 远望时看见层次;
- 行进时有遮挡与引导;
- 接近物体时看见细节;
- 转折处有空间揭示;
- 交谈时保留人物关系;
- 结尾给意境留出停顿。
避免全程高空俯瞰、匀速绕圈、突然转向和大幅摇晃。步行段落用合理的眼高,贴地但不穿地;路线避开山石、墙壁、屋顶和树干。
**幕间衔接**:
- 相邻两幕镜头能接上时,用约 2.4 秒平滑混合位置、朝向和视角,昼夜再用约 2.6 秒过渡;
- 距离很远或手动跳到不相邻的幕时,先淡入宣纸色,再在纸色后切到新机位;
- 字卡幕(郡下、子骥、终)本身就是纸色,由它盖住跳转。
**两种节奏**:
- 「连贯体验」:自动推进。每幕时长由朗读时间决定,没有录音时按文字和动作的需要安排,各幕时长不同。
- 「逐章慢读」:每幕在这一句读完后停住,等用户点「继续」。停着时环境照常有生气,剧情不自行往下走。
**导览中的操作**:
- 播放器是底部一条半透明宣纸色长条:
- 左边写「04 / 28 落英」这样的幕号和幕名,以及「00:27 / 04:07」这样的时钟;
- 中间是带各幕刻度的细进度条,拖柄是印章红;
- 按钮依次为:上一幕、深松绿色的圆形播放/暂停、下一幕,以及「目录」「朗读·开」「⋯」「退出」。
可以暂停和继续、换幕、拖动进度条跳转、打开章节目录、退出导览。
- 拖动只是原地转头环顾(左右约 ±35°、上下约 ±20°),不会退出导览。滚轮或双指可小幅缩放。
- 松手约 3.5 秒后,若正在播放,镜头自动回正;偏离时也可以手动点「回正」。
**朗读对齐**:
- 有朗读时,故事时钟以录音的播放时间为准,镜头节奏贴合实际朗读。
- 录音缓冲时故事停住等待;等超过 8 秒就放弃朗读,改为静音继续,并提示一次。
- 浏览器拦下自动播放时,先静音推进;用户第一次点击或按键后,朗读从当前故事时间接入。
## 四、让原文陪伴体验,而不是盖住体验
**字幕**:导览时在画面左侧放一张半透明宣纸色竖排小卡。
- 大字是本幕原文,小字是简短白话;
- 按录音时间逐分句点亮正在读的句子,没有朗读时也照时间表点亮;
- 设置里可切换「原文+白话」「只看原文」「只看白话」;
- 夜里的幕改为深色纸。
**释义**:少量难词带下划线(如“落英缤纷”“豁然开朗”“阡陌”“黄发垂髫”“问津”),点开是一张小释义卡。
**景物卡**:单击渔舟、村口大树、屋舍,或溪、桃林、田、池、阡陌、洞口,弹出一张卡片,写景物名、对应原文句和一段白话说明。
**章节目录**:列出全部 28 幕的幕名和原文,可以点击跳转。每一段原文都有能到达的画面。
说明性的界面默认收起,不要满屏浮动的卡片和标注。
**界面配色**只用四种颜色,面板一律是半透明宣纸底加细边和轻微模糊:
- 宣纸 #f3ecdf;
- 墨 #2a2622(正文);
- 印章红 #a8322b(点缀、当前项、进度);
- 松绿 #3f5748(主按钮)。
压在亮画面上的文字必须清楚:用深墨色,放在足够不透明的纸底上,不要用浅灰细字。
手机竖屏时:
- 题签留在右上;
- 当前景致卡、按钮行、场景条从上到下叠在底部,场景条可以横向滑动;
- 字幕卡仍然竖排贴左,缩小一些;
- 播放器占满底部宽度。
「朗读·开」开着时是松绿底的胶囊按钮。
## 五、让重要景物经得起近看,让关键段落真正动人
**风格**:现代精细体素与柔和风格化 3D,带中国山水长卷的疏密、留白和远近层次。体素是细小的几何面,不是粗大积木,也不是低分辨率像素滤镜。
**光与色**:
- 光线有方向,阴影柔和,色彩有主次;
- 用 Neutral 色调映射,粉色不偏洋红,高光不发白溢出;
- 不要用单一色罩把所有物体染成同一种颜色。
**细节分配**:把细节集中给最重要的景物:桃花、落花、溪水。近景经得起停下来靠近看,远景有层次,不要平均分配模型。
- 人物是简洁的方盒风格小人,靠衣着轮廓、发色、斗笠、蓑衣、手中农具和不同的动作来区分;
- 动物只有水牛、狗、鸡三种。
**关键段落**:桃林、落花与水流的具体要求写在【特别强调】里,必须做到。
## 六、操作、工程与运行要求
**信步游览**(不在导览时):
- 鼠标拖动环顾,滚轮前进后退,双击地面走过去(落点处出现一个淡色圆环),Ctrl+滚轮或双指捏合缩放视角,单击景物看景物卡。
- 键盘:W A S D 或方向键行走,Shift 快走,E/空格升高,Q/C 降低,R 回到桃林。数字键 1~9、0 切换十处景致。
- 行走贴着地面,眼高约 1.6 米。在溪里贴着水面走,在山洞里贴着洞底、限制在两壁之间。
- 树干、岸石、房屋、渔舟会挡路。环绕盆地的群山只供远看,不能爬。
**全局按键**:
- Esc 依次关闭释义、面板、卡片,再按退出导览;
- T 目录,V 朗读开关,H 隐藏界面,Enter 开始循文入境;
- 导览中空格暂停、左右方向键换幕、R 回正。
触屏手势与鼠标统一处理。
**「⋯」设置面板**:
- 节奏(连贯体验/逐章慢读);
- 字幕(三种);
- 朗读(开/关,默认开,没有录音时这一项和播放器上的朗读按钮都隐藏);
- 环境声(默认关;用 WebAudio 合成溪水、风和偶尔的鸟鸣,离水越近水声越大,洞里只有滴水);
- 画质(高画质/轻量,手机默认轻量);
- 动态(播放/暂停);
- 保存画面(PNG,不含界面文字);
- 操作说明。
选项记在 localStorage 里;取不到时不报错。
**工程**:
- three.js r186 加 Vite,纯前端,没有后端,不添加其他 npm 依赖。
- 代码按职责分开:课文与分幕数据、场景各部分、叙事导演、镜头、漫游、声音、界面。
- 剧情不能靠散落的计时器驱动。
**性能**:
- 大量使用实例化和合并几何:全村的房子一个 draw call,人物每个部件一个 InstancedMesh。
- 远近细节分级。
- 分区剔除:在洞外时隐藏盆地里的全部东西,在洞内时隐藏溪边的全部东西。
- 阴影每帧只更新一次,阴影相机跟着镜头前方走。
- 自适应像素比。
- 尊重“减少动态效果”:落花和阵风减弱,界面过渡改为即时。
**加载与出错**:
- 加载画面是宣纸色底,中间一个印章红细圆环显示进度,下面一行原文短句。
- 没有 WebGL 2 或资源加载失败时,给出中文说明和「重新加载」按钮。
**调试入口**:
- `?ch=N` 从第 N 幕(0 起)开始导览;
- `?shot=forest|creek|panorama|overview` 放到固定观景机位;
- `?motion=reduce` 模拟减少动态;
- `window.__t` 暴露场景、镜头、导演等对象,方便测试。
## 七、做完后自行验收,再交付
在真实浏览器里运行并截图检查,不要只做语法检查。至少检查:
- 默认画面;
- 逢林、落英、极狭、开朗、作食、停数日、遂迷、终这几幕;
- 跳转后的剧情状态;
- 人物活动;
- 暂停与回看;
- 手机布局;
- 没有录音时的回退。
重点查找以下问题:
- 全文有没有遗漏;
- 镜头是否穿模、是否让人眩晕;
- 朗读与画面是否错位;
- 植物与季节是否冲突;
- 水与岸、路是否相交出错;
- 是否有闪烁、过曝、阴影条纹、错误遮挡;
- 桃花近看是否粗糙;
- 村子上空有没有残留的花瓣。
发现明显问题先修好。没做的测试要如实说明。
交付:可以运行的项目(`npm install`、`npm run dev`、`npm run build`)、几张真实渲染截图,以及一段简短说明,讲清入口、主要操作和测试限制。
==================== 以下为本次输入 ====================
## 【作品名称】
《桃源 · 豁然开朗》
- 页面标题:`桃源 · 豁然开朗`
- 页面描述:`《桃花源记》实时三维长卷:缘溪行、忽逢桃花林、舍船入山、豁然开朗。`
- 语言:zh-CN
- 界面全部用中文楷体(Kaiti SC、STKaiti、KaiTi 等,后备宋体)。
## 【课文信息】
- 篇名:桃花源记
- 作者:陶渊明(东晋)
## 【课文全文】
> 晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。
>
> 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。
>
> 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”
>
> 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。
>
> 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
## 【场景描述】
这是一片藏在群山之中的完整田园世界。默认氛围是春日清晨,薄雾刚散,光线清晰柔和。
### 空间与布局
整个世界沿一条南北轴线展开:南边是洞外的溪谷,北边是山里的盆地,中间隔着一道山崖,由一条山洞相连。
**1. 洞外溪谷**
- 一条清溪从山崖脚下的泉眼流出,向南蜿蜒约一公里,越往下游越宽(泉眼处约 5 米,下游约 18 米)。
- 中段有一个大弯,弯道处有几座小丘挡住视线,船要转过弯才看见桃林。
- 两岸先是低矮草岸,往外起伏升入丘陵,再远是高山。
- 坡上是成片的山林团块,下游岸边有柳、榆、槐成团。
**2. 桃林**
- 桃林只长在靠近泉眼的一段溪岸上,长约三百米,沿两岸、离水边三十多米以内成带。这就是“夹岸数百步”。
- 桃林带里一棵别的树都没有(“中无杂树”)。
- 溪道本身不种树:顺溪望去,中间是开阔的水面和天空,两岸花冠向水面合拢,形成一条花的甬道。
**3. 山口**
- 桃林尽头是一道约 30 米高的岩壁,只在洞口上方陡峭,向两侧缓缓降入溪谷丘陵。
- 泉眼和一个只容一人的小洞口都在岩壁脚下,洞里隐约透光。
- 渔舟停在洞口外的水边,系在岸上的木桩上。船不能驶进山里。
**4. 山洞**
- 一条真实可走的体素岩石通道,全长约 85 米,一路缓缓上升 7 米。
- 洞宽先从 1.3 米收窄到 0.6 米(“初极狭,才通人”),在出口前约 10 米才放宽到 2.5~3.8 米。
- 洞中幽暗,越近出口越亮。
**5. 盆地**
- 一个被群山围合的椭圆盆地,东西约 500 米、南北约 430 米,底面平旷。
- 山脚线有山嘴和山坳,不像火山口壁;北侧(村后)的山较低,作为长卷的中景。
- 北洞口外有一块小平台,一条小路从那里盘下约 15 米,进入田里。
- 盆地里有:
- **良田**:南半部是棋盘状的田区,由南北向、东西向的阡陌分成格子,每格再分成一到三块。田块类型只有春景:
- 灌水的水田(倒映天空);
- 正在插秧的秧田;
- 青绿的麦苗;
- 新翻的深色土;
- 村旁的菜畦。
有的田耕了一半,有的秧插了一半。
- **美池**:田区西北有一口池塘,边缘自然起伏,池边有柳和芦苇。三条水渠:一条从北山流进池塘,一条横贯田区,一条从池塘往南。
- **村落**:在田区北面、池塘东边。22 户人家分四排,整片略向东南偏转。
- 房屋是黄土夯墙、木构正面、檐廊,多为茅草顶,少数灰瓦顶;
- 各户有院子、竹篱、柴门、厢房,有的厢房是冒烟的灶屋;
- 另有巷道、两口井、几个草垛和柴堆;
- 全村共 8 根烟囱,其中 6 根冒着淡淡的炊烟。
- **桑竹**:村旁有桑园和竹林,屋后有榆树。
- **村口大树**:一棵老槐,树下是老人闲坐的地方;旁边有一片春天空着的打谷场。
- **山坡**:环山上是成片的山林团块,一层层退向远山。
### 默认画面(打开网页时)
站在桃花林中段的溪上,眼高贴近水面,面向上游。两岸花树向水面合拢,远处是山崖和群山,落花零星飘过,溪水倒映着花树和天空。这是一个可以立即走动的场景。
右上角有竖排题签:「桃源 · 豁然开朗」,旁边是「陶渊明〔东晋〕《桃花源记》」。
底部是十处景致的场景条(带编号的小卡片),上方一行显示当前景致的原文。场景条旁有一行操作提示,右侧是「目录」「朗读」「⋯」和一个深松绿色的「循文入境 →」大按钮。
十处景致依次是:缘溪行、桃花林、山有小口、初极狭、豁然开朗、阡陌交通、屋舍俨然、黄发垂髫、美池桑竹、来此绝境(高空俯瞰整个盆地)。切换时用宣纸色淡出淡入。
### 「豁然开朗」全景
从北洞口内侧、略有高度的斜向视角看见田园全景:
- 前景:岩石和一枝松枝框景,一条小径通向村落;
- 中景:平旷的春日田地、池塘、水渠和错落屋舍,是画面重心;
- 远景:逐渐过渡为桑竹、坡地和山林。
不要为了展示所有区域而把山体劈开。
### 人物与生活
全村约一百人:
- 田里插秧、除草、锄地、扶犁;
- 阡陌与巷中有人来往,池边浣衣,井边汲水;
- 大树下老人闲坐,孩子嬉戏;
- 一位老者在屋前弯腰扫地。
另有几位只在某一幕出现的“章节角色”,例如主人一家、围在门口的邻人、送别的村人。
- 衣色只用本色麻布、靛蓝、灰褐、土黄、草绿等素色,没有红衣。
- 老人一律灰发或黄发(“黄发”),孩子不梳发髻(“垂髫”)。
- 人物动作各不相同,不要整齐排列,也不要同时挥手。
- 动物:水牛 3 头(有的在田里拉犁),狗 6 只,鸡 20 多只。鸡冠是全场唯一的红色。
- 入夜后,田间和巷里的村民都回家了,只有狗还在外面。
**渔人与渔舟**:
- 渔舟是一叶窄长木船,带竹篾拱篷。
- 渔人戴斗笠、披蓑衣,站在船尾撑篙,撑篙有节奏,船速快时撑得也快。
- 船在水面上轻轻起伏摇摆。
- 泊岸时用绳子系在岸上的木桩上。
- 回程时船头调转,顺流而下;寻找桃源时船上是太守派来的两个人。
### 分幕(共 28 幕)
按下表分幕,保留全部原文。幕名用于播放器和目录。镜头写法只是方向,你可以在同样的意图下自行设计具体路线。
| # | 幕名 | 原文 | 时辰 | 画面与镜头 |
|---|---|---|---|---|
| 0 | 捕鱼 | 晋太元中,武陵人捕鱼为业。 | 清晨 | 从下游高处远望整条溪谷和远山,小小的渔船撑篙上行 |
| 1 | 缘溪 | 缘溪行,忘路之远近。 | 清晨,溪上薄雾 | 弯道处,镜头由低向高后退,船在前方上行,一路还没有桃花 |
| 2 | 逢林 | 忽逢桃花林,夹岸数百步, | 清晨,雾更浓 | 贴水跟在船后,船滑进第一批桃树冠下;一阵风吹过,花雨较大 |
| 3 | 落英 | 中无杂树,芳草鲜美,落英缤纷。 | 清晨 | 走到东岸桃树间,脚下是落花和芳草,溪水在林外闪光;两阵风,花雨最盛 |
| 4 | 穷林 | 渔人甚异之,复前行,欲穷其林。 | 清晨 | 船在林中继续上行,想走到林子尽头;一阵风 |
| 5 | 得山 | 林尽水源,便得一山, | 清晨 | 林尽,泉眼与山崖出现在前方 |
| 6 | 小口 | 山有小口,仿佛若有光。 | 清晨 | 推近崖脚的小口,洞里透出一点光 |
| 7 | 舍船 | 便舍船,从口入。 | 清晨 | 船已系在岸边,渔人下船走进洞口;曝光逐渐打开 |
| 8 | 极狭 | 初极狭,才通人。 | 洞中 | 洞中第一人称,两壁紧贴,只剩零星花瓣 |
| 9 | 开朗 | 复行数十步,豁然开朗。 | 洞中→清晨 | 以暗色浸入;最后十几步走向光亮,在约三分之一处豁然开朗,强光散去后慢慢落定到全景 |
| 10 | 平旷 | 土地平旷,屋舍俨然, | 清晨 | 配乐间奏中,从洞口松树一侧升起,飞越田野,到达村子上空 |
| 11 | 良田 | 有良田、美池、桑竹之属。 | 清晨 | 良田、美池与桑竹 |
| 12 | 阡陌 | 阡陌交通,鸡犬相闻。 | 清晨 | 阡陌交错,狗跑鸡啄 |
| 13 | 种作 | 其中往来种作,男女衣着,悉如外人。 | 清晨 | 田间往来劳作的人,插秧、扶犁 |
| 14 | 怡然 | 黄发垂髫,并怡然自乐。 | 清晨 | 村口大树下闲坐的老人和嬉戏的孩子 |
| 15 | 问讯 | 见渔人,乃大惊,问所从来。具答之。 | 清晨 | 村人见到渔人,大吃一惊,围上来问 |
| 16 | 作食 | 便要还家,设酒杀鸡作食。 | 清晨→正午 | 穿过前排屋子间的空隙,越过主人家篱笆,看院中摆好的桌子和冒烟的灶屋 |
| 17 | 咸来 | 村中闻有此人,咸来问讯。 | 正午 | 沿巷道走到主人家院门,邻人聚在门口 |
| 18 | 避秦 | 自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。 | 正午 | 在盆地中央缓缓转身,四面群山合围 |
| 19 | 叹惋 | 问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。 | 正午→黄昏 | 在院中面向前廊,众人坐着听渔人讲 |
| 20 | 停数日 | 余人各复延至其家,皆出酒食。停数日, | 黄昏→夜→黎明→正午→黄昏→夜→黎明→清晨 | 数日轮转,昼夜在一幕里走两遍;夜里有星空,村民回家 |
| 21 | 勿道 | 辞去。此中人语云:“不足为外人道也。” | 清晨 | 村人送别,嘱咐“不足为外人道也” |
| 22 | 志之 | 既出,得其船,便扶向路,处处志之。 | 清晨 | 出洞时强光散去,他已在船边:解开船尾绳,把船头拨离岸,顺流而下;沿途溪岸一处处出现记号 |
| 23 | 郡下 | 及郡下,诣太守,说如此。 | 阴天 | 宣纸色字卡 |
| 24 | 遂迷 | 太守即遣人随其往,寻向所志,遂迷,不复得路。 | 阴天,雾 | 雾中跟着船(船上两人),镜头左右寻望;记号已经不见了 |
| 25 | 子骥 | 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。 | 清晨 | 宣纸色字卡 |
| 26 | 问津 | 后遂无问津者。 | 清晨 | 空溪与桃林,没有船;镜头缓缓升起,一阵风吹落花 |
| 27 | 终 | (无) | 延续 | 结尾字卡「桃花源记 / 陶渊明」,停住后出现「全文完」和「回到桃林」「重新开始」 |
补充:
- **昼夜预设**:清晨、正午、黄昏、夜、黎明、阴天。每种同时改变天空、太阳方向与颜色、环境光、雾和曝光;幕内昼夜变化要平滑。
- **路标(“处处志之”)**:渔人沿溪在几处转弯的岸边留下记号:一堆叠石,旁边一根木桩,桩头缠一把草结,挂一条本色布条。记号只在“志之”一幕出现,到“遂迷”一幕就消失。
- **结尾**:点「回到桃林」后,淡入纸色,回到默认的桃花林,昼夜在 3 秒内回到清晨,船重新泊好。
### 朗读与逐字时间(可选素材)
**若提供了朗读 MP3**(李立宏朗诵,原长约 288 秒):
- 开头 40 秒是配乐,剪掉,再加 2.2 秒淡入,得到约 248 秒的工作音频。
- 转成 m4a(96 kbps)放进项目,由导览播放,朗读默认开。
- 另外三处长配乐间奏,画面要留足停顿:
- “豁然开朗”之后,画面停留,然后飞越盆地;
- “志之”一幕之前;
- 结尾字卡之前。
**若同时提供了逐字时间戳 JSON**(格式为 `cues[{start, end, text, words[{start, end, text}]}]`,时间以原 MP3 为准):
- 写一个小脚本,把 JSON 转成一份时间表:每幕的开始时间、这一句朗读的起止时间、逐字的起止时间。
- 第 0 幕从 0 秒开始。其余每幕在首字前约 1 秒开始,但不早于上一句结束后 0.25 秒。
- 三个间奏幕例外,直接从间奏开始处开始,让画面在配乐里展开。按原 MP3 的时间:
- 平旷从 116.0 秒开始,飞越盆地;
- 志之从 234.5 秒开始,出洞上船;
- 终从 284.4 秒开始,显示结尾字卡。
- 字幕按这份时间表逐分句点亮。
- 朗读者读法与原文不同的字,借用相邻字的时间。
**若只有 MP3、没有 JSON**:自己估出每幕的开始时间和分句时间,写死在时间表里(可以用静音检测辅助),效果与上面相同。
**若都没有**:
- 朗读功能整体隐藏;
- 用同一套时间表静音播放,每幕时长按文字长短和画面动作安排,全篇约 4 分钟;
- 字幕照常按时间点亮。
### 可选外部素材
溪岸的苔石、蕨类和溪底卵石可以用 Poly Haven 的 CC0 素材(rock_moss_set_02、fern_02、ganges_river_pebbles),在 `assets-src/LICENSES.md` 里记下来源。拿不到时用程序化的石块和卵石纹理代替。人物一律程序化生成,不使用来路不明的模型。
## 【特别强调与禁止项】
**重点打磨“忽逢桃花林,夹岸数百步”和“芳草鲜美,落英缤纷”,以及溪水。这三样是整部作品的看点。**
### 桃树
- **树形**:每一棵都是老桃树的样子。
- 主干短而斜,在很低处散开成 3~5 根向上拱起的骨干枝,树冠呈“开心形”;
- 枝条扭曲,粗枝上有少量残桩;
- 最外层是大量细长的一年生新枝。
树枝用递归分枝生长出来(主干、骨干枝、侧枝、结果枝、一年生梢,共五级),子枝按黄金角加抖动绕枝分布。大树有的是两三根干。树皮是深褐色,有纵裂纹和灰色风化斑。
- **花**:花苞和花朵沿新枝一节一节排列,近看是“枝上开花”。
- 花苞、半开、盛开三种开度,越近梢头花苞越多;少数梢头长两三片嫩叶。
- 每一棵的色调深浅不同,一片林子里白粉与深粉交错。
- **花的画法**:所有花的元素都用 canvas 逐笔画出,不用外部图片。
- 花瓣上半圆润、下半收成细爪,顶端一个小凹口,从爪部的深粉渐变到边缘的近白,带细脉;
- 花蕊是浅粉花丝,花药暗红、橙或淡黄;
- 萼片褐红。
- **近处**(十几米内):画真正的三维花朵,每朵 5 片花瓣、花蕊和萼片,按开度从合拢到外翻张开。
- **远处**:用十字交叉的“带花枝段”卡片组成树冠。卡片用树冠壳的法线和遮蔽来着色,让整个树冠像一团有体积、有明暗的花云,轮廓不规则、有透空,能透过花隙看见枝和天。远近两种表现之间用抖动渐变无缝交接,看不出跳变。
- **光**:花瓣是薄的、透光的。逆光看桃林时整树发亮透粉,这是清晨的主要美感。阴影里的花也要干净,不发灰发脏。
- **布局**:
- 岸边两排大树,离水边约 2~10 米,靠水的树向水面倾斜,树冠探到水上;
- 后排越往外越小越稀,全林约 400 棵;
- 桃树只在洞外这段溪岸。盆地里、山坡上一棵桃树也没有。
- **不能**用几个粉色球体、大量粉色方块或粒子贴图来代替桃花。
### 风
全场只有一个风场:一个缓慢起伏的基础风,加上一道沿风向推进的“阵风前沿”(在镜头上风处出发,约 10 米每秒扫过画面)。
桃枝(梢头摆得多,主干几乎不动)、草、野花、杂树的叶子、所有花瓣,都用同一个风场。阵风前沿扫过时,枝梢、草和落花依次朝同一个方向倒,然后归于零星,这就是“落英缤纷”的节奏。
空闲时每 15~30 秒来一阵风;逢林、落英、穷林、问津几幕在固定时刻各吹一两阵。
### 落花
落花要有纵深、有节奏,分层来做,每层管一个距离和一种节奏:
1. **树冠飘落**:花从具体的某棵树上落下。花瓣是否离枝,由它离枝那一刻那里的风决定,所以阵风扫过时花成批被吹落,平时只零星飘落。飘落时顺着沿途的风漂移、翻转,落地即消失。
2. **远中景细雨**:跟随镜头的大范围循环空间里的细碎飘落,只在桃林带里有。
3. **局部花雨**(“桃花满天飞”):数量多,强度由剧情控制。强度小时是更稀,而不是更小。
4. **近眼旋落**:偶尔(不是一直)有一两片花瓣慢慢螺旋着掠过镜头,像叶子一样左右摆翻。
5. **水面落花**:溪面上随水漂流的花瓣,近岸多、中流快,出了桃林渐稀;另有成片漂流的“花筏”。
6. **地上积花**:树下疏密不均的花堆,偏向下风;岸边沿真实水线的一条条粉色水冲线;走近时脚下有成团的单片花瓣,阵风时一部分被吹动;林下地面本身也泛着粉色,远看不见贴片边界。
其他要求:
- **花瓣造型**:杯状的小曲面,用手绘花瓣贴图;远处适当放大,避免闪烁;逆光时同样透光。
- **反射**:花瓣、草、近景花朵不进水面倒影。
- **分区**:花瓣只出现在桃林带里、水面以上。进入幽暗狭道后逐渐减少到没有;出洞后村子上空一片花瓣也没有。
- **强度由剧情驱动**:逢林较大,落英最大,穷林与问津次之,极狭只剩少量,开朗为零。信步游览时,在桃林一带低处也有中等强度的花雨。
- **不能**做成满屏均匀的粉点、全屏撒彩纸,也不能有任何金色光点。
### 溪水
- **岸线**:溪面是一条沿溪中线的带状网格,伸进岸下,按水深渐显。岸线是一条柔和的、真实跟随地形的水线,没有网格硬边。
- **流动**:三层不同尺度的波纹,以不同速度向下游流动。
- 中流快、岸边慢,泉眼附近几乎静止;
- 远处波纹减弱,水面平静如镜。
- 不要做成一张滚动的法线贴图。
- **清澈见底**:
- 俯看近处,能清楚看见水下的卵石河床,带一层青碧色,越深越青;
- 水线以上一窄条卵石是湿的深色;
- 平视远处,渐渐变成倒映着两岸桃花、山和天空的镜面;
- 迎着太阳有一道细碎的高光。
- **平面反射**:实时渲染倒影,倒影随波纹轻轻晃动。盆地的池塘、水渠、水田也有倒影,颜色比溪水更绿、更浑。
- **溪上薄雾**:缘溪、逢林、落英、穷林几幕的水面上浮一层低矮的薄纱,清晨的雾就是它。
- **岸边**:低矮的草岸、卵石滩、少量苔石和蕨,还有沿水线的落花。
### 芳草
- 草是跟着镜头走的实例化三维草丛,随风摆动,不是贴图。
- 路上、田里、房下、水里没有草;桃树下的草更短更稀,好让落花盖在上面。
- 溪岸草中点缀少量野花。
- 盆地的草是另一种更家常的绿。
### 禁止项
- 鸟居、日式石灯笼、神社、巨大佛塔、悬浮山、发光仙宫、遍地红灯笼、商业古镇式装饰。
- 任何金色的东西:金色光点、金色稻田。盛开的桃花不能与满地金黄的秋稻同时出现,盆地里只有春天的田。
- 红色衣服。
- 盆地里的桃树;桃林带里的杂树。
- 用浓雾掩盖空场景;用粉色粒子覆盖整个村落。