SuperAPI AI 工具集

build-threejs-scroll-worlds

通用与其它

查看项目

更新于 10-15 21:09

技能介绍

用途:构建「滚动即导演」的实时 Three.js 体验——保持单一持久的 WebGL 世界,用原生 document scroll 作为确定性控制器,让相机构图、灯光、雾、动画、文案与交互焦点依次经过若干编排章节,而不是把页面切成堆叠区块。需要物体保持真实空间感与可交互性、且在同一实时世界中跨多个构图移动时使用本技能;纯单场景交互用 threejs,视频/图片序列用 scroll-scrubbed-visual-sequence,DOM 优先用 cinematic-scroll-storytelling。

主要能力与做法:先读 references/world-bible.md、realtime-architecture.md、quality-and-qa.md;需要可移植的原生滚动控制器时复制 references/scroll-conductor.js。先明确用途、受众、故事节拍、美术方向、设备与预算,再写世界圣经(尺度、轮廓语言、配色、材质族、灯光角色、雾与后处理、运动语法),然后以数据形式写 4–8 章的章节账本(相机位置/target/FOV/移动端覆盖、灯光、雾、粒子、交互目标、资源依赖)。建立一个持久空间架构(worldRoot 下 environment/architecture/chapterSets/interactives/atmosphere/nearPlane3D,DOM 语义章节在 canvas 之上),只用一个渲染器一个场景。拓扑可选连续地理、连接集合或分层揭示;不可避免的跳变用遮挡、黑暗、浓雾或前景过渡隐藏。细节上先大轮廓再中形再小点缀,使用模块化套件、实例化、合并静态网格与 LOD;PBR 表面层(base color / normal / roughness / AO / metalness / emissive / alpha)按角色使用,颜色贴图 sRGB,数据贴图线性,善用 KTX2/Basis、Meshopt/Draco、图集与烘焙。灯光从单一主方向加克制环境光和自发光实用光源起步,雾用于区分深度而非单纯压暗。滚动映射上,稳定锚点测量后把 scrollY 转成分数章节值,区分精确进度(导航、URL、无障碍、交互门控)与平滑进度(仅用于相机与视觉插值),同一滚动位置须可复现。相机按电影摄影编排,存位置、target、FOV、可选 roll 与响应式覆盖,用 Catmull–Rom 做连续移动、分段插值做转向,检查穿墙、地面裁切、目标翻转与速度突变,用 scrollWeight 给重要视图停留时间,指针视差需 clamp 并在精确过渡附近淡出。世界状态与相机共用同一控制器,逐帧解析相邻章节并插值。交互由指针/触摸/键盘负责局部响应,用命名代理网格做 raycast,定义 idle/hover/focused/active/unavailable 状态,按精确章节可见性门控,每个热点在 DOM 有对应按钮/链接并同步焦点状态,触摸命中区至少 44 CSS px。进度加载:先完成第一帧,再预取后续一到两章;WebGL 失败时保留海报与语义 DOM。

性能预算(起始参考,需在目标设备实测):移动端 DPR 1.25–1.5、可见三角形 15 万–30 万、draw call 50–90、投影灯 1–2、首屏传输 3–6 MB;桌面 DPR 1.5–2、三角形 50 万–120 万、draw call 90–160、投影灯 2–4、首屏 5–10 MB;帧时理想 ≤16.7 ms。停顿后 dt 上限约 1/30 秒,页面隐藏时暂停,用质量调节器先降 DPR 与可选效果,卸载时释放几何、材质、纹理、观察器、事件、动画混合器与 RAF。

限制与无障碍:必须保留原生可逆滚动,不劫持滚轮或强制自定义滚动条;减少动效时相机/状态吸附到最近已编排章节,停止环境循环与错峰/模糊,保留完整有序 DOM 故事;保持标题层级、地标、链接、表单控件、可见焦点与可达页脚;文案背后世界变化时维持对比度(用局部遮罩而非全屏不透明覆盖);不要在开放空间让物体可见瞬移,不要用一个渲染器每章重建世界,不要用视频伪装 Three.js。

资源与主题:公开的 oso95/scroll-world 项目(commit 71cc36d)可作为接入、场景账本、预算门控、移动端构图、配置驱动播放与接缝 QA 的参考,但其渲染器是预生成视频链,本技能采用其结构优点但保留真实几何、材质、灯光、raycast 与相机控制。Kage 演示证明质量基准,但属展示而非强制主题或布局。具体实现代码、安装命令与定价信息暂未提供。