场景图文记录 · 2026.08.30

THE WIZARD'S
LIBRARY

用截图记录一座 Blender 哥特大厅及其 Three.js 改编:烛光走道、木质回廊、天球仪与旋梯,以及大窗外那片冷光。

查看截图 截图与开发记录 · 不再提供试玩
烛光照亮的双层哥特图书馆、阅读长桌与大窗
01 — 从 Blender 到 Three.js

保留原本的大厅,
换一套实时渲染契约。

浏览器版本不是在相机周围包一张全景渲染图。项目所有者提供的 Blender 场景按材质合并导出为 27 个网格与 27 套材质,书册颜色通过顶点色保持稳定;烘焙后的 base color、AO、roughness、metallic 与 tangent normal 则把程序化表面带进实时资产。

hero、gallery、stair、entrance、desk 五个 Blender 镜头成为回归锚点,用于守住相机位置、焦距意图与曝光。空间阅读方式保持一致,浏览器再接管行走相机、碰撞边界、局部灯管理、WebAudio,以及可确定性复现的对照接口。

02 — 视觉方向

知识留在暖光里,
日光停在冷色那端。

整间大厅围绕一条哥特纵轴组织:一层是阅读长桌与散落纸张,两侧是书墙与尖拱石柱,上层接木质回廊;吊灯、蓝金挂毯、天球仪和旋梯负责打破重复。烛光把木材与黄铜收进暖色光池,大窗则刻意保留苍白、偏冷的出口感。

Three.js r170 通过 AgX 与 OutputPass 输出画面。PMREM 室内反射环境、雾、明亮窗外 portal、8 个常驻结构灯和近邻烛光池共同重译原本的光线,但不假装复刻 Cycles。存档版本采用 2048 静态太阳阴影和 12 个局部灯;诊断用高画质档会恢复此前对照路径使用的 4096 阴影、24 灯池、克制 Bloom 与 DPR 2。实时版没有多次反弹 GI、体积光柱,也没有 desk 镜头的 f/2.4 景深。

从图书馆入口沿中央走道前进后的控制验证画面
控制验证从暗色入口出发,先沿视线方向前进,再确认 A 向左、D 向右;默认压缩资产与首个完整帧后冻结阴影的策略始终保持启用。
03 — v36 修复帧路径与画布尺寸

像素很贵,
但问题不只在像素。

之前的硬件 A/B 证明 DPR 2 代价很高,但 M2 Max 的实测反馈说明 v34 还不够。与 Spaceship 做静态对比后,其余热点也清楚了:Library 有 193 万三角、316 万 vertex slots、跨越整间房的双面材质批次,以及更多实时点光。v35 因此让普通漫游从 0.85 内部比例、0× 场景 MSAA、12 个近邻局部灯、2048 静态阴影、关闭 Bloom 与标准深度起步,让密集书架重新利用 early-Z;低帧时继续降到 0.7 和 0.6,活动渲染最高 60 FPS,并在菜单、Esc 释放鼠标和后台标签页停止完整场景循环。v36 保留这套较低成本的 backing buffer,但将它与页面布局分开:canvas 永远铺满 iframe,容器观察器会在嵌入区域扩张时重新同步 renderer、composer 与相机。balanced、高画质、log depth 与原始贴图查询参数仍保留用于诊断。

  • DPR 2 进程树 PSS:2150.4 → 669.6 MiB
  • DPR 2 进程树 RSS:2428.7 → 939.8 MiB
  • DPR 2 原始贴图 → 1K/512 KTX2 的 Ready:10567 → 9597 ms
  • 历史 KTX2 帧率 A/B:DPR 1 / 4× MSAA 为 60.18 FPS;DPR 2 为 33.59 FPS
  • v35 正式档:0.85 → 0.7 → 0.6 / 0× MSAA / 12 个局部灯 / 2048 静态阴影 / 关闭 Bloom
  • 菜单待机、Esc 释放、后台标签与 BFCache 不再持续运行完整场景循环
  • WebGL context loss 会先停止 RAF,不再让 Three 对失效 precision 结果继续初始化
  • v36 视口:canvas CSS 铺满 iframe,ResizeObserver 跟随容器;自适应 DPR 只改变内部 buffer
  • DPR 2 阴影:静态 33.59 FPS;连续更新 30.19 FPS
  • 冻结的静态/连续阴影对照帧:AE=0、RMSE=0,记录到的运行错误为零

上面的 FPS 数字是用于定位 DPR 的既有硬件基线,不代表已经对 v36 或 M2 Max 做了新的浏览器实测。AE=0 / RMSE=0 比较的是同一 DPR 2 机位下,冻结静态阴影与连续更新阴影的截图;它不是 Three.js 对 Blender/Cycles 的比较,更不是像素等价声明。v36 在当前禁止浏览器的边界下通过了源码、mock、lint 与 build;画面和实时帧率仍待后续授权验证。

本页于 2026-08-31 对照项目所有者提供的 Blender 快照 fad615738a48,以及私有基线运行时 mike007jd/the-wizards-library-web 的提交 cb37d6a 核对。性能、WebGL 生命周期与视口尺寸策略随后直接应用到项目所有者的源快照,形成 web-v36;运行时主模块 0ef7125b3e80、质量策略模块 3c12fd67676c、context-health 模块 b6b30669204d 与 viewport 模块 53299e41da06 已记录在归档源码清单中。本页保留截图与开发记录,不再提供在线试玩。这段来源说明不会把项目源码描述成开源。实时版本是忠于来源的重译,不宣称与 Blender/Cycles 像素一致,并且面向桌面键盘与鼠标。