Files
ShowenV2/configs
pulsareonbot 39fa2a135a feat(Live2D): 集成 Cubism Web SDK 实现二次元角色渲染
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)
2026-07-07 11:56:29 +08:00
..

configs/ — 状态机配置

JSON 格式的状态机配置文件,定义视频播放场景和状态转换规则。

文件

文件 说明
dog_state_machine.json 狗宠物的场景/动画状态机
cat_state_machine.json 猫宠物的场景/动画状态机

配置结构

每个 JSON 配置定义:

  • 场景 (scenes): 包含多个动画状态
  • 状态 (states): 绑定视频文件,定义播放行为
  • 转换 (transitions): 触发器驱动的状态跳转voice / button / sensor

VideoPluginStateMachine 模块解析和驱动。