spec.md 3.3 KB

新增需求

需求:提供炫光技能特效组件

系统必须提供一个 radiantSwirlSkillComponent,在 TresJS canvas 内通过单一平面和自定义 shader 渲染从“散射光叶”到“完整能量环 + 核心光球”的连续演进效果。

场景:默认预览模式下自动展示四阶段演进

  • 当 用户以默认参数预览该组件
  • 则 组件必须在无外部驱动的前提下,使用内部时间循环把 progress 从 0 平滑推进到 1,并重复循环
  • 并且 可以在视觉上区分出参考图对应的四个阶段(散射 → 新月弧 → 螺旋环 → 完整环 + 核心光球)

场景:业务模式下由外部驱动进度

  • 当 外部将 autoAnimate 关闭并传入 progress
  • 则 组件必须按传入的 0 到 1 值刷新视觉形态,不再自动循环

需求:动画必须基于 shader 实现

组件的动态效果必须由 shader 的时间 uniform 与 progress uniform 推导得出,不得用 sprite 序列帧、逐帧贴图或 DOM 动画实现。

场景:查看组件实现

  • 当 组件源码和 shader 文件被检视
  • 则 动态部分必须来自 panel.frag 内基于 uTime / uProgress 的计算
  • 并且 shader 源码必须外置在 src/shader/radiantSwirlSkillComponent/,不内联在 .vue 文件中

需求:暴露动画速度与颜色等调参参数

组件必须通过 src/dcsConfig.ts 暴露可在配置面板上直接调节的参数,至少包括动画速度和颜色。

场景:调节动画速度

  • 当 用户在配置面板调节 animationSpeed
  • 则 自动循环模式下的阶段演进必须按该速度倍率变快或变慢

场景:调节动画颜色

  • 当 用户在配置面板调节 baseColor、glowColor、highlightColor、coreColor
  • 则 组件显示色必须实时反映,不需要重新挂载

场景:调节形态参数

  • 当 用户调节 radius、bladeCount、swirlIntensity、noiseScale、coreIntensity、sparkleIntensity、opacity
  • 则 对应的可视范围、叶片条数、螺旋弯曲、纹理细节、核心光球强度、火花与整体透明度必须实时更新

需求:排除参考图中的文字与非特效部分

组件实现必须只复刻参考图中的能量特效视觉,不得把参考图左上角的“攻击敌人”等说明文字或技能名文字纳入实现。

场景:查看最终画面

  • 当 组件以默认参数渲染
  • 则 画面中不能出现任何技能名、说明性文字或非程序化纹理图形

需求:安全处理异常输入

组件必须对异常数值和异常颜色字符串做降级处理,保证 shader 不会因输入错误而黑屏。

场景:传入异常数值或非法颜色

  • 当 传入的数值为 NaN、Infinity、越界值,或颜色字符串非法
  • 则 组件必须 clamp 到安全范围或回落到默认颜色,画面必须持续渲染

需求:通过 dcsConfig 注册到动态组件服务

组件必须通过 src/dcsConfig.ts 完成注册,包含中文名、默认值、默认 Object3D 与配置面板 schema。

场景:动态组件服务加载配置

  • 当 服务读取 src/dcsConfig.ts
  • 则 必须能发现 radiantSwirlSkillComponent,并读取它的默认参数与调参 schema