Skip to content

程序化动作系统

系统概览

程序化动作生成与调度系统(ADR-021)。负责 Idle(待机)和 Auto Dance(自动跳舞)的 VMD 生成调度、节拍联动检测、参数管理。VMD 生成器来自 @/motion-algos/procedural-motion, 本模块负责调度与参数管理。状态收口为模块内 ProcMotionController 类实例(不导出), 提供 disposeProcMotion() 一键清理。参数存储采用 per-motion 优先级策略。

核心职责

  • proc-motion-bridge.ts — 程序化 VMD 更新调度、节拍检测管理、参数读写、生命周期。

对外 API(节选)

  • updateProcMotion() — 异步更新程序化 VMD(核心调度入口,被 motion-pipeline 调用)。
  • setProcMotionState(state) / getProcMotionState() — 参数读写(per-motion 优先级)。
  • setProcMotionMode(mode) / setProcMotionIntensity(v) / setProcMotionSpeed(v) — 模式/强度/速度。
  • setProcMotionBoneToggle(cat, v) / setProcMotionBoneToggles(...) — 骨骼分类开关。
  • setProcMotionVpdApplyEnabled(v) / setProcMotionInterpOverride(v) — 高级参数。
  • setBpmQuantizeEnabled(v) / getBpmQuantizeEnabled() — BPM 量化开关。
  • setProcMotionEyeTrackingEnabled(v) / setProcMotionHeadTrackingEnabled(v) — 追踪开关。
  • activateGazeTracking() / setGazeLayerActive(active, intensity) — 视线追踪(ADR-071 迁移后保留)。
  • regenerateProcMotion(modelId?) — 重新生成程序化 VMD。
  • disposeProcMotion() — 清理全部状态并销毁单例。
  • isProcVmdActive() / getProcBeatDetector() / createProcBeatDetector() — 状态查询。

与其他子系统关系

  • VMD 生成器:@/motion-algos/procedural-motiongenerateIdleVmd / generateAutoDanceVmd / shouldAutoDance / shouldIdle)。
  • 节拍检测:@/motion-algos/beat-detector.BeatDetector
  • 感知激活:./perception.ts(ADR-071)。
  • 复合动画重建:./vmd-layers.rebuildCompositeAnimation
  • 管线注册:./motion-pipeline.ts(bone-override 层)。

不变量

  • 状态封装在类私有字段,外部不可直接访问。
  • disposeProcMotion() 后单例置 null,再次调用时重新创建。
  • 参数写入时同步到 activeMotion(若存在)和 fallback。