docs:发布不含几何的角色机芯学习仓

以 kivo@9337f7e 的 replica 机芯为基准,单独开源弹簧/状态机/眼睛编排。
不包含 geometry-data、官方图标和抽出的应用主包。
This commit is contained in:
Edom
2026-08-15 22:45:18 +08:00
commit 5502b2d97a
13 changed files with 3632 additions and 0 deletions
+56
View File
@@ -0,0 +1,56 @@
# `window.GROK_GEO` 接口
Playground 只在检测到可用的 `window.GROK_GEO` 时才会创建角色。
本仓库不附带这份数据。若要本地看完整外形,自行把 `replica/geometry-data.js` 放到同目录,并保证它在 `src/*.js` 之前执行。
不要把从商业应用抽出的几何、图标或主包提交到本仓库,也不要再分发。
## 最小可用对象
```js
window.GROK_GEO = {
Re: 100, // 身体逻辑半径,绘制原点
G9e: 20, // 眼睛纵向基准
VJt: 4, // 非 uniform 眼距预留
viewBox: { minX: 0, minY: 0, width: 200, height: 200 },
palette: {
black: { light: "#111111", dark: "#f4f4f4" },
},
eyes: [
// 下标对应 tables.js 的 playlist。每组 [左眼多边形, 右眼多边形]
// 每个多边形是 [[x, y], ...]
],
shapes: {
blob: {
label: "Blob",
path: "M ... Z", // 你自己的 SVG path d
face: { x: 0, y: 0, sx: 1, sy: 1, eye: 1 },
radius: 100,
tiltScale: 1,
top: 0,
bottom: 200,
},
},
};
```
## 字段
| 字段 | 用途 |
|---|---|
| `Re` | 身体中心 / 变换原点 |
| `G9e` `VJt` | 眼睛缩放与间距 |
| `viewBox` | 舞台视口;机芯里的 `VIEW` 与此对齐 |
| `palette[id].light/dark` | `setColor` 在非 login 墨水下的纯色 |
| `eyes[i]` | 第 `i` 号眼形。`tables.js` 的 playlist 用下标引用,默认按 25 组编排 |
| `shapes[id].path` | 身形轮廓 |
| `shapes[id].face` | 面部相对身体的偏移与缩放,可选 `leftDX` |
| `shapes[id].radius/top/bottom/tiltScale` | 眼睛夹持、点头倾斜 |
| `solids` | 可选。`bean` / `tablet` / `cloud` 等旋转时的截面带 |
默认 playground 从 `shapes.blob` 起播。`tables.js` 的 `SHAPE_ZOOM` 给部分 id 配了缩放;其它 id 仍可渲染。
`tables.js` 里的 `VIEW` 决定取景框。身形 path 的坐标系最好和它对齐,否则角色会偏出画面。
## 加载
`index.html` 会尝试加载 `geometry-data.js`。文件不存在时页面保持说明态,不会创建 `GrokCharacter`。该文件已被 `.gitignore` 忽略。