## 新增需求 ### 需求:提供炫光技能特效组件 系统必须提供一个 `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