《飘渺之旅》算得上修真小说的开山之作,我一直挺喜欢。最近突发奇想:能不能让 AI 先把整本小说读完,再用 Three.js 把书里的世界观宇宙"架构"出来——不是画几张概念图,而是做成一个能在浏览器里拖拽、缩放、点击的 3D 宇宙。
于是有了这个项目:一个零依赖、纯静态、完全离线的单页应用,双击 index.html 就能打开。
第一步:先让 AI 把小说读完
原始文本是 5.8MB 的 txt,46,806 行,GB18030 编码,而且尾部拖了两段垃圾——一段第 14 集的残章,加一段第 15~24 集的逐字重复拷贝(约 12,000 行)。
第一件事就是把语料洗干净:
- 删掉全部垃圾,46,806 行 → 34,311 行,精确统计出 28 集 × 292 章
- 编码从 GB18030 转成 UTF-8,macOS 直接能打开
- 修了第 2 集标题里的
??乱码(“星星宫??寒冰原” → “星星宫·寒冰原”) - 修了 2 处 GB18030 私有区字符(“水流突然化作…"、“突然出现一个巨大的黑洞”)
干净的语料是一切的基础。后面 AI 写的所有世界观数据,都要能回到这份原文里查到出处。
第二步:逐条考据世界观
这一步是最好玩的。书里那些设定散落在 292 章里,我让 Codex 全文检索核对,不许自由发挥:
- 五层主界域:凡人界 → 修真界 → 仙界 → 原界 → 神界(书中正式叫法其实是"天神界”)
- 平行界与神秘地带:灵鬼界、黑魔界、佛宗,以及鑫波角、幻星神阵
- 修真界七颗星球:封缘星、天庭星、潜杰星、霖明星、坦邦星、幻树星、紫魂星
- 修炼体系:修真十一境(加散仙旁支)→ 仙界七级 → 修神九重天(九重 × 三境 = 27 境)
- 主角线:李强从第 1 集"误入天庭"一路到第 28 集"神罚之眼"
顺便考据出几个有意思的冷知识:神界在书里叫天神界,全书没有"大罗金仙、仙帝、神域"这些说法;傅山用紫炎心给李强筑基;赤明魔尊是李强师弟,两人同拜青帝;原界大约只有幻星神阵的十分之一;神之战魂来自紫魂星。
第三步:一个单文件的 3D 宇宙
最终交付物非常朴素:一个 index.html(946 行,HTML + CSS + 内联 JS)+ vendor/ 里两个本地文件(three.min.js r128 + OrbitControls.js)。没有构建步骤、没有 npm、没有 CDN,file:// 直接双击打开,断网也能玩。这是故意的——越简单的交付越长寿。
页面有三种视图模式:
- 宇宙总览:五层界域竖直堆叠,加上三个平行界、两处神秘地带、七颗星球,以及连接凡人界与修真界的"逆行通道"
- 修炼阶梯:修真十一境 → 仙界七级 → 修神九重天,27 个境界排成一条螺旋阶梯,像在爬一座无形的塔
- 主角旅程:李强 28 集剧情节点的紫色螺旋线,从误入天庭一路到神罚之眼
交互上就是常规三板斧:OrbitControls 拖动旋转、滚轮缩放、raycast 点击节点弹出详情面板。细节上花心思的是标签系统:所有标签都是 DOM 元素,每帧把 3D 坐标投影到屏幕坐标,还要做防重叠排版(固定组先放,可移动组最多重试 10 次下移)和 SVG 引导线,保证缩放之后不会糊成一团。另有侧栏 chip 跳转、自动旋转开关、920px / 640px 两档响应式断点。
验证:headless 跑一遍才算数
写完不是直接交付,而是用无头 Chrome + SwiftShader 软件 WebGL 实测了一轮:
- 0 个 JS 错误
- 三种模式切换正常
- 点击"元婴"标签 → 面板正确显示元婴期;点击"第 28 集" → 显示"神罚之眼"
- 侧栏 chip 跳转、自动旋转、700px 移动端视口全部正常
软件渲染下 13~18 FPS,真实 GPU 上应该满帧——这不是性能问题。
几点收获
- 动手前先定"事实底线"。中途有一次 review 误报章数应该是 296,其实是把垃圾残章的 4 个标题数进去了。定死"原文是唯一考据源、292 章是清洗后的精确数",AI 才不会在细节上自由发挥。
- 无构建交付很舒服。一个 HTML 文件加两个本地库,没有依赖链可以坏,拷到任何电脑都能开。
- vendor 文件要成对升级。three.js r128 和它的 OrbitControls 是配对关系,只换一半必然出问题;换版本必须全量回归三个视图。
- 清洗语料是最值的苦力活。5.8MB 的脏文本 → 34,311 行干净的 UTF-8,决定了后面所有 AI 工作的质量上限。
目前这个 3D 宇宙已经挂到博客上了,在线可以直接玩:飘渺之旅 · 世界观宇宙。整个项目以 Hugo 静态文件的形式原样托管,没有加任何依赖和构建步骤,双击本地 index.html 和在线打开是同一个版本。
这次自娱自乐的 AI 折腾算是闭环了——从读小说、考据、建模到上线,全程只花了一个周末的碎片时间。