11 KiB
FLESH, Fully Locational Evisceration System for Humanoids
项目概述
FLESH (Fully Locational Evisceration System for Humanoids) 是一个为Unreal Engine 5.5.4开发的高级肢解系统插件,旨在提供真实的软体物理模拟、精确的布尔切割以及复杂的解剖结构模拟。
引擎版本要求
- Unreal Engine 5.5.4或更高版本
- 需要启用Niagara和GeometryScript插件
核心功能目标
-
实时布尔切割系统:GPU加速的实时网格切割,支持多种切割形状和参数
-
多层解剖结构系统:骨骼、肌肉、内脏、血管的分层模拟,不同层次的独立物理行为
-
高级物理模拟:软体物理系统用于内脏和肌肉模拟,骨骼物理系统用于断肢和骨骼碎片
-
程序化伤口和血液效果:动态伤口生成和渲染,基于Niagara的高级血液粒子系统
-
编辑器工具:交互式肢解设计工具,可视化参数调整界面,预设管理和导入/导出功能
-
多层类型定义
- 骨骼模型,
- SoftBody(骨骼模型可转换成SoftBody,区别在于有单独定义的晃动气球物理 等等),
- 修改器(Line, Plane, Matrix(4*3),AnchorsPhere 等等)
-
多层层次定义
- Skin 表层皮肤: SkeletonMesh(支持破环隐藏,表层塌陷 等等)
- Fat 脂肪层: SkeletonMesh(支持破环隐藏,撕扯物理 等等)
- Muscle 肌肉层: SkeletonMesh(支持破环隐藏,撕扯物理 等等)
- Bone 骨架层: SkeletonMesh(简单的Rigidbody 等等)
- Origan 内脏层: SkeletonMesh(支持晃动气球物理,拉扯物理 等等)
已完成工作
-
基础架构搭建
- 创建插件基本结构和模块
- 设置必要的依赖关系(GeometryScript、Niagara、Chaos物理系统)
- 实现基本的编辑器集成
- 解决UE5.5.4兼容性问题(TObjectPtr、enum class、Slate API)
-
核心系统实现
- 布尔切割工具(BooleanCutTool):支持静态网格体、骨骼网格体和程序化网格体的切割
- 肢解系统(DismembermentSystem):实现多层肢解和单层肢解
- 飞溅贴图系统(SplatterMapSystem):支持多通道伤害纹理
- 内部器官系统(InternalOrganSystem):管理不同类型的器官
- 血液系统(BloodSystem):实现喷溅效果、血池创建和贴花功能
- 软体物理工具(SoftBodyPhysicsTool):实现四种模拟方法和四种网格类型
- 内脏节点系统(VisceraNodeSystem):管理内部器官结构
-
编辑器功能
- 节点树视图:显示所有解剖结构节点的层级关系
- 3D预览视口:用于实时预览模型和切割效果
- 属性编辑面板:调整切割参数、物理响应和血液效果
- 层编辑器:管理解剖层级结构
- 物理设置面板:配置物理模拟参数
- 节点图编辑器:用于可视化编程肢解效果
-
性能优化
- 空间哈希网格:将碰撞检测复杂度从 O(n²) 降低到接近 O(n)
- 自适应LOD系统:根据距离调整模拟精度,支持四个LOD级别
- SIMD加速:使用向量指令优化数学计算
- 多线程支持:实现并行粒子更新处理
- 物理优化器:实现基于距离的物理模拟缩放
- 渲染优化:使用较低分辨率的SplatterMap和简化材质
当前状态
-
核心功能已完成
-
布尔切割工具(BooleanCutTool)
- 支持静态网格体、骨骼网格体和程序化网格体切割
- 实现三种封盖网格生成方法(简单、三角扇形、镜嵌式)
- 支持多层切割(Kinder Egg Man方法)
- 实现基于骨骼的引导切割
- 支持多种切割形状(平面、球体、圆柱体、自定义网格)
- 提供不同精度级别的切割算法(低、中、高)
-
软体物理系统(FLESHSoftBodySystem)
- 支持四种模拟方法:Verlet积分、位置基约束、弹簧质点系统和有限元方法
- 支持四种网格类型:四面体、六面体、表面和链式
- 实现全面的物理参数控制(重力、阻尼、弹性、体积保持等)
- 支持自适应时间步长和连续碰撞检测
- 实现软体与刚体的交互系统
-
物理优化器(FLESHPhysicsOptimizer)
- 支持五种优化级别(无、低、中、高、极端)
- 实现四种空间分区方法(无、网格、八叉树、自适应)
- 支持基于距离的模拟缩放
- 提供多线程物理计算
- 实现基于视距的LOD系统,包括四个精度级别
-
血液系统(BloodSystem)
- 实现基于Niagara的血液粒子系统
- 支持动态血液贴花和血池生成
- 提供血液流动和喷溅效果
- 实现基于物理的血液交互
-
-
编辑器功能现状
- 节点树视图已实现,支持多种节点类型(SoftBody、Anchor、LineChain、Tetra、Collision)
- 3D预览视口支持模型查看、操作和实时预览
- 属性编辑面板可以调整各类节点的特定参数
- 层编辑器基础功能已实现,用于管理多层解剖结构
- 物理设置面板基础功能已实现,支持物理参数调整
- 节点图编辑器框架已实现,支持事件节点和处理节点连接
技术实现细节
解剖结构的层次化建模
-
多层材质技术:
- 使用4-6层材质模拟皮肤/肌肉/骨骼
- 通过材质遮罩控制各层可见性
- 支持动态伤口和切割面的材质混合
-
次级碰撞体:
- 为骨骼系统添加次级碰撞体(如肌肉膨胀体)
- 实现受力变形和物理响应
- 提供更真实的肌肉和软组织行为
-
物理约束系统:
- 为不同组织层次添加物理约束
- 实现组织间的连接和交互
- 支持动态断裂和断裂阈值设置
实时切割算法
-
平面切割:
- 使用UE5的APEX Destruction模块
- 结合Signed Distance Field计算切割面
- 支持任意角度和位置的切割操作
-
动态拓扑重建:
- 使用Procedural Mesh Component生成新网格
- 顶点缓存重用(避免GC堵塞)
- 动态计算法线平滑组(防止锈齿状切面)
- 支持切割面的纹理映射和材质应用
-
性能优化技术:
- 简化网格复杂度算法
- 异步切割计算
- 基于视距的LOD系统
性能优化策略
推荐设置
-
LOD系统:根据距离调整物理模拟精度
- 近距离:完整物理模拟
- 中距离:简化物理模拟
- 远距离:禁用物理模拟
-
物理优化:
- 调整迭代次数(建议:4-8次)
- 启用空间哈希网格碰撞检测
- 使用SIMD加速物理计算
-
渲染优化:
- 使用较低分辨率的SplatterMap(128x128)
- 限制同时显示的血液粒子数量
- 对远距离对象使用简化材质
常见问题解答
编译错误
问题:编译时出现"GeometryScript未找到"错误
解决方案:确保在项目设置中启用了GeometryScript插件
问题:链接错误与FLESH模块相关
解决方案:确保在项目的Build.cs文件中添加了FLESH模块依赖
运行时问题
问题:切割效果不显示
解决方案:检查切割平面位置和材质设置
问题:物理模拟不稳定
解决方案:增加物理迭代次数或减小时间步长
问题:性能下降严重
解决方案:启用LOD系统并优化物理设置
参考资源
游戏肢解系统参考
- 《死亡岛2》的肢解系统:https://www.youtube.com/watch?v=d3VrPOm-KDE
- Dead Island 2的FLESH系统:https://www.youtube.com/watch?v=GW7N83E1NqY
- 肢解效果全面分析:https://www.youtube.com/watch?v=Y23zTuc2drk
技术参考资源
- GeometryScript:用于实时几何体操作和布尔运算
- 程序化网格组件:用于动态生成和修改网格
- Gore and Dismemberment Plugin:提供蓝图暴露的肢解功能
- Skinned Decal Component:用于在骨骼网格上应用动态贴花
- EnGore Procedural Dismemberment:提供程序化肢解功能
版本历史
v1.2.0 (2025年4月)
- 添加多线程物理模拟
- 实现空间哈希碰撞检测
- 添加自适应LOD系统
- SIMD优化物理计算
- 修复UE5.5.4兼容性问题
v1.1.0 (2025年3月)
- 添加更多器官类型
- 改进血液效果质量
- 增强材质系统
- 添加预设系统
- 修复各种bug和性能问题
v1.0.0 (2025年2月)
- 初始发布版本
- 基础肢解功能
- 布尔切割系统
- 基本编辑器界面
联系与支持
- 官方文档:[链接待添加]
- 问题报告:[链接待添加]
- 社区论坛:[链接待添加]
许可证信息
FLESH插件采用专有许可证。详情请参阅LICENSE文件。
-
Skinned Decal Component:
- 源代码路径:Games\Lyra\Plugins\FLESH\Reference\SkinnedDecalComponent
- 商城链接:https://www.fab.com/listings/7491af07-f541-493d-a78f-d7fa5d466a0d
- 文档:https://ac.virtuosgames.com:8443/display/TSZO/Skinned+Decal+Component+Documentation
- 用于在骨骼网格上应用动态贴花
-
EnGore Procedural Dismemberment:
- 源代码路径:Games\Lyra\Plugins\FLESH\Reference\EnGoreProceduralDismemberment
- 商城链接:https://www.fab.com/listings/cb680946-6bde-445f-9ebe-3cecf4bec21e
- 演示:https://www.youtube.com/watch?v=MN31jCDQ5zY
- 文档:https://app.milanote.com/1MQHr51cI5RJ2H/dismemberment-system?p=XmVzKYwdfSs
- 提供程序化肢解功能
-
其他开源项目:
- Thyke/Dismemberment:高级肢解系统,支持动态肢体分离、武器掉落和自定义身体部位数据
- Fake Flesh System TechArt:https://github.com/Vincent-Devine/Fake_Flesh_System_TechArt
- Slice Skeletal Mesh Now:https://drive.google.com/open?id=12VlbtXGcpTXCVoVphhX3ZawnmmvD_AfM
技术实现细节
解剖结构的层次化建模
-
多层材质技术:
- 使用4-6层材质模拟皮肤/肌肉/骨骼
- 通过材质遮罩控制各层可见性
- 支持动态伤口和切割面的材质混合
-
次级碰撞体:
- 为骨骼系统添加次级碰撞体(如肌肉膨胀体)
- 实现受力变形和物理响应
- 提供更真实的肌肉和软组织行为
-
物理约束示例代码:
// 为骨骼修改器添加物理约束
FConstraintInstance* Constraint = SkeletalMesh->AddConstraint(
EConstraintType::Physics,
BoneName,
ParentBoneName,
FTransform::Identity
);
Constraint->SetLinearXMotion(ELinearConstraintMotion::LCM_Limited);
实时切割算法
-
平面切割:
- 使用UE5的APEX Destruction模块
- 结合Signed Distance Field计算切割面
- 支持任意角度和位置的切割操作
- 支持实时矩阵切割
-
动态拓扑重建:
- 使用Procedural Mesh Component生成新网格
- 顶点缓存重用(避免GC堵塞)
- 动态计算法线平滑组(防止锯齿状切面)
- 支持切割面的纹理映射和材质应用
-
性能优化技术:
- 简化网格复杂度算法
- 异步切割计算
- 基于视距的LOD系统