From 1767bed60988635b79f58ec55cab215695c203af Mon Sep 17 00:00:00 2001 From: kdletters Date: Sat, 9 May 2026 23:55:10 +0800 Subject: [PATCH] docs: add motion demo entry and warmup specs --- ...ION_DEMO_WARMUP_LEVEL_DESIGN_2026-05-09.md | 529 +++++++++++++++ ...N_EDUTAINMENT_DISCOVER_ENTRY_2026-05-09.md | 89 +++ docs/design/README.md | 1 + ...O_WARMUP_IMPLEMENTATION_SPEC_2026-05-09.md | 602 ++++++++++++++++++ docs/technical/README.md | 1 + 5 files changed, 1222 insertions(+) create mode 100644 docs/design/CHILD_MOTION_DEMO_WARMUP_LEVEL_DESIGN_2026-05-09.md create mode 100644 docs/design/CHILD_MOTION_EDUTAINMENT_DISCOVER_ENTRY_2026-05-09.md create mode 100644 docs/technical/CHILD_MOTION_DEMO_WARMUP_IMPLEMENTATION_SPEC_2026-05-09.md diff --git a/docs/design/CHILD_MOTION_DEMO_WARMUP_LEVEL_DESIGN_2026-05-09.md b/docs/design/CHILD_MOTION_DEMO_WARMUP_LEVEL_DESIGN_2026-05-09.md new file mode 100644 index 00000000..f8f2b795 --- /dev/null +++ b/docs/design/CHILD_MOTION_DEMO_WARMUP_LEVEL_DESIGN_2026-05-09.md @@ -0,0 +1,529 @@ +# 儿童动作识别互动玩法 Demo 热身关开发文档 + +> 日期:2026-05-09 +> 适用范围:儿童动作识别互动玩法 Demo 的固定启动热身关 +> 文档性质:玩法 Demo 开发设计文档 +> 说明:本文整理当前已确认的热身关内容、体验、流程和热身数据记录要求。 + +## 1. 热身关定位 + +热身关是 Demo 启动后的固定流程,用于在正式进入后续趣味学习关前完成以下事项: + +- 调用摄像头; +- 识别用户和环境; +- 引导用户来到建议互动位置; +- 教学基础交互方式; +- 确认用户可在互动空间内完成左右移动、挥手和跳跃; +- 记录用户左右移动距离、挥动手臂空间和跳跃空间,作为后续关卡的空间边界与行为坐标; +- 完成后进入关卡选择。 + +热身关不接入创作模块,不作为可配置玩法模板提供给创作者。 + +## 2. 屏幕与设备适配 + +本产品适用于电视屏幕、电脑屏幕等环境。 + +热身关制作表达使用横屏比例。 + +## 3. 画面基础表现 + +用户进入热身关后,摄像头被调用,并开始识别用户和环境。 + +画面基础表现如下: + +1. 在屏幕中央位置的地面生成预设的绿色圆环,作为建议位置的指引。 +2. 将用户的实际位置生成角色剪影,作为用户在画面中的标识。 +3. 只对摄像头背景做虚化处理,用于表达对用户隐私的保护、屏蔽周围环境干扰,并营造空间感。 + +## 4. 通用检测与引导规则 + +### 4.1 不允许跳过 + +热身关每个步骤都必须由用户完成,不允许跳过,也不允许系统自动进入下一步。 + +### 4.2 引导动画播放规则 + +每个动作等待 3 秒后可以播放引导动画。 + +当前不设置最长等待时间。 + +### 4.3 绿色圆环完成规则 + +用户到达绿色圆环后,绿色圆环进入 2 秒选中状态。 + +用户需要在绿色圆环内保持停留 2 秒,才算完成该圆环位置检测。 + +### 4.4 左右距离映射规则 + +“约半米”的左右移动距离,技术上以角色剪影移动距离为准。 + +该距离后续会根据实际体验继续调校。 + +### 4.5 手势区分规则 + +招手 / 摆手、挥动左手、挥动右手三类动作需要有动作区分。 + +手势检测仅对肢体进行区分,不对手部细节进行区分。 + +### 4.6 手势引导规则 + +挥动哪只手,就使用对应手的引导。 + +## 5. 热身关完整流程 + +### 5.1 进入热身关 + +#### 画面表现 + +- 摄像头被调用。 +- 系统识别用户和环境。 +- 屏幕中央位置的地面出现预设绿色圆环。 +- 用户实际位置以角色剪影形式显示。 +- 只对摄像头背景做虚化处理,保留空间感。 + +#### 屏幕文字与语音 + +屏幕中上方浮现文字,同时语音播报: + +```text +欢迎你,小朋友,见到你真开心 +``` + +随后继续播报: + +```text +请你来到圆圈这里和我打个招呼吧 +``` + +#### 检测逻辑 + +系统检测用户是否到达屏幕中央绿色圆环位置。 + +用户到达圆环后,绿色圆环进入 2 秒选中状态。用户保持停留 2 秒后,该步骤完成。 + +#### 完成反馈 + +用户完成中央圆环位置检测后: + +- 播放圆圈消失特效; +- 进入招手手势教学步骤。 + +--- + +### 5.2 招手教学 + +#### 画面表现 + +播放招手的手势引导。 + +若用户进入该步骤后 3 秒仍未完成动作,可以播放引导动画。 + +#### 检测逻辑 + +系统检测用户是否完成招手 / 摆手手势。 + +该动作与后续挥动左手、挥动右手需要有动作区分,但仅对肢体进行区分,不对手部细节进行区分。 + +#### 完成反馈 + +用户完成招手 / 摆手手势后,进入下一步。 + +--- + +### 5.3 热身说明 + +#### 屏幕文字与语音 + +```text +你好呀小朋友,为了你玩的安全和开心,先来和我一起热个身吧 +``` + +播放完成后进入左右移动热身步骤。 + +--- + +### 5.4 向左一步 + +#### 屏幕文字与语音 + +```text +向左一步 +``` + +#### 画面表现 + +屏幕中心向左一个身位,约半米的地面位置,出现新的绿色圆圈。 + +“约半米”技术上以角色剪影移动距离为准,后续根据体验调校。 + +#### 检测逻辑 + +系统检测用户是否到达该绿色圆圈位置。 + +用户到达圆环后,绿色圆环进入 2 秒选中状态。用户保持停留 2 秒后,该步骤完成。 + +#### 完成反馈 + +用户完成后播放鼓励语: + +```text +真棒 +``` + +同时记录本次向左移动距离,作为后续关卡中的左侧空间边界参考。 + +完成后进入“回到中间来”。 + +--- + +### 5.5 回到中间来(一) + +#### 屏幕文字与语音 + +```text +回到中间来 +``` + +#### 画面表现 + +场地中心位置出现绿色圆圈。 + +#### 检测逻辑 + +系统检测用户是否到达场地中心绿色圆圈位置。 + +用户到达圆环后,绿色圆环进入 2 秒选中状态。用户保持停留 2 秒后,该步骤完成。 + +#### 完成反馈 + +用户完成后播放鼓励语: + +```text +真棒 +``` + +完成后进入“向右一步”。 + +--- + +### 5.6 向右一步 + +#### 屏幕文字与语音 + +```text +向右一步 +``` + +#### 画面表现 + +屏幕中心向右一个身位,约半米的地面位置,出现新的绿色圆圈。 + +“约半米”技术上以角色剪影移动距离为准,后续根据体验调校。 + +#### 检测逻辑 + +系统检测用户是否到达该绿色圆圈位置。 + +用户到达圆环后,绿色圆环进入 2 秒选中状态。用户保持停留 2 秒后,该步骤完成。 + +#### 完成反馈 + +用户完成后播放鼓励语: + +```text +真棒 +``` + +同时记录本次向右移动距离,作为后续关卡中的右侧空间边界参考。 + +完成后进入“回到中间来”。 + +--- + +### 5.7 回到中间来(二) + +#### 屏幕文字与语音 + +```text +回到中间来 +``` + +#### 画面表现 + +场地中心位置出现绿色圆圈。 + +#### 检测逻辑 + +系统检测用户是否到达场地中心绿色圆圈位置。 + +用户到达圆环后,绿色圆环进入 2 秒选中状态。用户保持停留 2 秒后,该步骤完成。 + +#### 完成反馈 + +用户完成后播放鼓励语: + +```text +真棒 +``` + +完成后进入左手挥动教学。 + +--- + +### 5.8 挥动左手 + +#### 屏幕文字与语音 + +```text +挥动左手 +``` + +#### 画面表现 + +播放伸展手臂挥动左手的手势引导。 + +若用户进入该步骤后 3 秒仍未完成动作,可以播放引导动画。 + +#### 检测逻辑 + +系统检测用户是否完成挥动左手手势。 + +该手势检测仅对肢体进行区分,不对手部细节进行区分。 + +#### 完成反馈 + +用户完成后播放鼓励语: + +```text +真棒 +``` + +同时记录用户挥动左手的空间,保存为该用户对应的行为坐标。 + +完成后进入右手挥动教学。 + +--- + +### 5.9 挥动右手 + +#### 屏幕文字与语音 + +```text +挥动右手 +``` + +#### 画面表现 + +播放伸展手臂挥动右手的手势引导。 + +若用户进入该步骤后 3 秒仍未完成动作,可以播放引导动画。 + +#### 检测逻辑 + +系统检测用户是否完成挥动右手手势。 + +该手势检测仅对肢体进行区分,不对手部细节进行区分。 + +#### 完成反馈 + +用户完成后播放鼓励语: + +```text +真棒 +``` + +同时记录用户挥动右手的空间,保存为该用户对应的行为坐标。 + +完成后进入跳跃教学。 + +--- + +### 5.10 原地跳一下 + +#### 屏幕文字与语音 + +```text +原地跳一下 +``` + +#### 画面表现 + +播放跳跃姿势引导。 + +若用户进入该步骤后 3 秒仍未完成动作,可以播放引导动画。 + +#### 检测逻辑 + +系统检测用户是否完成跳跃姿势。 + +#### 完成反馈 + +用户完成后: + +- 记录用户跳跃空间,保存为该用户对应的行为坐标; +- 播放热身结束特效、上浮字幕和语音: + +```text +真厉害,你是我见过最聪明的小朋友 +``` + +随后继续播放: + +```text +别走开,现在开始我们的游戏吧 +``` + +热身关结束,进入关卡选择。 + +## 6. 流程状态表 + +| 顺序 | 步骤 | 屏幕文字 / 语音 | 画面表现 | 检测目标 | 完成后反馈 | +|---:|---|---|---|---|---| +| 1 | 进入热身关 | 欢迎你,小朋友,见到你真开心;请你来到圆圈这里和我打个招呼吧 | 中央地面绿色圆环;用户角色剪影;摄像头背景虚化 | 用户到达中央圆环并保持 2 秒 | 圆圈消失特效 | +| 2 | 招手教学 | 同上流程延续 | 招手手势引导;等待 3 秒可播放引导动画 | 招手 / 摆手 | 进入下一步 | +| 3 | 热身说明 | 你好呀小朋友,为了你玩的安全和开心,先来和我一起热个身吧 | 保持热身引导状态 | 无新增动作检测 | 进入移动热身 | +| 4 | 向左一步 | 向左一步 | 左侧约半米处绿色圆圈 | 用户到达左侧圆环并保持 2 秒 | 真棒;记录左侧空间边界 | +| 5 | 回到中间来 | 回到中间来 | 中心位置绿色圆圈 | 用户到达中心圆环并保持 2 秒 | 真棒 | +| 6 | 向右一步 | 向右一步 | 右侧约半米处绿色圆圈 | 用户到达右侧圆环并保持 2 秒 | 真棒;记录右侧空间边界 | +| 7 | 回到中间来 | 回到中间来 | 中心位置绿色圆圈 | 用户到达中心圆环并保持 2 秒 | 真棒 | +| 8 | 挥动左手 | 挥动左手 | 伸展手臂挥动左手手势引导;等待 3 秒可播放引导动画 | 挥动左手 | 真棒;记录左手挥动空间 | +| 9 | 挥动右手 | 挥动右手 | 伸展手臂挥动右手手势引导;等待 3 秒可播放引导动画 | 挥动右手 | 真棒;记录右手挥动空间 | +| 10 | 原地跳一下 | 原地跳一下 | 跳跃姿势引导;等待 3 秒可播放引导动画 | 跳跃姿势 | 记录跳跃空间;真厉害,你是我见过最聪明的小朋友;别走开,现在开始我们的游戏吧;进入关卡选择 | + +## 7. 固定文案与语音清单 + +以下文案需要作为屏幕中上方浮现文字,并同步语音播报。 + +```text +欢迎你,小朋友,见到你真开心 +请你来到圆圈这里和我打个招呼吧 +你好呀小朋友,为了你玩的安全和开心,先来和我一起热个身吧 +向左一步 +真棒 +回到中间来 +真棒 +向右一步 +真棒 +回到中间来 +真棒 +挥动左手 +真棒 +挥动右手 +真棒 +原地跳一下 +真厉害,你是我见过最聪明的小朋友 +别走开,现在开始我们的游戏吧 +``` + +## 8. 需要开发支持的识别能力 + +热身关当前流程需要支持以下识别能力: + +1. 摄像头调用; +2. 用户识别; +3. 环境识别; +4. 用户实际位置识别; +5. 用户是否到达中央绿色圆环位置; +6. 用户是否在绿色圆环内持续保持 2 秒; +7. 用户是否到达左侧约半米绿色圆环位置; +8. 用户是否到达右侧约半米绿色圆环位置; +9. 招手 / 摆手手势识别; +10. 挥动左手识别; +11. 挥动右手识别; +12. 原地跳跃姿势识别; +13. 用户左右移动距离记录; +14. 用户挥动手臂空间记录; +15. 用户跳跃空间记录。 + +## 9. 需要开发支持的表现能力 + +热身关当前流程需要支持以下表现能力: + +1. 横屏比例显示; +2. 摄像头背景虚化; +3. 用户位置生成角色剪影; +4. 屏幕中央地面绿色圆环; +5. 左侧约半米地面绿色圆环; +6. 右侧约半米地面绿色圆环; +7. 绿色圆环 2 秒选中状态; +8. 圆圈消失特效; +9. 招手手势引导; +10. 伸展手臂挥动左手手势引导; +11. 伸展手臂挥动右手手势引导; +12. 跳跃姿势引导; +13. 热身结束特效; +14. 上浮字幕; +15. 语音播报。 + +## 10. 热身数据记录要求 + +热身关需要记录以下数据,用于后续关卡的空间边界和行为坐标判断。 + +### 10.1 左右空间边界 + +用户完成向左一步后,记录该移动距离,作为后续关卡中的左侧空间边界。 + +用户完成向右一步后,记录该移动距离,作为后续关卡中的右侧空间边界。 + +后续关卡中,当用户身体主体覆盖安全边界线时,对应侧屏幕边缘出现虚影提醒。 + +后续关卡中,当用户身体主体超出安全边界线时: + +1. 关卡内容暂停; +2. 屏幕虚化; +3. 屏幕中央地面出现绿色圆圈; +4. 屏幕提示文案: + +```text +小朋友,要注意安全哦 +``` + +5. 用户需要回到中心绿色圆圈并保持 2 秒后,才能继续游戏内容。 + +### 10.2 手臂挥动空间 + +用户完成挥动左手后,记录用户挥动左手的空间,保存为该用户对应的行为坐标。 + +用户完成挥动右手后,记录用户挥动右手的空间,保存为该用户对应的行为坐标。 + +### 10.3 跳跃空间 + +用户完成原地跳一下后,记录用户跳跃空间,保存为该用户对应的行为坐标。 + +## 11. 热身关完成条件 + +热身关完成条件为用户按顺序完成以下流程: + +1. 到达中央圆环位置并保持 2 秒; +2. 完成招手 / 摆手手势; +3. 到达左侧约半米圆环位置并保持 2 秒; +4. 记录左侧空间边界; +5. 回到中央圆环位置并保持 2 秒; +6. 到达右侧约半米圆环位置并保持 2 秒; +7. 记录右侧空间边界; +8. 回到中央圆环位置并保持 2 秒; +9. 完成挥动左手; +10. 记录左手挥动空间; +11. 完成挥动右手; +12. 记录右手挥动空间; +13. 完成原地跳一下; +14. 记录跳跃空间; +15. 播放热身结束特效和结束语音; +16. 进入关卡选择。 + +## 12. 数据保存方式 + +左右空间边界、手臂挥动空间、跳跃空间仅在当前 Demo 体验会话内保存。 + +这里的“当前 Demo 体验会话”指用户本次打开并体验 Demo 的过程。当用户关闭 Demo、刷新页面、退出当前体验流程、重新进入 Demo,或更换设备后,系统不再沿用上一次热身记录的数据,需要重新完成热身关并重新记录。 + +采用仅当前 Demo 体验会话内保存的原因: + +1. 每名用户的身高、体型、动作幅度不同,安全边界和行为坐标会发生变化。 +2. 当前 Demo 不做特定用户识别,无法确认下一次体验的是否仍是同一名用户。 +3. 用户所处的体验环境可能变化,包括房间大小、摄像头位置、屏幕位置和站立距离。 +4. 为保证安全,每次体验都需要重新对环境和距离进行安全检查。 + +## 13. 后续待确认事项 + +当前暂无待确认事项。 diff --git a/docs/design/CHILD_MOTION_EDUTAINMENT_DISCOVER_ENTRY_2026-05-09.md b/docs/design/CHILD_MOTION_EDUTAINMENT_DISCOVER_ENTRY_2026-05-09.md new file mode 100644 index 00000000..03b5e114 --- /dev/null +++ b/docs/design/CHILD_MOTION_EDUTAINMENT_DISCOVER_ENTRY_2026-05-09.md @@ -0,0 +1,89 @@ +# 寓教于乐发现页临时入口设计 + +> 日期:2026-05-09 +> 适用范围:平台入口发现页、儿童动作识别娱乐教育内容线临时入口 +> 文档性质:产品与前端落地边界 + +## 1. 目标 + +为儿童动作识别娱乐教育内容线提供一个临时入口。 + +入口放置在平台“发现”页面内,作为独立标签展示,标签名称为: + +```text +寓教于乐 +``` + +后续生产的该内容线模板和游戏关卡,都放置在“寓教于乐”独立标签下。 + +## 2. 展示边界 + +寓教于乐内容不直接展示在以下位置: + +1. 推荐页; +2. 发现页的推荐标签; +3. 发现页的今日标签; +4. 发现页的分类标签; +5. 发现页的排行标签; +6. 发现页搜索结果。 + +寓教于乐内容只在“发现 / 寓教于乐”标签下展示。 + +## 3. 开关规则 + +该入口需要支持灵活开关。 + +开关打开时: + +1. 发现页显示“寓教于乐”标签; +2. “寓教于乐”标签下展示该内容线内容; +3. 该内容线内容仍不进入推荐、今日、分类、排行和搜索结果。 + +开关关闭时: + +1. 发现页隐藏“寓教于乐”标签; +2. 隐藏“寓教于乐”标签下内容; +3. 该内容线内容不进入推荐、今日、分类、排行和搜索结果。 + +## 4. 内容识别规则 + +临时阶段使用作品标签识别寓教于乐内容。 + +当公开作品标签中包含: + +```text +寓教于乐 +``` + +则该作品归入寓教于乐内容线。 + +## 5. 技术落地边界 + +本次只做前端入口和前端展示过滤,不新增后端接口。 + +前端通过功能开关控制入口显隐。 + +开关环境变量: + +```text +VITE_ENABLE_EDUTAINMENT_ENTRY +``` + +默认开启。 + +当该变量显式配置为以下值时,入口关闭: + +```text +false +0 +off +no +``` + +## 6. 验收点 + +1. 开关打开时,发现页显示“寓教于乐”标签。 +2. 开关关闭时,发现页不显示“寓教于乐”标签。 +3. 带有“寓教于乐”标签的公开作品不进入推荐页。 +4. 带有“寓教于乐”标签的公开作品不进入发现页推荐、今日、分类、排行和搜索结果。 +5. 带有“寓教于乐”标签的公开作品只在“发现 / 寓教于乐”标签下展示。 diff --git a/docs/design/README.md b/docs/design/README.md index d7e6dc9c..79ef0a63 100644 --- a/docs/design/README.md +++ b/docs/design/README.md @@ -4,6 +4,7 @@ ## 文档列表 +- [CHILD_MOTION_DEMO_WARMUP_LEVEL_DESIGN_2026-05-09.md](./CHILD_MOTION_DEMO_WARMUP_LEVEL_DESIGN_2026-05-09.md):4-8 岁儿童动作识别互动玩法 Demo 固定热身关的横屏体验流程、识别目标、表现需求与待确认事项。 - [CUSTOM_WORLD_CREATOR_INPUT_AND_AI_BOUNDARY_DESIGN_2026-04-06.md](./CUSTOM_WORLD_CREATOR_INPUT_AND_AI_BOUNDARY_DESIGN_2026-04-06.md):自定义世界里百梦主输入与 AI 分工边界设计。 - [CUSTOM_WORLD_CREATOR_MANUAL_AI_SYSTEM_BALANCE_DESIGN_2026-04-12.md](./CUSTOM_WORLD_CREATOR_MANUAL_AI_SYSTEM_BALANCE_DESIGN_2026-04-12.md):自定义世界创作里“手填锚点 / AI 可改初稿 / 系统托管层”的平衡设计。 - [CUSTOM_WORLD_CREATOR_PURE_AGENT_COMPARISON_AND_CONVERSION_DESIGN_2026-04-12.md](./CUSTOM_WORLD_CREATOR_PURE_AGENT_COMPARISON_AND_CONVERSION_DESIGN_2026-04-12.md):纯 Agent 式创作工具与结构化工作台方案的优缺点对比,以及转型设计。 diff --git a/docs/technical/CHILD_MOTION_DEMO_WARMUP_IMPLEMENTATION_SPEC_2026-05-09.md b/docs/technical/CHILD_MOTION_DEMO_WARMUP_IMPLEMENTATION_SPEC_2026-05-09.md new file mode 100644 index 00000000..82213996 --- /dev/null +++ b/docs/technical/CHILD_MOTION_DEMO_WARMUP_IMPLEMENTATION_SPEC_2026-05-09.md @@ -0,0 +1,602 @@ +# 儿童动作识别互动玩法 Demo 热身关开发规格文档 + +> 日期:2026-05-09 +> 关联设计文档:[CHILD_MOTION_DEMO_WARMUP_LEVEL_DESIGN_2026-05-09.md](../design/CHILD_MOTION_DEMO_WARMUP_LEVEL_DESIGN_2026-05-09.md) +> 适用范围:儿童动作识别互动玩法 Demo 固定启动热身关 +> 文档性质:开发落地规格 +> 说明:本文只将已确认的热身关设计内容拆解为工程可执行规格,不新增未确认的玩法、文案或视觉设计。 + +## 1. 开发目标 + +热身关作为 Demo 启动后的固定流程,需要完成以下开发目标: + +1. 调用摄像头并识别用户和环境。 +2. 使用横屏比例展示热身关。 +3. 在屏幕中央地面生成绿色圆环,引导用户到达建议位置。 +4. 将用户实际位置生成角色剪影。 +5. 只对摄像头背景做虚化处理,表达隐私保护、屏蔽环境干扰,并营造空间感。 +6. 按固定步骤完成站位、招手、左右移动、挥动左右手、原地跳跃检测。 +7. 记录用户左右移动距离、挥动手臂空间和跳跃空间。 +8. 将记录结果仅保存在当前 Demo 体验会话内。 +9. 后续关卡使用热身记录的边界进行安全提醒和暂停恢复。 +10. 热身结束后进入关卡选择。 + +## 2. 非目标范围 + +热身关当前不包含以下内容: + +1. 不接入创作模块。 +2. 不作为可配置玩法模板提供给创作者。 +3. 不允许跳过步骤。 +4. 不允许系统自动进入下一步。 +5. 不设置动作检测最长等待时间。 +6. 不做特定用户识别。 +7. 不跨会话保存左右空间边界、手臂挥动空间和跳跃空间。 +8. 不对手部细节进行识别,只对肢体进行区分。 + +## 3. 运行入口与流向 + +### 3.1 入口 + +用户进入 Demo 后,先进入热身关。 + +### 3.2 出口 + +用户完成热身关所有步骤后,进入关卡选择。 + +### 3.3 固定流程顺序 + +热身关必须按照以下顺序执行: + +```text +进入热身关 +↓ +到达中央绿色圆环并保持 2 秒 +↓ +招手 / 摆手 +↓ +热身说明 +↓ +向左一步,到达左侧绿色圆环并保持 2 秒 +↓ +回到中间,到达中央绿色圆环并保持 2 秒 +↓ +向右一步,到达右侧绿色圆环并保持 2 秒 +↓ +回到中间,到达中央绿色圆环并保持 2 秒 +↓ +挥动左手 +↓ +挥动右手 +↓ +原地跳一下 +↓ +播放热身结束特效和结束语音 +↓ +进入关卡选择 +``` + +## 4. 页面基础表现规格 + +### 4.1 横屏比例 + +热身关需要使用横屏比例制作和展示,适用于电视屏幕、电脑屏幕等环境。 + +### 4.2 摄像头画面处理 + +用户进入热身关时调用摄像头。 + +摄像头画面处理要求: + +1. 识别用户和环境。 +2. 将用户实际位置生成角色剪影。 +3. 只对摄像头背景做虚化处理。 +4. 用户角色剪影用于表达用户在画面中的实际位置。 +5. 背景虚化用于表达对用户隐私的保护、屏蔽周围环境干扰,并营造空间感。 + +### 4.3 绿色圆环 + +绿色圆环用于指引用户到达指定位置。 + +绿色圆环出现位置包括: + +1. 屏幕中央位置的地面。 +2. 屏幕中心向左一个身位,约半米的地面位置。 +3. 屏幕中心向右一个身位,约半米的地面位置。 + +“约半米”技术上以角色剪影移动距离为准,后续根据体验调校。 + +### 4.4 绿色圆环选中状态 + +用户到达绿色圆环后,绿色圆环进入 2 秒选中状态。 + +用户需要在绿色圆环内保持 2 秒,才算完成该位置检测。 + +## 5. 通用交互规则 + +### 5.1 不允许跳过 + +每个步骤都必须由用户完成。 + +系统不提供跳过,也不自动进入下一步。 + +### 5.2 引导动画规则 + +每个动作等待 3 秒后可以播放对应引导动画。 + +当前不设置最长等待时间。 + +### 5.3 手势检测规则 + +招手 / 摆手、挥动左手、挥动右手三类动作需要有动作区分。 + +检测只区分肢体,不识别手部细节。 + +### 5.4 手势引导规则 + +挥动哪只手,就使用对应手的引导。 + +## 6. 状态机规格 + +### 6.1 状态列表 + +热身关至少需要支持以下流程状态: + +| 状态 ID | 状态名称 | 进入条件 | 完成条件 | 下一状态 | +|---|---|---|---|---| +| warmup_enter | 进入热身关 | 用户进入 Demo | 摄像头调用并展示中央绿色圆环 | center_arrive | +| center_arrive | 到达中央圆环 | 中央绿色圆环出现 | 用户到达中央圆环并保持 2 秒 | wave_greeting | +| wave_greeting | 招手教学 | 中央圆环完成并播放圆圈消失特效 | 用户完成招手 / 摆手 | warmup_intro | +| warmup_intro | 热身说明 | 招手 / 摆手完成 | 播放热身说明文案与语音 | move_left | +| move_left | 向左一步 | 热身说明完成 | 用户到达左侧圆环并保持 2 秒 | return_center_1 | +| return_center_1 | 回到中间(一) | 向左一步完成 | 用户到达中央圆环并保持 2 秒 | move_right | +| move_right | 向右一步 | 回到中间(一)完成 | 用户到达右侧圆环并保持 2 秒 | return_center_2 | +| return_center_2 | 回到中间(二) | 向右一步完成 | 用户到达中央圆环并保持 2 秒 | wave_left_hand | +| wave_left_hand | 挥动左手 | 回到中间(二)完成 | 用户完成挥动左手 | wave_right_hand | +| wave_right_hand | 挥动右手 | 挥动左手完成 | 用户完成挥动右手 | jump_once | +| jump_once | 原地跳一下 | 挥动右手完成 | 用户完成原地跳一下 | warmup_finish | +| warmup_finish | 热身结束 | 原地跳一下完成 | 播放热身结束特效和结束语音 | level_select | +| level_select | 关卡选择 | 热身结束 | 进入关卡选择 | - | + +### 6.2 状态推进约束 + +1. 状态必须按顺序推进。 +2. 用户未完成当前状态检测目标时,不进入下一状态。 +3. 位置类状态必须满足“到达绿色圆环并保持 2 秒”。 +4. 动作类状态没有最长等待时间。 +5. 动作类状态等待 3 秒后可以播放对应引导动画。 + +## 7. 分步骤开发规格 + +### 7.1 进入热身关 + +#### 展示内容 + +- 调用摄像头。 +- 识别用户和环境。 +- 屏幕中央地面显示绿色圆环。 +- 用户实际位置显示为角色剪影。 +- 只对摄像头背景做虚化。 + +#### 文案与语音 + +```text +欢迎你,小朋友,见到你真开心 +请你来到圆圈这里和我打个招呼吧 +``` + +#### 检测目标 + +用户到达中央绿色圆环并保持 2 秒。 + +#### 完成反馈 + +播放圆圈消失特效。 + +--- + +### 7.2 招手教学 + +#### 展示内容 + +播放招手的手势引导。 + +用户进入该步骤 3 秒仍未完成动作时,可以播放引导动画。 + +#### 检测目标 + +用户完成招手 / 摆手手势。 + +#### 完成后 + +进入热身说明。 + +--- + +### 7.3 热身说明 + +#### 文案与语音 + +```text +你好呀小朋友,为了你玩的安全和开心,先来和我一起热个身吧 +``` + +#### 完成后 + +进入“向左一步”。 + +--- + +### 7.4 向左一步 + +#### 展示内容 + +屏幕中心向左一个身位,约半米的地面位置出现新的绿色圆圈。 + +#### 文案与语音 + +```text +向左一步 +``` + +#### 检测目标 + +用户到达左侧绿色圆环并保持 2 秒。 + +#### 完成反馈 + +```text +真棒 +``` + +#### 数据记录 + +记录本次向左移动距离,作为后续关卡中的左侧空间边界参考。 + +--- + +### 7.5 回到中间来(一) + +#### 展示内容 + +场地中心位置出现绿色圆圈。 + +#### 文案与语音 + +```text +回到中间来 +``` + +#### 检测目标 + +用户到达中央绿色圆环并保持 2 秒。 + +#### 完成反馈 + +```text +真棒 +``` + +--- + +### 7.6 向右一步 + +#### 展示内容 + +屏幕中心向右一个身位,约半米的地面位置出现新的绿色圆圈。 + +#### 文案与语音 + +```text +向右一步 +``` + +#### 检测目标 + +用户到达右侧绿色圆环并保持 2 秒。 + +#### 完成反馈 + +```text +真棒 +``` + +#### 数据记录 + +记录本次向右移动距离,作为后续关卡中的右侧空间边界参考。 + +--- + +### 7.7 回到中间来(二) + +#### 展示内容 + +场地中心位置出现绿色圆圈。 + +#### 文案与语音 + +```text +回到中间来 +``` + +#### 检测目标 + +用户到达中央绿色圆环并保持 2 秒。 + +#### 完成反馈 + +```text +真棒 +``` + +--- + +### 7.8 挥动左手 + +#### 展示内容 + +播放伸展手臂挥动左手的手势引导。 + +用户进入该步骤 3 秒仍未完成动作时,可以播放引导动画。 + +#### 文案与语音 + +```text +挥动左手 +``` + +#### 检测目标 + +用户完成挥动左手。 + +#### 完成反馈 + +```text +真棒 +``` + +#### 数据记录 + +记录用户挥动左手的空间,保存为该用户对应的行为坐标。 + +--- + +### 7.9 挥动右手 + +#### 展示内容 + +播放伸展手臂挥动右手的手势引导。 + +用户进入该步骤 3 秒仍未完成动作时,可以播放引导动画。 + +#### 文案与语音 + +```text +挥动右手 +``` + +#### 检测目标 + +用户完成挥动右手。 + +#### 完成反馈 + +```text +真棒 +``` + +#### 数据记录 + +记录用户挥动右手的空间,保存为该用户对应的行为坐标。 + +--- + +### 7.10 原地跳一下 + +#### 展示内容 + +播放跳跃姿势引导。 + +用户进入该步骤 3 秒仍未完成动作时,可以播放引导动画。 + +#### 文案与语音 + +```text +原地跳一下 +``` + +#### 检测目标 + +用户完成原地跳一下。 + +#### 数据记录 + +记录用户跳跃空间,保存为该用户对应的行为坐标。 + +#### 完成反馈 + +播放热身结束特效、上浮字幕和语音: + +```text +真厉害,你是我见过最聪明的小朋友 +别走开,现在开始我们的游戏吧 +``` + +#### 完成后 + +进入关卡选择。 + +## 8. 当前 Demo 体验会话数据 + +### 8.1 保存范围 + +以下数据仅在当前 Demo 体验会话内保存: + +1. 左侧空间边界。 +2. 右侧空间边界。 +3. 左手挥动空间。 +4. 右手挥动空间。 +5. 跳跃空间。 + +### 8.2 当前 Demo 体验会话定义 + +“当前 Demo 体验会话”指用户本次打开并体验 Demo 的过程。 + +当用户关闭 Demo、刷新页面、退出当前体验流程、重新进入 Demo,或更换设备后,系统不再沿用上一次热身记录的数据,需要重新完成热身关并重新记录。 + +### 8.3 仅会话内保存原因 + +采用仅当前 Demo 体验会话内保存的原因: + +1. 每名用户的身高、体型、动作幅度不同,安全边界和行为坐标会发生变化。 +2. 当前 Demo 不做特定用户识别,无法确认下一次体验的是否仍是同一名用户。 +3. 用户所处的体验环境可能变化,包括房间大小、摄像头位置、屏幕位置和站立距离。 +4. 为保证安全,每次体验都需要重新对环境和距离进行安全检查。 + +## 9. 后续关卡安全边界使用规则 + +后续关卡需要使用热身关记录的左右空间边界进行安全判断。 + +### 9.1 覆盖安全边界线 + +当用户身体主体覆盖安全边界线时,对应侧屏幕边缘出现虚影提醒。 + +### 9.2 超出安全边界线 + +当用户身体主体超出安全边界线时: + +1. 关卡内容暂停。 +2. 屏幕虚化。 +3. 屏幕中央地面出现绿色圆圈。 +4. 屏幕提示文案: + +```text +小朋友,要注意安全哦 +``` + +5. 用户需要回到中心绿色圆圈并保持 2 秒后,才能继续游戏内容。 + +## 10. 识别能力清单 + +热身关需要接入或实现以下识别能力: + +1. 摄像头调用。 +2. 用户识别。 +3. 环境识别。 +4. 用户实际位置识别。 +5. 用户是否到达中央绿色圆环位置。 +6. 用户是否在绿色圆环内持续保持 2 秒。 +7. 用户是否到达左侧约半米绿色圆环位置。 +8. 用户是否到达右侧约半米绿色圆环位置。 +9. 招手 / 摆手手势识别。 +10. 挥动左手识别。 +11. 挥动右手识别。 +12. 原地跳跃姿势识别。 +13. 用户左右移动距离记录。 +14. 用户挥动手臂空间记录。 +15. 用户跳跃空间记录。 +16. 用户身体主体覆盖安全边界线判断。 +17. 用户身体主体超出安全边界线判断。 +18. 用户回到中心绿色圆环并保持 2 秒判断。 + +## 11. 表现能力清单 + +热身关需要实现以下表现能力: + +1. 横屏比例显示。 +2. 摄像头背景虚化。 +3. 用户位置生成角色剪影。 +4. 屏幕中央地面绿色圆环。 +5. 左侧约半米地面绿色圆环。 +6. 右侧约半米地面绿色圆环。 +7. 绿色圆环 2 秒选中状态。 +8. 圆圈消失特效。 +9. 招手手势引导。 +10. 伸展手臂挥动左手手势引导。 +11. 伸展手臂挥动右手手势引导。 +12. 跳跃姿势引导。 +13. 热身结束特效。 +14. 上浮字幕。 +15. 语音播报。 +16. 安全边界虚影提醒。 +17. 关卡暂停时屏幕虚化。 +18. 关卡暂停时屏幕中央地面绿色圆圈。 +19. 关卡暂停提示文案。 + +## 12. 固定文案与语音清单 + +以下文案需要作为屏幕中上方浮现文字,并同步语音播报。 + +```text +欢迎你,小朋友,见到你真开心 +请你来到圆圈这里和我打个招呼吧 +你好呀小朋友,为了你玩的安全和开心,先来和我一起热个身吧 +向左一步 +真棒 +回到中间来 +真棒 +向右一步 +真棒 +回到中间来 +真棒 +挥动左手 +真棒 +挥动右手 +真棒 +原地跳一下 +真厉害,你是我见过最聪明的小朋友 +别走开,现在开始我们的游戏吧 +小朋友,要注意安全哦 +``` + +## 13. 开发验收标准 + +### 13.1 热身流程验收 + +1. 用户进入 Demo 后先进入热身关。 +2. 热身关使用横屏比例展示。 +3. 摄像头被调用。 +4. 用户位置显示为角色剪影。 +5. 摄像头背景被虚化。 +6. 中央、左侧、右侧绿色圆环可以按流程出现。 +7. 用户到达每个绿色圆环后,需要保持 2 秒才算完成。 +8. 每个步骤未完成时不能跳过,也不能自动进入下一步。 +9. 动作等待 3 秒后可以播放对应引导动画。 +10. 所有固定文案可以展示并语音播报。 +11. 完成全部热身步骤后进入关卡选择。 + +### 13.2 数据记录验收 + +1. 完成向左一步后,可以记录左侧空间边界。 +2. 完成向右一步后,可以记录右侧空间边界。 +3. 完成挥动左手后,可以记录左手挥动空间。 +4. 完成挥动右手后,可以记录右手挥动空间。 +5. 完成原地跳一下后,可以记录跳跃空间。 +6. 以上数据仅在当前 Demo 体验会话内保存。 +7. 重新进入 Demo 后,不沿用上一次热身记录,需要重新完成热身关。 + +### 13.3 后续关卡安全边界验收 + +1. 用户身体主体覆盖安全边界线时,对应侧屏幕边缘出现虚影提醒。 +2. 用户身体主体超出安全边界线时,关卡内容暂停。 +3. 关卡暂停时,屏幕虚化。 +4. 关卡暂停时,屏幕中央地面出现绿色圆圈。 +5. 关卡暂停时,展示提示文案: + +```text +小朋友,要注意安全哦 +``` + +6. 用户回到中心绿色圆圈并保持 2 秒后,游戏内容继续。 + +## 14. 不确定项与补充确认 + +当前需求已明确本文所需的热身关开发规格。 + +以下内容未在当前文档中强行定义,后续如进入工程实现阶段,可再补充对应技术细节: + +1. 具体接入的动作识别 SDK 或硬件接口。 +2. 角色剪影、圆环、虚影提醒、特效、手势引导动画的具体资源文件命名。 +3. 当前 Demo 体验会话数据在前端状态、运行时上下文或其他容器中的具体存放位置。 +4. 绿色圆环、角色剪影、安全边界在线性空间或屏幕坐标中的具体计算公式。 +5. 关卡选择页的具体页面结构。 diff --git a/docs/technical/README.md b/docs/technical/README.md index 0c9e7af0..3c2beaeb 100644 --- a/docs/technical/README.md +++ b/docs/technical/README.md @@ -4,6 +4,7 @@ ## 文档列表 +- [CHILD_MOTION_DEMO_WARMUP_IMPLEMENTATION_SPEC_2026-05-09.md](./CHILD_MOTION_DEMO_WARMUP_IMPLEMENTATION_SPEC_2026-05-09.md):冻结儿童动作识别互动玩法 Demo 固定热身关的开发落地规格,覆盖横屏展示、摄像头背景虚化、角色剪影、绿色圆环 2 秒保持、动作教学、当前会话内空间边界记录和后续关卡安全暂停规则。 - [RUST_WORKSPACE_DEPENDENCY_CONSOLIDATION_2026-05-07.md](./RUST_WORKSPACE_DEPENDENCY_CONSOLIDATION_2026-05-07.md):记录 `server-rs` Cargo 依赖集中配置口径,第三方版本和 workspace 内部 crate path 统一维护在根 `server-rs/Cargo.toml`,成员 crate 只保留 feature/optional 差异。 - [VECTOR_ENGINE_GPT_IMAGE_2_GENERATION_2026-05-09.md](./VECTOR_ENGINE_GPT_IMAGE_2_GENERATION_2026-05-09.md):记录 GPT-image-2 图片生成从 APIMart 迁移到 VectorEngine `gpt-image-2-all` 的接口、环境变量、尺寸映射、错误口径和验收命令。 - [SPACETIMEDB_PUBLISH_SCCACHE_FALLBACK_2026-05-09.md](./SPACETIMEDB_PUBLISH_SCCACHE_FALLBACK_2026-05-09.md):记录本地 `spacetime publish` 被 sccache wrapper 通信异常阻断时的根因、`dev-rust-stack` 自动降级策略和手动排障命令。