# Inception Space：产品、课程与技术蓝图

## 1. 产品命题

Inception Space 不是把学生作品挂进一个虚拟画廊，而是让一个班级共同创作
有内在逻辑的“意义世界”。每个学生拥有可独立发展的个人空间，也可以在明确
同意后把作品、角色或视觉规则连接到班级共同叙事中。

世界可以承接合作方 brief，但合作方不是创作裁判。理想闭环是：

```text
理解真实问题
  → 个人观察、草图与材料实验
  → 班级定义共同世界规则
  → 创建个人作品与空间
  → 建立经双方同意的作品关系
  → 展示、批评和修改
  → 策展后的公开成果
  → 受众/专业人士反馈
  → 学生决定如何继续修订
```

## 2. 空间体验

### 入口与导航

- 玩家从极简、非写实的未来博物馆走廊进入。
- 传送门代表班级、主题或策展单元，而不是聊天房间。
- 私人空间不依靠可猜测的共享密码；服务器使用账户授权或高熵邀请 token。
- 公开空间是不可编辑快照，不暴露班级成员关系和学生真实身份。

### 房间

- 首批模板：正四面体和立方体；后续可以增加其他规则明确的多面体。
- 每个面可以容纳一件平面作品，也可放置画架、桌面或独立展台。
- 房间可包含低多边形桌子、椅子、画板、灯、框、雕塑底座和环境道具。
- 学生可以行走、靠近观察和触发受控互动，但 Pilot 不引入物理破坏或复杂刚体模拟。

### 可复用的博物馆全息说明屏

- 玩家靠近作品按 **E** 后，说明不是普通全屏 modal，而是在 3D 世界中打开一块
  垂直于地面、只绕 Y 轴面向玩家的半透明激光投影屏。
- 面板底色按“10% 透明”处理为约 90% opacity；文字与图片保持高对比，不随底色
  一起变淡。细微颗粒、扫描纹理与边缘光营造激光投影质感，但不得影响阅读。
- **E**、Escape、可见关闭按钮、离开交互范围、换房和进入传送过程都可以关闭。
- 这是房间共享的基础组件，不为每间房重复开发。它支持文本、图片、Markdown，
  以及经过严格清理的本地 HTML 子集；不允许脚本、iframe、表单或任意远程网页。
- 完整交互、安全、HTML 与验收规范见
  [`archive/HOLOGRAPHIC-MUSEUM-PANEL.md`](./archive/HOLOGRAPHIC-MUSEUM-PANEL.md)。
- 经验证的 HTML 在游戏外使用纯白背景，便于普通浏览和审阅；导入游戏时只覆盖
  文档画布背景为透明，由博物馆统一提供科技玻璃效果。禁止对白色像素做色键抠除，
  图片、文字和图表中的白色必须保留。

### 简单 3D 创作

Pilot 的儿童编辑器不复制 Blender。它提供三层能力：

1. 从审核物品库选择 GLB 物品，移动、旋转、缩放、复制和吸附；
2. 用盒、圆柱、平面等参数化积木组合桌子、椅子、框和展台；
3. 高阶学生可用 Blockbench 制作低多边形物品，也可用 **Nomad Sculpt**（平板）
   或 **Blender Sculpt**（桌面）塑造原创角色，再在 Blender 中减面、绑定、制作
   `Idle/Walk/Float/Dive` 动作并导出 GLB，经教师审核后导入。

这样既能真实接触空间、比例、体量和材质，也不会让拓扑、骨骼和复杂物理吞掉
艺术课的主要时间。

## 3. 课程定位

### 家长期待的真实风险

如果课程主要宣传 computer vision、AI 或引擎能力，想让孩子走传统美术或作品集
方向的家长很可能会觉得基础训练不足。共享世界本身是一个优秀的展示媒介，但它
不会自动替代观察、构图、色彩、材料、艺术史、批评和持续修改。

因此不应把课程包装成“专业纯美术训练的替代品”。更准确的定位是：

> 以工作室艺术为核心的新媒体艺术与视觉叙事课程。

这仍然属于严肃的视觉艺术。National Core Arts Standards 对视觉艺术的定义本来
就包含绘画、摄影、动画、media arts 和 emerging technologies；关键不是媒介是否
数字化，而是课程是否同时训练创作、呈现、回应和连接。

### 建议课时比例

- 50% 工作室艺术基础：观察、构图、比例、空间、明暗、色彩、材料与笔触；
- 25% 新媒体与创意编程：扫描、抠图、时间、行为、镜头、交互和简单 3D；
- 25% 艺术史、批评、修订、策展、艺术家陈述与公开呈现。

年龄更小可进一步降低代码比例；准备专业作品集的高年级学生应增加专项绘画与
材料训练，而不是增加 AI 生成量。

### 每个单元的证据链

每位学生的最终成果不只是一段可玩的画面，还应包括：

- 观察页、参考研究和不少于两轮草图；
- 一次明确的形式训练，例如冷暖色、正负形、透视或节奏；
- 材料/画笔实验和失败记录；
- 保留学生原始笔迹的最终作品；
- Live Painting 行为计划、为什么这样动，以及一次修改前后对比；
- 同伴/教师批评记录、学生自己的回应；
- 艺术家陈述、展览截图或视频，以及学生选择公开到哪一层。

成熟艺术课程重视 inquiry、practice、experimentation、revision、communication 和
reflection。平台应把这些过程证据变成作品档案，而不是只保存最后一次渲染。

### AI 的角色

- `planner`：把“我想让它有点孤独但仍在呼吸”转成可讨论的节奏、方向、色彩和空间计划；
- `critic`：读取渲染截图和学生目标，指出可观察偏差并提出问题；
- `translator`：把获批计划转换为受 schema 限制的行为数据；
- 不是作者替身：不直接涂改原图，不冒充学生陈述，不以流畅文字取代学生判断。

需要同时保存 `student_intent`、`ai_proposal`、`student_decision` 和 `revision`，让
作者关系在产品数据中可见。

## 4. 技术结构

```text
DOM Studio / Curator UI
  ├── drawing + scan cleanup
  ├── room/object placement
  ├── behavior-plan review
  └── consent + publication workflow

World Runtime (Three.js or Babylon.js behind an adapter)
  ├── corridor, portals, polyhedron rooms
  ├── camera, static collision, picking
  ├── GLB objects + parametric primitives
  └── artwork planes / frames / easels

Artwork Runtime (Canvas 2D)
  ├── inherited Live Painting renderer
  ├── static atlas + bounded marks
  └── dirty CanvasTexture updates

Structured Content
  ├── world manifest
  ├── room and object transforms
  ├── artwork versions + provenance
  ├── validated behavior plans
  └── privacy/publication state
```

### 为什么不是只用 p5

p5.WebGL 很适合教学 sketch、shader 和单件互动作品，也可以作为高级创作模式；
但共享博物馆需要场景图、资源生命周期、glTF、相机、拾取、碰撞、可见性裁剪和
统一性能调度。把这些都自行堆在 p5 上，会让 p5 从教学工具变成需要维护的自制引擎。

### Live Painting 进入 3D 的方式

过渡路径中，每件作品仍在自己的受控 Canvas 2D 上渲染，再由 Three.js
`CanvasTexture` 或 Babylon.js `DynamicTexture` 作为墙面或画架材质。正式路径把
`.lpp` 编译成 `.lpr`，并在获选引擎中加入 GPU artwork renderer。无论哪条路径，
都由一个中央 scheduler 决定更新频率：

- 视野内且靠近的作品：按目标帧率更新；
- 视野内但较远的作品：降低纹理分辨率或更新频率；
- 视野外/传送门另一侧：暂停动画与 GPU 上传；
- 没有变化的帧：不设置 `needsUpdate`；
- 大量静态 soft marks：继续烘焙进 bounded atlas；
- 同一材质/家具：合批或 instancing，避免每个对象独立 draw call。

`move()` / `deform()` 在编辑器里可以表现成易学的积木或有限函数，但发布格式必须
编译成白名单操作和有限数值；公开世界绝不执行学生或 LLM 生成的任意源码。

### 3D 资产约束

- 运行时格式统一为 GLB/glTF；源文件可来自 Nomad Sculpt、Blender Sculpt、
  Blockbench 或参数化编辑器；角色雕刻从 Nomad 导出后仍建议在 Blender 完成
  减面、UV、骨骼与动作；
- 模型具有明确尺寸、pivot、碰撞盒、作者/许可证、审核状态和可公开范围；
- Pilot 以低多边形、共享材质、少量灯光、烘焙环境光为主；
- 初期不用骨骼角色、布料、破坏、复杂刚体或高成本实时阴影；
- 在 Chromebook/iPad/普通笔记本的真实浏览器上设性能闸门，而不是只在开发机通过。

## 5. 隐私与发布

### 三个授权状态

| 状态 | 谁可读 | 谁可改 | 包含内容 |
|---|---|---|---|
| `personal_draft` | 学生、授权教师 | 学生 | 草稿、反思、AI 对话、失败版本 |
| `class_shared` | 班级、教师 | 原作者；关系需双方同意 | 获准作品、课堂反馈、对象关系 |
| `public_snapshot` | 任何访客 | 无；只能另建新版本 | 策展成果、匿名署名、公开说明 |

公开不应只是把 `class_shared` 的 URL 设为可访问，而应生成经过清理的不可变快照。

### 对象关系

“我的鸟飞进你的画里”这类关系需要双方同意，并且依赖稳定的作品版本。任一方撤回
共享时，关系应降级为无内容占位或在下一次公开快照中移除，不能让复制资产绕过授权。

## 6. Pilot 验证闸门

在扩展世界前，先用相同技术切片对照 Three.js 与 Babylon.js：

- 一条走廊、一个传送门、一个立方体房间；
- 20 个低多边形静态物品；
- 四件 512px Live Painting 同时展示；
- 键盘、触摸和基础无障碍替代导航；
- Chromium Chromebook、iPad Safari 和普通桌面浏览器；
- 目标为桌面流畅、移动设备不低于稳定 30fps，且没有明显纹理上传卡顿；
- 编辑器能从原图到私有预览，再到班级共享快照完成一次闭环。

只有这个切片通过后，才决定是否加入物理引擎、更多房型、实时协作或 WebGPU 专属效果。

## 7. 合作伙伴的第一步

第一项合作请求应低摩擦：请伙伴提供 20–30 分钟背景介绍、一个真实但不涉密的问题，
以及一次面向学生的作品反馈。先验证教育价值与反馈质量，再讨论包装、连载视频、赞助或
公益使用。所有对外使用都要有单独的策展、授权与未成年人保护流程。
