2025-04-23 01:18:06 +08:00
2025-04-21 08:17:52 +08:00
2025-04-23 01:18:06 +08:00
2025-04-21 08:17:52 +08:00
2025-04-17 23:59:17 +08:00
2025-04-23 01:18:06 +08:00
2025-04-21 20:08:05 +08:00
2025-04-23 01:18:06 +08:00
2025-04-23 01:18:06 +08:00
2025-04-23 01:18:06 +08:00

FLESH插件 (Fully Locational Evisceration System for Humanoids)

引擎版本要求

  • Unreal Engine 5.5.4或更高版本
  • 需要启用Niagara和GeometryScript插件

插件安装指南

标准安装

  1. 将FLESH文件夹复制到您项目的Plugins目录中
  2. 重新生成项目解决方案
  3. 启动Unreal编辑器在编辑 > 插件菜单中启用FLESH插件
  4. 重启编辑器以完成安装

从源代码安装

  1. 克隆FLESH仓库到您的本地目录
  2. FLESH文件夹复制到项目的Plugins目录
  3. 右键点击您的.uproject文件,选择"生成Visual Studio项目文件"
  4. 打开解决方案并编译
  5. 启动编辑器并在插件菜单中启用FLESH

依赖项

  • GeometryScript插件用于网格处理
  • Niagara插件用于粒子效果
  • Chaos物理系统用于物理模拟

编辑器使用指南

启动FLESH编辑器

  1. 在Unreal编辑器中导航至窗口 > FLESH编辑器
  2. FLESH编辑器窗口将打开包含以下主要面板
    • 节点树视图(左侧):管理所有解剖结构节点
    • 3D预览视口中央实时预览效果
    • 属性面板(右侧):编辑选中节点的属性
    • 层编辑器(右侧):管理解剖层级结构
    • 物理设置面板(右侧):配置物理模拟参数
    • 节点图编辑器(右侧):创建行为逻辑

使用节点树系统

  1. 节点树视图显示所有解剖结构节点的层级关系
  2. 右键点击节点树空白处可添加根节点:
    • SoftBody节点创建可变形软体结构
    • Anchor节点创建固定点
    • LineChain节点创建线性约束链
    • Tetra节点创建四面体结构
    • Collision节点创建碰撞体
  3. 右键点击现有节点可添加子节点或执行其他操作:
    • 添加子节点
    • 复制/粘贴节点
    • 删除节点
    • 重命名节点
  4. 选择节点后,在属性面板中可编辑节点特定属性

配置角色肢解设置

  1. 在编辑器中点击导入按钮加载骨骼网格体
  2. 在节点树视图中创建和组织解剖结构
  3. 在属性面板中设置以下参数:
    • 切割平面位置和方向
    • 断面材质设置
    • 物理响应参数
    • 血液效果配置

使用布尔切割工具

  1. 在工具栏中选择布尔切割工具按钮打开切割工具面板
  2. 在3D视口中定位切割平面
    • 使用变换工具调整位置和旋转
    • 使用快捷键进行精确调整Alt+拖拽微调)
  3. 调整切割参数:
    • 切割形状:平面、球体、圆柱体、自定义网格
    • 切割精度:低(快速)、中、高(精确但较慢)
    • 封盖网格生成自动、手动、高级UV映射选项
    • 切割厚度:控制切口边缘厚度
    • 材质设置:断面材质、边缘材质
  4. 点击预览按钮查看切割效果(不会修改原始网格)
  5. 点击应用按钮将切割永久应用到网格
  6. 使用撤销/重做按钮管理切割历史

配置内部器官系统

  1. 在编辑器中切换到内部结构标签页
  2. 使用器官创建工具:
    • 器官笔刷:自由绘制内部结构
    • 体素雕刻:精确雕刻器官形状
    • 解剖图谱:基于医学参考创建精确器官
  3. 从器官库中拖放预设器官:
    • 心脏、肺、肝脏等主要器官
    • 血管系统(动脉、静脉)
    • 神经系统
    • 肌肉组织
  4. 配置器官物理属性:
    • 软体参数:弹性、阻尼、质量
    • 破坏阈值:撕裂、穿刺、压碎
    • 物理约束:附着点、连接器
    • 流体属性:血液流动、粘度
  5. 设置器官反应系统:
    • 物理反应内脏骨骼晃动物理基于UE的RigidBody

使用节点图编辑器

  1. 切换到节点图标签页打开可视化编程界面
  2. 管理图表:
    • 创建新图:点击工具栏中的新建按钮
    • 加载现有图:从项目浏览器中选择
    • 保存图表:自动保存或手动点击保存
  3. 添加事件节点(触发器):
    • OnDamage:受到伤害时触发
    • OnCut:被切割时触发
    • OnImpact:受到冲击时触发
    • OnExposure:内部结构暴露时触发
    • OnPhysicsCollision:物理碰撞时触发
  4. 添加处理节点(行为):
    • SpawnBlood:生成血液效果
    • ApplyForce:施加物理力
    • DeformMesh:变形网格
    • TriggerAnimation:触发动画
  5. 添加控制流节点:
    • 条件分支:基于参数选择不同路径
    • 循环:重复执行操作
    • 延迟:延时执行
    • 序列:按顺序执行多个操作
  6. 设置变量和参数:
    • 伤害类型:切割、穿刺、钝器
    • 伤害强度:轻、中、重
    • 物理参数:力、速度、质量
  7. 调试和测试:
    • 使用编译按钮验证图表
    • 使用模拟按钮在编辑器中测试
    • 使用断点观察调试执行流程

使用物理优化工具

  1. 在工具栏中选择物理优化按钮
  2. 配置性能设置:
    • 物理LOD级别根据距离调整模拟精度
    • 子步进设置:平衡精度和性能
    • 碰撞优化:简化远距离碰撞
  3. 使用性能分析器识别瓶颈
  4. 应用预设配置:
    • 高性能:优先考虑帧率
    • 平衡:性能和质量平衡
    • 高质量:优先考虑模拟精度

API参考

主要组件

UDismembermentComponent

将此组件添加到角色以启用肢解功能。

// 添加到角色蓝图
UDismembermentComponent* DismembermentComp = CreateDefaultSubobject<UDismembermentComponent>(TEXT("DismembermentComponent"));
主要方法
// 在指定位置应用切割
bool ApplyCut(FVector CutLocation, FVector CutNormal, float CutForce = 1000.0f);

// 在指定骨骼处应用切割
bool ApplyCutAtBone(FName BoneName, FVector CutNormal, float CutForce = 1000.0f);

// 设置肢解配置
void SetDismembermentConfig(const FDismembermentConfig& Config);

// 获取当前肢解状态
FDismembermentState GetDismembermentState() const;

USplatterMapComponent

管理角色的伤害纹理系统。

// 添加到角色蓝图
USplatterMapComponent* SplatterMapComp = CreateDefaultSubobject<USplatterMapComponent>(TEXT("SplatterMapComponent"));
主要方法
// 在指定UV位置添加伤害
void AddDamageAtUV(FVector2D UVLocation, float Intensity, EDamageType DamageType);

// 在世界空间位置添加伤害
void AddDamageAtLocation(FVector WorldLocation, float Intensity, EDamageType DamageType);

// 清除所有伤害
void ClearAllDamage();

UBloodSystemComponent

管理血液效果系统。

// 添加到角色蓝图
UBloodSystemComponent* BloodComp = CreateDefaultSubobject<UBloodSystemComponent>(TEXT("BloodSystemComponent"));
主要方法
// 在指定位置生成血液喷溅
void SpawnBloodSpray(FVector Location, FVector Direction, float Intensity);

// 创建血液贴花
void CreateBloodDecal(FVector Location, FVector Normal, float Size);

// 创建血池
void CreateBloodPool(FVector Location, float Size, float LifeTime);

USoftBodyComponent

提供软体物理模拟功能。

// 添加到角色蓝图
USoftBodyComponent* SoftBodyComp = CreateDefaultSubobject<USoftBodyComponent>(TEXT("SoftBodyComponent"));
主要方法
// 初始化软体系统
void InitializeSoftBody(UStaticMeshComponent* TargetMesh, ESoftBodyMethod Method);

// 添加固定点
void AddAnchorPoint(FVector Location, UPrimitiveComponent* AnchorComponent);

// 应用力到软体
void ApplyForceAtLocation(FVector Force, FVector Location);

蓝图API

事件

  • OnDismemberment:当肢解发生时触发
  • OnDamageApplied当伤害应用到SplatterMap时触发
  • OnBloodSpawned:当血液效果生成时触发
  • OnOrganExposed:当内部器官暴露时触发

函数库

  • FLESHFunctionLibrary:提供通用功能函数
  • FLESHMathLibrary:提供物理和数学计算函数
  • FLESHMaterialLibrary:提供材质处理函数

性能优化指南

推荐设置

  1. LOD系统:根据距离调整物理模拟精度

    • 近距离:完整物理模拟
    • 中距离:简化物理模拟
    • 远距离:禁用物理模拟
  2. 物理优化

    • 调整迭代次数建议4-8次
    • 启用空间哈希网格碰撞检测
    • 使用SIMD加速物理计算
  3. 渲染优化

    • 使用较低分辨率的SplatterMap128x128
    • 限制同时显示的血液粒子数量
    • 对远距离对象使用简化材质

常见问题解答

编译错误

问题:编译时出现"GeometryScript未找到"错误
解决方案确保在项目设置中启用了GeometryScript插件

问题链接错误与FLESH模块相关
解决方案确保在项目的Build.cs文件中添加了FLESH模块依赖

运行时问题

问题:切割效果不显示
解决方案:检查切割平面位置和材质设置

问题:物理模拟不稳定
解决方案:增加物理迭代次数或减小时间步长

问题:性能下降严重
解决方案启用LOD系统并优化物理设置

版本历史

v1.2.0 (2025年4月)

  • 添加多线程物理模拟
  • 实现空间哈希碰撞检测
  • 添加自适应LOD系统
  • SIMD优化物理计算
  • 修复UE5.5.4兼容性问题

v1.1.0 (2025年3月)

  • 添加更多器官类型
  • 改进血液效果质量
  • 增强材质系统
  • 添加预设系统
  • 修复各种bug和性能问题

v1.0.0 (2025年2月)

  • 初始发布版本
  • 基础肢解功能
  • 布尔切割系统
  • 基本编辑器界面

联系与支持

  • 官方文档:[链接待添加]
  • 问题报告:[链接待添加]
  • 社区论坛:[链接待添加]

许可证信息

FLESH插件采用专有许可证。详情请参阅LICENSE文件。

Description
Fully Locational Evisceration System for Humanoids
Readme 75 MiB
Languages
C++ 99%
C# 1%