proposal.md 2.6 KB

为什么要做

当前组件服务里还没有一个可直接放入场景、可预览、可发布的球形能量盾组件。参考的开源项目 flow-shield-effect 已经说明了这个效果的核心其实是自包含的:一个球体 mesh、一套自定义 shield shader,以及一个基于射线命中点触发的可选冲击波效果。要把这个能力接入当前仓库,需要把它从 React Three Fiber 迁移到 Vue 3 + TresJS,并且把范围严格收敛到“组件本体”。

本次变更

  • 新增一个 superEnergyShieldComponent 动态组件,只迁移 src/components/ForceShield 的盾体本体效果到当前仓库的 Vue 3 + TresJS 技术栈。
  • 明确迁移边界,只保留以下内容:
    • 球形护盾外壳
    • 流动六边形纹理
    • 菲涅耳边缘
    • 噪声破碎边缘
    • 可选的命中冲击波逻辑
  • 明确不迁移以下内容:
    • transform 控件
    • 外部场景搭建
    • 相机和 demo 辅助逻辑
    • Leva 调参面板
    • reveal/debug 一类演示控制
    • 任何后期处理链路
  • 通过 src/dcsConfig.ts 仅暴露护盾自身参数,包括表面外观、菲涅耳、噪声、流动和冲击波相关配置;组件尺寸不新增独立参数,后续由宿主场景或编辑器外部缩放处理。
  • 为后续编辑器点选兼容性预留空间:命中冲击波的设计不能依赖组件内部强绑定的 click 捕获逻辑,可选自点击命中行为必须能关闭。
  • shader 源码放到 src/shader/superEnergyShieldComponent/ 下,并通过 src/dcsConfig.ts 接入,不修改通用预览入口视图,除非后面发现真实的基础设施问题。

能力变化

新增能力

  • super-energy-shield-component:在当前基于 TresJS 的动态组件服务中提供一个可配置的球形能量盾效果组件。

修改能力

  • 无。

影响范围

  • 影响代码:
    • src/components/:新增 Vue/Tres 组件实现
    • src/shader/:新增组件专属 shader 文件
    • src/dcsConfig.ts:新增组件注册、默认参数和配置面板 schema
    • public/preview/:如果补充独立预览图,会增加对应资源
  • API 影响:
    • 新增一组用于控制护盾外观、运动和冲击波的组件 props,不新增组件级尺寸参数
  • 依赖影响:
    • 复用现有 vue、three、@tresjs/core 以及仓库现有 shader 加载能力,不新增渲染框架或后期处理依赖
  • 系统影响:
    • 只影响前端三维渲染层和组件注册表,不涉及后端改动
  • 回滚策略:
    • 先从 src/dcsConfig.ts 移除组件注册
    • 再回退组件和 shader 文件
    • 最后回退新增的预览资源或元数据