12 KiB
FLESH 插件开发计划
已完成工作
-
基础架构搭建
- 创建插件基本结构
- 设置必要的模块和依赖
- 实现基本的编辑器集成
-
布尔切割工具实现
- 基于 GeometryScripting 的布尔切割功能
- 支持静态网格体切割
- 支持骨骼网格体切割
- 支持程序化网格体切割
- 添加条件编译支持,确保在没有 GeometryScripting 的环境中也能编译
- 实现 CreateCapMesh 方法,用于生成切割面网格
-
肢解系统基础功能
- 肢解图编辑器
- 肢解节点系统
- 基本的物理响应
- 简单的血液效果
- 实现 DismembermentCompiler 和 DismembermentExecutor 类
-
修复了 FLESH 插件的编译问题
- 为没有 GeometryScripting 的环境添加了条件编译支持
- 修改了 FLESH.Build.cs 文件以检测 GeometryScripting 插件的可用性
- 定义了 WITH_GEOMETRY_SCRIPTING 宏用于条件编译
- 为不支持的环境实现了降级机制
-
恢复了基本的 GeometryScripting 功能
- 实现了 BooleanCutTool 类框架
- 添加了切割平面创建功能
- 实现了静态网格体切割功能
- 实现了骨骼网格体切割功能
- 实现了程序化网格体切割功能
- 为所有方法添加了条件编译支持
-
实现了 DismembermentCompiler 类
- 添加了节点数据结构和执行顺序管理
- 实现了 GetNodeData 方法用于获取节点信息
- 创建了用于测试的占位编译逻辑
-
实现了 DismembermentExecutor 类
- 添加了 Execute 方法用于协调肢解操作·
- 实现了 ExecuteNode 方法用于单个节点执行
- 添加了 ApplyCut 方法用于网格体切割操作
- 实现了 SpawnBloodEffect 方法用于血液粒子效果
- 添加了 ApplyPhysics 方法用于物理模拟
- 实现了 SpawnOrgan 方法用于内部器官生成
- 添加了 ApplyWoundEffect 方法用于伤口可视化
-
标准化了代码库
- 将所有注释和日志消息转换为英文
- 确保了文件间的一致编码风格
- 为所有主要方法添加了全面的文档
-
实现了高级肢解系统组件
- 创建了 DismembermentComponent 作为中心控制点
- 实现了与其他系统的集成接口
- 添加了简化的 API 用于执行肢解和创建伤口
-
实现了飞溅贴图系统 (SplatterMapSystem)
- 基于参考图片中的技术,实现了多通道飞溅贴图
- 支持深度、血液、瘀伤等多种伤口属性
- 使用 UV 空间投影伤口贴花到角色身体
- 实现了不同身体部位的独立贴图支持
-
实现了内部器官系统 (InternalOrganSystem)
- 支持在切割处暴露内部器官
- 可以创建程序化的肌肉和血管
- 与骨骼系统集成,提供真实的内部结构
- 实现了不同类型器官的管理和显示
-
增强了血液系统 (BloodSystem)
- 实现了血液喷溅效果
- 支持创建血池
- 提供血液贴花功能
- 与切割系统集成,实现真实的血液效果
-
实现了高级封盖网格生成方法
- 添加了三角形扇形封盖方法
- 实现了镶嵌式带位移的封盖方法
- 支持多种封盖材质和纹理
-
改进了编辑器界面
- 实现了骨骼树视图
- 添加了3D视口
- 实现了视口控制功能(重置相机、切换线框模式、显示骨骼)
- 修复了编辑器模块的编译问题
- 将所有编辑器UI文本和代码注释转换为英文
-
编辑器界面改进
- 实现了参考图片中的编辑器界面布局
- 添加了属性编辑面板
- 实现了3D预览窗口
- 修复了编辑器模块的编译问题
- 将所有UI文本和代码注释转换为英文
-
实现了软体物理工具 (SoftBodyPhysicsTool)
- 添加了物理约束创建功能
- 实现了锚点约束系统
- 添加了线链约束系统
- 实现了四面体约束系统
- 添加了平面约束系统
- 实现了物理参数调整功能
-
实现了内脏节点系统 (VisceraNodeSystem)
- 创建了节点工厂类简化节点创建流程
- 实现了节点树结构用于管理内部器官
- 添加了节点属性编辑功能
- 实现了不同类型节点的创建和配置
- 优化了节点树构建方法
-
解决了UE5.5.4兼容性问题
- 修复了原生指针改为TObjectPtr的问题
- 解决了枚举类使用问题,将TEnumAsByte替换为直接使用enum class
- 更新了Slate API调用,适应UE5.5.4的新API
- 修复了FindPathToWidget和PushMenu函数调用
-
修复了DismembermentSystem插件问题
- 修复了BloodPool.h文件,使其与BloodPool.cpp的实现匹配
- 修复了DismembermentSystem.Build.cs中的重复引用
- 修复了DamageElements.cpp中的头文件顺序
- 添加了ECutTypesGroup命名空间的定义和实现
- 整合了EDamageCut.cpp到DIEnums.cpp中
-
解决了FLESH编辑器崩溃问题
- 修复了FFLESHEditor类的继承关系,正确实现FEditorUndoClient接口
- 完善了AnatomicalStructureBrush类,添加错误处理和日志记录
- 实现了缺失的方法,如ApplyToSkeletalMesh和ApplyToStaticMesh
- 添加了DismembermentEditor相关的Tab生成器和Widget
- 增强了错误处理机制,添加了try-catch块和详细的日志记录
- 修复了GEditor->UnregisterForUndo(this)的调用问题
- 添加了初始化检查,确保所有组件正确初始化
当前状态
-
BooleanCutTool 类具有以下功能:
- CutStaticMesh:使用 GeometryScripting 切割静态网格体
- CutSkeletalMesh:支持骨骼特定目标的骨骼网格体切割
- CutProceduralMesh:具有动态几何体的程序化网格体切割
- CreateCutPlaneMesh:创建用于可视化的切割平面网格体
- CreateCapMesh:为切割面生成封盖网格体
- CalculateIntersectionPoints:计算切割的交点
- CreateTriangleFanCapMesh:创建三角形扇形封盖网格
- CreateTessellatedCapMesh:创建镶嵌式带位移的封盖网格
- 所有方法都具有条件编译支持
-
DismembermentComponent 类具有以下功能:
- 作为所有系统的中心控制点
- 提供简单的 API 用于执行肢解和创建伤口
- 自动管理所有子系统(BooleanCutTool、SplatterMapSystem、InternalOrganSystem、BloodSystem)
- 支持多层肢解和单层肢解
- 提供伤口应用功能
-
SplatterMapSystem 类具有以下功能:
- 多通道飞溅贴图支持(深度、血液、瘀伤等)
- 不同身体部位的独立贴图
- UV 空间投影伤口贴花
- 与切割系统集成
-
InternalOrganSystem 类具有以下功能:
- 不同类型器官的管理(肌肉、骨骼、内脏等)
- 程序化肌肉和血管生成
- 在切割处暴露内部器官
- 与骨骼系统集成
-
BloodSystem 类具有以下功能:
- 血液喷溅效果
- 血池创建
- 血液贴花
- 与切割系统集成
-
SoftBodyPhysicsTool 类具有以下功能:
- 创建不同类型的物理约束(锚点、线链、四面体、平面)
- 管理软体物理参数(刚度、阻尼、迭代次数等)
- 提供物理约束更新和清除功能
- 与骨骼系统集成,支持查找最近的骨骼
-
VisceraNodeSystem 具有以下功能:
- 使用节点工厂简化节点创建过程
- 支持多种节点类型(软体、锚点、线链、四面体、平面、时间、碰撞组)
- 提供节点树结构用于管理内部器官
- 支持节点属性编辑和配置
- 构建复杂的内脏结构(肺、心脏、胃、肠等)
-
编译问题已解决:
- 插件在没有 GeometryScripting 的环境中也能成功编译
- 当功能不可用时,适当的警告日志提供反馈
- 当高级功能被禁用时,基本的降级机制返回简化的网格体副本
- 修复了FLESHEditor和FLESHEditorModule中的编译错误
- 解决了FBoneTreeItem结构的问题,添加了DisplayName成员和TSharedFromThis支持
- 修复了视口相关的编译错误,正确处理了FSceneViewport到ISlateViewport的转换
- 解决了UE5.5.4兼容性问题,包括TObjectPtr、enum class和Slate API更新
-
编辑器界面改进:
- 实现了骨骼树视图,显示角色的骨骼层次结构
- 添加了3D视口,用于预览模型和切割效果
- 实现了视口控制功能(重置相机、切换线框模式、显示骨骼)
- 将所有UI文本和代码注释转换为英文,提高国际化支持
- 修复了编辑器模块的委托绑定问题
-
FLESH编辑器稳定性提升:
- 添加了详细的错误处理和日志记录机制
- 实现了DismembermentEditor相关的功能,包括Layer System和Physics Settings
- 修复了继承关系问题,正确实现了FEditorUndoClient接口
- 添加了初始化检查,确保所有组件正确初始化
- 完善了AnatomicalStructureBrush类,实现了基本功能框架
- 增强了异常处理,添加了try-catch块捕获潜在错误
下一步计划
-
增强 BooleanCutTool 实现
- 优化切割算法以提高性能
- 添加更多切割参数(厚度、平滑度等)
- 改进切割材质支持,实现真实的切割面
- 添加对平面之外更复杂切割形状的支持
- 实现 GPU 加速的布尔切割算法
-
扩展 DismembermentComponent 功能
- 添加更多自定义选项
- 实现预设系统,允许保存和加载常用设置
- 添加事件系统,用于响应肢解操作
- 改进与物理系统的集成
-
增强 SplatterMapSystem 功能
- 添加更多伤口类型和效果
- 实现伤口随时间演变的系统
- 改进伤口贴图的质量和性能
- 添加更多自定义选项
-
扩展 InternalOrganSystem 功能
- 添加更多器官类型和变体
- 实现更真实的内部结构
- 添加器官损伤和变形系统
- 改进与物理系统的集成
-
增强 BloodSystem 功能
- 改进血液效果的质量和性能
- 添加更多血液类型和效果
- 实现血液与环境的交互
- 添加血液流动和凝固系统
-
扩展 SoftBodyPhysicsTool 功能
- 添加更多物理约束类型
- 改进物理模拟的质量和性能
- 实现更复杂的软体结构
- 添加更多自定义选项
-
增强 VisceraNodeSystem 功能
- 添加更多节点类型和功能
- 改进节点编辑器界面
- 实现节点预设系统
- 添加节点可视化工具
-
编辑器工具改进
- 创建可视化编辑工具,用于设置切割参数
- 添加预览功能,实时显示切割效果
- 实现预设管理系统
- 添加调试可视化工具
- 改进用户界面,提高易用性
-
性能优化
- 分析和优化布尔运算以实现实时性能
- 为肢解效果实现 LOD 系统
- 为常用操作添加缓存机制
- 优化资源加载和卸载
- 实现多线程处理以提高性能
-
引擎兼容性和稳定性
- 确保与未来UE版本的兼容性
- 添加更多单元测试和集成测试
- 改进错误处理和恢复机制
- 优化内存使用和资源管理
- 提高插件在不同平台上的稳定性
-
文档和示例
- 创建全面的API文档
- 添加更多示例和教程
- 制作视频演示
- 提供最佳实践指南
-
完善FLESH编辑器功能
- 实现完整的Layer System功能,支持多层解剖结构编辑
- 完善Physics Settings界面,提供更多物理参数调整选项
- 实现实时预览功能,在编辑器中直接查看效果
- 添加更多工具栏功能,简化常用操作
- 实现撤销/重做功能的完整支持
- 添加更多错误处理和用户反馈机制
-
集成测试和性能优化
- 创建自动化测试套件,确保功能稳定性
- 进行性能分析,找出瓶颈并优化
- 实现批量测试工具,验证不同场景下的功能
- 添加性能监控工具,实时显示关键指标
- 优化内存使用,减少资源占用