9.6 KiB
9.6 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)
- 实现了血液喷溅效果
- 支持创建血池
- 提供血液贴花功能
- 与切割系统集成,实现真实的血液效果
-
实现了高级封盖网格生成方法
- 添加了三角形扇形封盖方法
- 实现了镶嵌式带位移的封盖方法
- 支持多种封盖材质和纹理
当前状态
-
BooleanCutTool 类具有以下功能:
- CutStaticMesh:使用 GeometryScripting 切割静态网格体
- CutSkeletalMesh:支持骨骼特定目标的骨骼网格体切割
- CutProceduralMesh:具有动态几何体的程序化网格体切割
- CreateCutPlaneMesh:创建用于可视化的切割平面网格体
- CreateCapMesh:为切割面生成封盖网格体
- CalculateIntersectionPoints:计算切割的交点
- CreateTriangleFanCapMesh:创建三角形扇形封盖网格
- CreateTessellatedCapMesh:创建镶嵌式带位移的封盖网格
- 所有方法都具有条件编译支持
-
DismembermentComponent 类具有以下功能:
- 作为所有系统的中心控制点
- 提供简单的 API 用于执行肢解和创建伤口
- 自动管理所有子系统(BooleanCutTool、SplatterMapSystem、InternalOrganSystem、BloodSystem)
- 支持多层肢解和单层肢解
- 提供伤口应用功能
-
SplatterMapSystem 类具有以下功能:
- 多通道飞溅贴图支持(深度、血液、瘀伤等)
- 不同身体部位的独立贴图
- UV 空间投影伤口贴花
- 与切割系统集成
-
InternalOrganSystem 类具有以下功能:
- 不同类型器官的管理(肌肉、骨骼、内脏等)
- 程序化肌肉和血管生成
- 在切割处暴露内部器官
- 与骨骼系统集成
-
BloodSystem 类具有以下功能:
- 血液喷溅效果
- 血池创建
- 血液贴花
- 与切割系统集成
-
编译问题已解决:
- 插件在没有 GeometryScripting 的环境中也能成功编译
- 当功能不可用时,适当的警告日志提供反馈
- 当高级功能被禁用时,基本的降级机制返回简化的网格体副本
下一步计划
-
增强 BooleanCutTool 实现
- 优化切割算法以提高性能
- 添加更多切割参数(厚度、平滑度等)
- 改进切割材质支持,实现真实的切割面
- 添加对平面之外更复杂切割形状的支持
- 实现 GPU 加速的布尔切割算法
-
扩展 DismembermentComponent 功能
- 添加更多自定义选项
- 实现预设系统,允许保存和加载常用设置
- 添加事件系统,用于响应肢解操作
- 改进与物理系统的集成
- 添加网络同步支持
-
增强 SplatterMapSystem
- 实现更高效的 UV 空间映射算法
- 添加更多通道支持(如烧伤、水等)
- 改进贴花混合算法,避免重叠问题
- 优化内存使用,减少纹理占用
- 添加时间效果,如血液干燥
-
扩展 InternalOrganSystem
- 添加更多解剖结构
- 实现更真实的器官物理
- 添加器官损伤效果
- 改进程序化生成算法
- 添加更多自定义选项
-
增强 BloodSystem
- 实现基于 Niagara 的具有真实行为的血液粒子效果
- 添加带表面交互的血液飞溅和流动效果
- 实现血液积聚和环境交互
- 添加血液材质效果(湿润、干燥等)
- 实现基于伤口大小和位置的压力式血液流动
-
编辑器工具改进
- 创建可视化编辑工具,用于设置切割参数
- 添加预览功能,实时显示切割效果
- 实现预设管理系统
- 添加调试可视化工具
- 改进用户界面,提高易用性
-
性能优化
- 分析和优化布尔运算以实现实时性能
- 为肢解效果实现 LOD 系统
- 为常用操作添加缓存机制
- 优化大规模肢解场景的内存使用
- 为重计算任务实现多线程处理
- 实现 GPU 加速,提高计算速度
-
文档和示例
- 创建全面的文档
- 添加示例场景
- 提供教程和最佳实践指南
- 创建 API 参考
- 添加性能优化建议
未来优化计划
-
性能优化
- 实现GPU加速的布尔切割
- 为肢解效果添加LOD系统
- 实现缓存机制
- 复杂计算的多线程处理
-
系统增强
- 扩展SplatterMapSystem通道
- 改进UV映射算法
- 添加更多解剖结构
- 增强器官物理模拟
-
编辑器工具
- 切割参数的可视化编辑工具
- 预设管理系统
- 实时效果预览
- 调试可视化工具
-
高级功能
- VR/AR支持
- AI驱动的程序化伤口生成
- 网络同步
- 移动平台优化
技术挑战
-
GeometryScripting 插件的可用性
- ✅ 已解决:在不同环境中 GeometryScripting 插件可能不可用的问题
- ✅ 已实现:为不支持 GeometryScripting 的环境提供替代实现
- 考虑将关键的 GeometryScripting 功能内置到插件中,减少外部依赖
- 进一步完善降级方案,提高在没有 GeometryScripting 时的功能完整性
-
性能优化
- 布尔操作是计算密集型的,需要优化算法
- 考虑使用空间分区技术,减少不必要的计算
- 实现渐进式切割,分多帧完成复杂的切割操作
- 使用 GPU 加速,提高计算速度
- 添加缓存机制,避免重复计算
-
物理交互
- 切割后的网格体需要正确设置物理属性
- 实现更真实的物理响应,如肌肉张力和组织弹性
- 处理切割后的质量和重心变化
- 确保切割面的碰撞正常工作
- 处理切割后的质量和重心变化
- 实现更真实的物理响应,如肌肉张力和组织弹性
-
UV 映射和纹理处理
- 切割后的网格体需要正确的 UV 映射
- 处理纹理拉伸和扭曲问题
- 实现动态纹理生成,适应切割形状
- 优化纹理内存使用
- 处理多层纹理的混合
-
内存管理
- 动态生成的网格体和纹理可能导致内存泄漏
- 需要实现资源池和回收机制
- 优化资源加载和卸载
- 处理大规模肢解场景的内存压力
- 实现增量资源加载
长期目标
- 支持更多的网格体类型,如体素网格和程序化生成的网格
- 添加更高级的解剖学模拟,如内部器官和组织层次
- 实现更真实的物理交互,如组织变形和撕裂
- 提供更多的自定义选项,满足不同游戏类型的需求
- 优化在移动平台上的性能,使插件可以在低端设备上运行
- 添加网络同步支持,使切割效果在多人游戏中正确显示
- 实现 VR 和 AR 支持,提供沉浸式体验
- 添加 AI 驱动的程序化伤口生成
参考资源
- UE5.5.4 GeometryScripting 文档
- Dead Island 2 肢解系统分析
- 实时布尔切割算法研究
- 流体模拟技术
- "Kinder蛋"多层解剖模型技术
- GPU 网格切片技术