Files
tamabox/docs/theme-shiroko-assets-spec.md
T

118 lines
5.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 主题素材规格(shiroko)
给外部生成工具用的参数表。照着填尺寸/比例/雾度,导出后按「换图清单」替换即可。
所有尺寸都按 **2× 出图、1× 显示** 写,避免高分屏发虚。
## 一、总表
| 文件 | 用途 | 画布(生成) | 画布(导出) | 显示尺寸 | 透明 | 体积上限 |
| --- | --- | --- | --- | --- | --- | --- |
| `chibi/window.webp` | 人物 | 270 × 920 | 135 × 460 | 高 400px(宽 ≈117) | ✅ 需要 | 40 KB |
| `props/bike.webp` | 自行车 + 步枪 | 794 × 518 | 397 × 259 | 高 259px(宽 ≈397) | ✅ 需要 | 40 KB |
| `scene-desktop.webp` | 教室背景(桌面) | 3840 × 2160 | 1920 × 1080 | `cover` 铺满 | ❌ 不需要 | 40 KB |
| `scene-mobile.webp` | 教室背景(≤900px) | 1440 × 2006 | 720 × 1003 | `cover` 铺满 | ❌ 不需要 | 30 KB |
| `pattern-dark.svg` | 深色模式平铺纹样 | 240 × 240 | 240 × 240 | 平铺 | ❌ | 2 KB |
比例(认准这个,比像素更重要):
- 人物 **1 : 3.41**(宽 : 高 ≈ 0.293)
- 道具 **1.53 : 1**(397 : 259)
- 桌面背景 **16 : 9**
- 移动背景 **0.718 : 1**(≈ 9 : 12.5)
## 二、人物 `chibi/window.webp`
| 项 | 值 |
| --- | --- |
| 画布 | 270 × 920 px,透明背景 |
| 姿势 | 侧后方 3/4 视角、双手背在身后、头略向右(**不要正面直视**) |
| 脚底 | **贴画布底边**(误差 ±4px),不要留空白 |
| 头顶 | 贴画布上沿;若画光环,环心必须透明 |
| 左右余量 | 各留 10~20px,别让手臂被画布裁掉 |
| 雾度 | RGB 压白 **16%**:`v' = v×(1-0.16) + 255×0.16` |
| 色彩 | 下表是**压白 16% 之后**的显示值,生成时按 `原色 = (显示值 − 40.8) / 0.84` 反算 |
| 部位 | 显示值 | 生成时用 |
| --- | --- | --- |
| 头发 | `#c4c3c6` | `#b9b8bb` |
| 围巾 | `#8abbc6`(青绿,别用纯蓝) | `#8fc1c9` |
| 西装 / 上衣 | `#565e72` | `#3a4256` |
| 鞋 | `#4f4f4f` | `#3f3f3f` |
| 袜 | `#ffffff` | **用 `#ededed`**(纯白会和背景粘在一起,抠图会吃穿) |
| 光环 | `#8abbc6` 细环 | `#7fd3dc` |
要点:
- **不能有描边**。平涂色块、无 line art、无渐变。
- 抠图后检查三处必须透明:**手与背之间**、**两腿之间**、**光环环心**。
这三处是闭合区域,只从四角抹白是抹不掉的(我们踩过)。
- 白袜子是 `#ededed` 左右,背景是 `#fdfdfd`,两者只差 16 级——抠图时**不要把阈值开大**,否则袜子会被吃穿。
## 三、道具 `props/bike.webp`
| 项 | 值 |
| --- | --- |
| 画布 | 794 × 518 px,透明背景 |
| 内容 | 银色/白色城市自行车 + 一把细长步枪斜靠车架 |
| 朝向 | **车头朝右**(和人物同向) |
| 地面 | 轮子底线贴画布底部,下方留 12~16px 给接触阴影 |
| 阴影 | 可以在图内自带一层椭圆软影(不透明度 15~20%,模糊 8~12px) |
| 雾度 | RGB 压白 **26%**(比人物淡一档,它在人身后) |
要点:
- 侧视图即可,但不要画成“图标”——轮辐、脚踏、链条这些细节保留,否则缩到 259px 会变成一个圈。
- 枪要细长、冷色(灰蓝),**不要木色**(会像双管猎枪)。
## 四、场景 `scene-desktop.webp`
| 项 | 值 |
| --- | --- |
| 画布 | 3840 × 2160(16:9),不透明 |
| 导出 | 1920 × 1080,WebP q82 |
| 色调 | 灰蓝/暖白,均值亮度 **235~245**,标准差 6~9(几乎是白雾) |
| 处理 | 整体压白 30~38%,高斯模糊 1.2~1.4px |
**构图硬约束(这条最容易翻车):**
1. **左侧 0~22% 的前景必须是空地(地板)**,不能有课桌、椅子、书包。
人物是贴在最上层的独立图层,脚下必须有地面,否则会读成“站在课桌上”。
2. 课桌、椅子、黑板放在**中部偏右**,因为中间会被卡片完全盖住。
3. **不要有必须完整露出的元素**(`background-size: cover` 会按视口裁两侧,1080 高的屏裁掉约 5%)。
4. 不要出现人、文字、水印。自行车也不要画进背景——它要跟着人物一起移动。
5. 玻璃/窗框这类高频细节会干扰卡片可读性,右侧留白区尽量干净。
## 五、换图清单
1. 覆盖同名文件(格式 `WebP`,有透明的存 `q88`,场景存 `q82`)。
2. `static/css/themes/shiroko.css`:
- 若**显示尺寸不变**:只改三处 URL 的 `?v=`(图片不走 `StaticVersion`,缓存 1 天)。
- 若显示尺寸变了:改 `--tb-deco-size` 的 `auto 400px`(人) / `auto 259px`(车)。
3. `internal/conf/static.go` 的 `StaticVersion` +1(CSS 改了必须)。
4. 重新编译部署(静态资源是编译期 embed,只重启不重编不会变)。
### 定位公式(改比例时才需要算)
`background-position` 的百分比是相对 **(定位区宽 − 图片宽)**,不是视口宽:
```
实际 left = (视口宽 - 显示宽) × (pos%) + 偏移量
```
当前值(视口 1512 时:人物左沿 173px、车左沿 -55px,两者重叠区由人物遮住):
```css
/* 人物:显示高 400,显示宽 = 400 × 0.293 ≈ 117 */
left: max(10px, calc(50% - 524px)) bottom 36px;
/* 车:显示高 259,显示宽 ≈ 397 */
left: calc(50% - 612px) bottom 20px;
```
## 六、验收(不看代码也能查)
1. **白边**:放大 300% 看轮廓,出现 1px 白色描边就是没抠干净。
2. **闭合区域**:手内侧、腿间、环心应能透出背景色。
3. **接地**:脚底/轮底离画布底边 ≤ 4px;有阴影时阴影在轮子内侧。
4. **体积**:人 ≤40KB、车 ≤40KB、场景 ≤40KB(现在分别是 16 / 23 / 19 KB)。
5. **深色模式**:所有图片在深色下都不显示,不用管。