Files
FLESH/Gaol.md
2025-04-23 01:18:06 +08:00

11 KiB
Raw Blame History

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(支持晃动气球物理,拉扯物理 等等)

已完成工作

  1. 基础架构搭建

    • 创建插件基本结构和模块
    • 设置必要的依赖关系GeometryScript、Niagara、Chaos物理系统
    • 实现基本的编辑器集成
    • 解决UE5.5.4兼容性问题TObjectPtr、enum class、Slate API
  2. 核心系统实现

    • 布尔切割工具BooleanCutTool支持静态网格体、骨骼网格体和程序化网格体的切割
    • 肢解系统DismembermentSystem实现多层肢解和单层肢解
    • 飞溅贴图系统SplatterMapSystem支持多通道伤害纹理
    • 内部器官系统InternalOrganSystem管理不同类型的器官
    • 血液系统BloodSystem实现喷溅效果、血池创建和贴花功能
    • 软体物理工具SoftBodyPhysicsTool实现四种模拟方法和四种网格类型
    • 内脏节点系统VisceraNodeSystem管理内部器官结构
  3. 编辑器功能

    • 节点树视图:显示所有解剖结构节点的层级关系
    • 3D预览视口用于实时预览模型和切割效果
    • 属性编辑面板:调整切割参数、物理响应和血液效果
    • 层编辑器:管理解剖层级结构
    • 物理设置面板:配置物理模拟参数
    • 节点图编辑器:用于可视化编程肢解效果
  4. 性能优化

    • 空间哈希网格:将碰撞检测复杂度从 O(n²) 降低到接近 O(n)
    • 自适应LOD系统根据距离调整模拟精度支持四个LOD级别
    • SIMD加速使用向量指令优化数学计算
    • 多线程支持:实现并行粒子更新处理
    • 物理优化器:实现基于距离的物理模拟缩放
    • 渲染优化使用较低分辨率的SplatterMap和简化材质

当前状态

  1. 核心功能已完成

    • 布尔切割工具BooleanCutTool

      • 支持静态网格体、骨骼网格体和程序化网格体切割
      • 实现三种封盖网格生成方法(简单、三角扇形、镜嵌式)
      • 支持多层切割Kinder Egg Man方法
      • 实现基于骨骼的引导切割
      • 支持多种切割形状(平面、球体、圆柱体、自定义网格)
      • 提供不同精度级别的切割算法(低、中、高)
    • 软体物理系统FLESHSoftBodySystem

      • 支持四种模拟方法Verlet积分、位置基约束、弹簧质点系统和有限元方法
      • 支持四种网格类型:四面体、六面体、表面和链式
      • 实现全面的物理参数控制(重力、阻尼、弹性、体积保持等)
      • 支持自适应时间步长和连续碰撞检测
      • 实现软体与刚体的交互系统
    • 物理优化器FLESHPhysicsOptimizer

      • 支持五种优化级别(无、低、中、高、极端)
      • 实现四种空间分区方法(无、网格、八叉树、自适应)
      • 支持基于距离的模拟缩放
      • 提供多线程物理计算
      • 实现基于视距的LOD系统包括四个精度级别
    • 血液系统BloodSystem

      • 实现基于Niagara的血液粒子系统
      • 支持动态血液贴花和血池生成
      • 提供血液流动和喷溅效果
      • 实现基于物理的血液交互
  2. 编辑器功能现状

    • 节点树视图已实现支持多种节点类型SoftBody、Anchor、LineChain、Tetra、Collision
    • 3D预览视口支持模型查看、操作和实时预览
    • 属性编辑面板可以调整各类节点的特定参数
    • 层编辑器基础功能已实现,用于管理多层解剖结构
    • 物理设置面板基础功能已实现,支持物理参数调整
    • 节点图编辑器框架已实现,支持事件节点和处理节点连接

技术实现细节

解剖结构的层次化建模

  • 多层材质技术

    • 使用4-6层材质模拟皮肤/肌肉/骨骼
    • 通过材质遮罩控制各层可见性
    • 支持动态伤口和切割面的材质混合
  • 次级碰撞体

    • 为骨骼系统添加次级碰撞体(如肌肉膨胀体)
    • 实现受力变形和物理响应
    • 提供更真实的肌肉和软组织行为
  • 物理约束系统

    • 为不同组织层次添加物理约束
    • 实现组织间的连接和交互
    • 支持动态断裂和断裂阈值设置

实时切割算法

  • 平面切割

    • 使用UE5的APEX Destruction模块
    • 结合Signed Distance Field计算切割面
    • 支持任意角度和位置的切割操作
  • 动态拓扑重建

    • 使用Procedural Mesh Component生成新网格
    • 顶点缓存重用避免GC堵塞
    • 动态计算法线平滑组(防止锈齿状切面)
    • 支持切割面的纹理映射和材质应用
  • 性能优化技术

    • 简化网格复杂度算法
    • 异步切割计算
    • 基于视距的LOD系统

性能优化策略

推荐设置

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

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

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

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

常见问题解答

编译错误

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

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

运行时问题

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

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

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

参考资源

游戏肢解系统参考

技术参考资源

  • 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文件。

技术实现细节

解剖结构的层次化建模

  • 多层材质技术

    • 使用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系统