1. routes.rs 新增 GET /live2d/* 静态文件路由 - 从 source_dir/live2d/ 托管模型文件(.moc3/.model3.json/.png/.physics3.json) - 路径穿越防护(禁止 .. 段,canonicalize 校验在 base 内) 2. chat.html 引入 Live2D 渲染依赖 - PixiJS v6.5.10 + Cubism Core + pixi-live2d-display(CDN) - 支持 Cubism 2.1 和 4 全版本模型 3. chat.js 实现 Live2D 模型加载与渲染 - applyCharStrategy live2d 分支:初始化 PIXI.Application + canvas - loadLive2DModel:从 /live2d/<model_path> 加载模型,自动缩放居中 - 说话动效:对话期间 ParamMouthOpenY 正弦波开合(模拟说话) - 呼吸动效:ParamBreath 持续起伏 - destroyLive2D:切角色时清理 PIXI 资源 4. configs/live2d_anime.json 新建二次元角色"小雅" - character_type: live2d, render_type: live2d - live2d_model: haru/index.model3.json(Cubism 官方免费样例) - persona: 温柔二次元少女人设 - playlist 复用 dog 的视频作为占位(Live2D 模式下 Web 端显示 canvas)
configs/ — 状态机配置
JSON 格式的状态机配置文件,定义视频播放场景和状态转换规则。
文件
| 文件 | 说明 |
|---|---|
dog_state_machine.json |
狗宠物的场景/动画状态机 |
cat_state_machine.json |
猫宠物的场景/动画状态机 |
配置结构
每个 JSON 配置定义:
- 场景 (scenes): 包含多个动画状态
- 状态 (states): 绑定视频文件,定义播放行为
- 转换 (transitions): 触发器驱动的状态跳转(voice / button / sensor)
由 VideoPlugin 的 StateMachine 模块解析和驱动。