# Sill · 无限彩虹赛道

最新美术已更新为[世界地标与 3D App 道具](world-tour-design-20261017.md)。本文保留赛道交互及 Island 承载方式的基础方案。

这版把首页视为一场持续进行的竞速。道路把内容带到角色面前，角色把内容送往屏幕顶部；Island 是整场体验共同的目的地。打开页面即开始运行，无须先点开始。

入口：`/prototype-world.html`。本轮替换上一版三个世界的概念原型，正式 `index.html` 保留。当前分支 `feat/positioning-2.0`，未发布。

## 画面与动作

- 彩虹道路：蓝紫、珊瑚、暖金与湖蓝。通过路面厚度、边灯、跨道拱门和世界地标建立 3D 深度；外部环境已改为地标夜景，不使用原先的浅绿天空。
- 无限道路：按行进距离采样曲线，产生左右弯道、高低起伏和轻微倾斜。固定数量的几何段、景物和拾取物循环使用，跑得更久不会不断添加场景对象。
- 两位已存在的 pet 竞速：核核使用当前移动素材里的滚动冲刺，茄博士使用迈步循环。前后位置交替，不持续固定一个领跑者。两者保留原角色，没有临时发明第三个产品角色。
- 进入页面约两秒就遇见第一份文件。此后约每 5.7 秒遇见一个拾取物，碰撞由角色进度和所在车道决定。
- 角色碰撞 → 小幅跃动和散落光点 → 物品沿抛物线飞向顶部 → Island 接收并变更内容 → 约 4.3 秒后回到组件页。全部跟随同一动画时钟。
- 底部入口把指定物品放到前方赛道，等待角色碰撞；暂停或系统减少动态时，直接呈现对应 Island 状态。

## Island 内容对照

| 赛道拾取物 | Island 变化 | 当前产品语义 |
| --- | --- | --- |
| PDF、照片 | 展示文件预览、名称、接收状态和最近收下的文件 | 置物岛 / Files |
| 番茄钟 | 环形图标、25 分钟示例倒计时 | Focus Timer 组件 |
| 翻译 | 语言选择信息、原文与译文双列、底部状态 | Translate 工具 |
| 剪贴板 | 最近片段列表与搜索入口的布局 | Clipboard 工具 |
| 速记 | 逐字出现的日常草稿与当前空间 | Quick Note 组件 |
| 应用 | Finder、Safari、备忘录、Sill 入口 | Apps 工具 |
| 两次拾取之间 | 时间、天气、pet 共用一层内容区 | Home Island 多组件 |

这是网页演示数据，不调用原生 App，不读取文件、真实剪贴板、天气或笔记。工具中的搜索等控件外观用于展示承载方式，当前没有伪装成可点击功能。下载按钮沿用网站现有 App Store 地址。

## 结合当前 Island 的设计

以 `Sources/SillApp/Island/IslandLayout.swift` 和 `docs/design/island-tool-layout.md` 为结构依据：

- 桌面主体 440 × 176，圆角 24；顶部导航胶囊位于主体之外，重叠 14。
- 组件上下各保留 28 的安全区，组件内容共用一块约 120 高的空间。
- 深色半透明背板、模糊、边缘高光与内暗部保持前景白字可读。
- 工具共用 header / body / footer，不另开右侧独立演示面板。
- 手机保持顶部完整 Island，把标题缩小，赛道仍持续运动；最窄机型让内容适配可用宽度。

这里是对原生设计语义的网页复现，不是声称与 CALayer 渲染逐像素一致。

## 2D 与后续 3D pet

当前优先实现真实 3D 赛道和已有角色的透明动画。用 macOS AVAssetReader 解码项目已打包的 HEVC alpha `walk.mov`，导出 WebP 图集。核核 48 帧、茄博士 36 帧，分别保留原动作周期后略加速。

建议后续 3D pet 仍保留角色轮廓与颜色：核核需要体现背部发光晶片，茄博士保留帽子、眼镜与书。先制作核核的一套低面数模型和滚动 / 跑步循环，核对正面、侧面、背面轮廓，再替换一个 billboard 进行对照。茄博士的腿部循环与持书姿势要独立处理。当前尚未生成或验收 3D 模型。

## 资源与生命周期

Three.js 0.169.0 沿用本地 MIT 副本；两个角色图集约 485 KiB。没有新增框架或外部运行时请求。每帧仅更新固定道路缓冲区、当前可见角色与拾取物。像素比上限 1.6；背景标签页停止；系统 Reduce Motion 默认静态；暂停冻结角色、赛道、计时和正在飞行的内容。恢复不追赶隐藏期间的时间。

技术边界：当前是方向原型，尚未替换正式站点，也未做低端手机真机帧率、Safari / Firefox 实机兼容性和最终美术验收。浏览器不支持 WebGL 时仍可通过入口看 Island 内容。

验证计划及结果见 `regression/rainbow-race-20261017.md`。

## 本次代码 review 的功能核对

对照 `Sources/SillApp/PluginPlatform/FeatureModules/BuiltInFeatureModuleCatalog.swift`，本轮演示使用 ContentShelf、Files、Pomodoro、Translate、Clipboard、Apps、QuickNote，以及 Home 中的 Clock、Weather、Pet。赛道照片目前演示的是文件收纳，不混同为 Photo 组件的完整功能。没有把未注册的音乐能力作为产品现状展示。
