Files
FLESH/Plan.md
2025-04-21 20:08:05 +08:00

12 KiB
Raw Blame History

FLESH 插件开发计划

已完成工作

  1. 基础架构搭建

    • 创建插件基本结构
    • 设置必要的模块和依赖
    • 实现基本的编辑器集成
  2. 布尔切割工具实现

    • 基于 GeometryScripting 的布尔切割功能
    • 支持静态网格体切割
    • 支持骨骼网格体切割
    • 支持程序化网格体切割
    • 添加条件编译支持,确保在没有 GeometryScripting 的环境中也能编译
    • 实现 CreateCapMesh 方法,用于生成切割面网格
  3. 肢解系统基础功能

    • 肢解图编辑器
    • 肢解节点系统
    • 基本的物理响应
    • 简单的血液效果
    • 实现 DismembermentCompiler 和 DismembermentExecutor 类
  4. 修复了 FLESH 插件的编译问题

    • 为没有 GeometryScripting 的环境添加了条件编译支持
    • 修改了 FLESH.Build.cs 文件以检测 GeometryScripting 插件的可用性
    • 定义了 WITH_GEOMETRY_SCRIPTING 宏用于条件编译
    • 为不支持的环境实现了降级机制
  5. 恢复了基本的 GeometryScripting 功能

    • 实现了 BooleanCutTool 类框架
    • 添加了切割平面创建功能
    • 实现了静态网格体切割功能
    • 实现了骨骼网格体切割功能
    • 实现了程序化网格体切割功能
    • 为所有方法添加了条件编译支持
  6. 实现了 DismembermentCompiler 类

    • 添加了节点数据结构和执行顺序管理
    • 实现了 GetNodeData 方法用于获取节点信息
    • 创建了用于测试的占位编译逻辑
  7. 实现了 DismembermentExecutor 类

    • 添加了 Execute 方法用于协调肢解操作·
    • 实现了 ExecuteNode 方法用于单个节点执行
    • 添加了 ApplyCut 方法用于网格体切割操作
    • 实现了 SpawnBloodEffect 方法用于血液粒子效果
    • 添加了 ApplyPhysics 方法用于物理模拟
    • 实现了 SpawnOrgan 方法用于内部器官生成
    • 添加了 ApplyWoundEffect 方法用于伤口可视化
  8. 标准化了代码库

    • 将所有注释和日志消息转换为英文
    • 确保了文件间的一致编码风格
    • 为所有主要方法添加了全面的文档
  9. 实现了高级肢解系统组件

    • 创建了 DismembermentComponent 作为中心控制点
    • 实现了与其他系统的集成接口
    • 添加了简化的 API 用于执行肢解和创建伤口
  10. 实现了飞溅贴图系统 (SplatterMapSystem)

    • 基于参考图片中的技术,实现了多通道飞溅贴图
    • 支持深度、血液、瘀伤等多种伤口属性
    • 使用 UV 空间投影伤口贴花到角色身体
    • 实现了不同身体部位的独立贴图支持
  11. 实现了内部器官系统 (InternalOrganSystem)

    • 支持在切割处暴露内部器官
    • 可以创建程序化的肌肉和血管
    • 与骨骼系统集成,提供真实的内部结构
    • 实现了不同类型器官的管理和显示
  12. 增强了血液系统 (BloodSystem)

    • 实现了血液喷溅效果
    • 支持创建血池
    • 提供血液贴花功能
    • 与切割系统集成,实现真实的血液效果
  13. 实现了高级封盖网格生成方法

    • 添加了三角形扇形封盖方法
    • 实现了镶嵌式带位移的封盖方法
    • 支持多种封盖材质和纹理
  14. 改进了编辑器界面

    • 实现了骨骼树视图
    • 添加了3D视口
    • 实现了视口控制功能(重置相机、切换线框模式、显示骨骼)
    • 修复了编辑器模块的编译问题
    • 将所有编辑器UI文本和代码注释转换为英文
  15. 编辑器界面改进

    • 实现了参考图片中的编辑器界面布局
    • 添加了属性编辑面板
    • 实现了3D预览窗口
    • 修复了编辑器模块的编译问题
    • 将所有UI文本和代码注释转换为英文
  16. 实现了软体物理工具 (SoftBodyPhysicsTool)

    • 添加了物理约束创建功能
    • 实现了锚点约束系统
    • 添加了线链约束系统
    • 实现了四面体约束系统
    • 添加了平面约束系统
    • 实现了物理参数调整功能
  17. 实现了内脏节点系统 (VisceraNodeSystem)

    • 创建了节点工厂类简化节点创建流程
    • 实现了节点树结构用于管理内部器官
    • 添加了节点属性编辑功能
    • 实现了不同类型节点的创建和配置
    • 优化了节点树构建方法
  18. 解决了UE5.5.4兼容性问题

    • 修复了原生指针改为TObjectPtr的问题
    • 解决了枚举类使用问题将TEnumAsByte替换为直接使用enum class
    • 更新了Slate API调用适应UE5.5.4的新API
    • 修复了FindPathToWidget和PushMenu函数调用
  19. 修复了DismembermentSystem插件问题

    • 修复了BloodPool.h文件使其与BloodPool.cpp的实现匹配
    • 修复了DismembermentSystem.Build.cs中的重复引用
    • 修复了DamageElements.cpp中的头文件顺序
    • 添加了ECutTypesGroup命名空间的定义和实现
    • 整合了EDamageCut.cpp到DIEnums.cpp中
  20. 解决了FLESH编辑器崩溃问题

    • 修复了FFLESHEditor类的继承关系正确实现FEditorUndoClient接口
    • 完善了AnatomicalStructureBrush类添加错误处理和日志记录
    • 实现了缺失的方法如ApplyToSkeletalMesh和ApplyToStaticMesh
    • 添加了DismembermentEditor相关的Tab生成器和Widget
    • 增强了错误处理机制添加了try-catch块和详细的日志记录
    • 修复了GEditor->UnregisterForUndo(this)的调用问题
    • 添加了初始化检查,确保所有组件正确初始化

当前状态

  1. BooleanCutTool 类具有以下功能:

    • CutStaticMesh使用 GeometryScripting 切割静态网格体
    • CutSkeletalMesh支持骨骼特定目标的骨骼网格体切割
    • CutProceduralMesh具有动态几何体的程序化网格体切割
    • CreateCutPlaneMesh创建用于可视化的切割平面网格体
    • CreateCapMesh为切割面生成封盖网格体
    • CalculateIntersectionPoints计算切割的交点
    • CreateTriangleFanCapMesh创建三角形扇形封盖网格
    • CreateTessellatedCapMesh创建镶嵌式带位移的封盖网格
    • 所有方法都具有条件编译支持
  2. DismembermentComponent 类具有以下功能:

    • 作为所有系统的中心控制点
    • 提供简单的 API 用于执行肢解和创建伤口
    • 自动管理所有子系统BooleanCutTool、SplatterMapSystem、InternalOrganSystem、BloodSystem
    • 支持多层肢解和单层肢解
    • 提供伤口应用功能
  3. SplatterMapSystem 类具有以下功能:

    • 多通道飞溅贴图支持(深度、血液、瘀伤等)
    • 不同身体部位的独立贴图
    • UV 空间投影伤口贴花
    • 与切割系统集成
  4. InternalOrganSystem 类具有以下功能:

    • 不同类型器官的管理(肌肉、骨骼、内脏等)
    • 程序化肌肉和血管生成
    • 在切割处暴露内部器官
    • 与骨骼系统集成
  5. BloodSystem 类具有以下功能:

    • 血液喷溅效果
    • 血池创建
    • 血液贴花
    • 与切割系统集成
  6. SoftBodyPhysicsTool 类具有以下功能:

    • 创建不同类型的物理约束(锚点、线链、四面体、平面)
    • 管理软体物理参数(刚度、阻尼、迭代次数等)
    • 提供物理约束更新和清除功能
    • 与骨骼系统集成,支持查找最近的骨骼
  7. VisceraNodeSystem 具有以下功能:

    • 使用节点工厂简化节点创建过程
    • 支持多种节点类型(软体、锚点、线链、四面体、平面、时间、碰撞组)
    • 提供节点树结构用于管理内部器官
    • 支持节点属性编辑和配置
    • 构建复杂的内脏结构(肺、心脏、胃、肠等)
  8. 编译问题已解决:

    • 插件在没有 GeometryScripting 的环境中也能成功编译
    • 当功能不可用时,适当的警告日志提供反馈
    • 当高级功能被禁用时,基本的降级机制返回简化的网格体副本
    • 修复了FLESHEditor和FLESHEditorModule中的编译错误
    • 解决了FBoneTreeItem结构的问题添加了DisplayName成员和TSharedFromThis支持
    • 修复了视口相关的编译错误正确处理了FSceneViewport到ISlateViewport的转换
    • 解决了UE5.5.4兼容性问题包括TObjectPtr、enum class和Slate API更新
  9. 编辑器界面改进:

    • 实现了骨骼树视图,显示角色的骨骼层次结构
    • 添加了3D视口用于预览模型和切割效果
    • 实现了视口控制功能(重置相机、切换线框模式、显示骨骼)
    • 将所有UI文本和代码注释转换为英文提高国际化支持
    • 修复了编辑器模块的委托绑定问题
  10. FLESH编辑器稳定性提升

    • 添加了详细的错误处理和日志记录机制
    • 实现了DismembermentEditor相关的功能包括Layer System和Physics Settings
    • 修复了继承关系问题正确实现了FEditorUndoClient接口
    • 添加了初始化检查,确保所有组件正确初始化
    • 完善了AnatomicalStructureBrush类实现了基本功能框架
    • 增强了异常处理添加了try-catch块捕获潜在错误

下一步计划

  1. 增强 BooleanCutTool 实现

    • 优化切割算法以提高性能
    • 添加更多切割参数(厚度、平滑度等)
    • 改进切割材质支持,实现真实的切割面
    • 添加对平面之外更复杂切割形状的支持
    • 实现 GPU 加速的布尔切割算法
  2. 扩展 DismembermentComponent 功能

    • 添加更多自定义选项
    • 实现预设系统,允许保存和加载常用设置
    • 添加事件系统,用于响应肢解操作
    • 改进与物理系统的集成
  3. 增强 SplatterMapSystem 功能

    • 添加更多伤口类型和效果
    • 实现伤口随时间演变的系统
    • 改进伤口贴图的质量和性能
    • 添加更多自定义选项
  4. 扩展 InternalOrganSystem 功能

    • 添加更多器官类型和变体
    • 实现更真实的内部结构
    • 添加器官损伤和变形系统
    • 改进与物理系统的集成
  5. 增强 BloodSystem 功能

    • 改进血液效果的质量和性能
    • 添加更多血液类型和效果
    • 实现血液与环境的交互
    • 添加血液流动和凝固系统
  6. 扩展 SoftBodyPhysicsTool 功能

    • 添加更多物理约束类型
    • 改进物理模拟的质量和性能
    • 实现更复杂的软体结构
    • 添加更多自定义选项
  7. 增强 VisceraNodeSystem 功能

    • 添加更多节点类型和功能
    • 改进节点编辑器界面
    • 实现节点预设系统
    • 添加节点可视化工具
  8. 编辑器工具改进

    • 创建可视化编辑工具,用于设置切割参数
    • 添加预览功能,实时显示切割效果
    • 实现预设管理系统
    • 添加调试可视化工具
    • 改进用户界面,提高易用性
  9. 性能优化

    • 分析和优化布尔运算以实现实时性能
    • 为肢解效果实现 LOD 系统
    • 为常用操作添加缓存机制
    • 优化资源加载和卸载
    • 实现多线程处理以提高性能
  10. 引擎兼容性和稳定性

    • 确保与未来UE版本的兼容性
    • 添加更多单元测试和集成测试
    • 改进错误处理和恢复机制
    • 优化内存使用和资源管理
    • 提高插件在不同平台上的稳定性
  11. 文档和示例

    • 创建全面的API文档
    • 添加更多示例和教程
    • 制作视频演示
    • 提供最佳实践指南
  12. 完善FLESH编辑器功能

    • 实现完整的Layer System功能支持多层解剖结构编辑
    • 完善Physics Settings界面提供更多物理参数调整选项
    • 实现实时预览功能,在编辑器中直接查看效果
    • 添加更多工具栏功能,简化常用操作
    • 实现撤销/重做功能的完整支持
    • 添加更多错误处理和用户反馈机制
  13. 集成测试和性能优化

    • 创建自动化测试套件,确保功能稳定性
    • 进行性能分析,找出瓶颈并优化
    • 实现批量测试工具,验证不同场景下的功能
    • 添加性能监控工具,实时显示关键指标
    • 优化内存使用,减少资源占用