Files
BladeSmith/docs/plans/2026-01-22-高真实度锻造系统设计.md
T
2026-01-23 00:31:21 +08:00

14 KiB
Raw Blame History

高真实度锻造系统设计

项目: BladeSmith 日期: 2026-01-22 目标: 实现游戏娱乐级的高真实度金属锻造物理系统 性能目标: 60 FPS @ 锤击操作


1. 设计目标

1.1 核心物理现象

实现以下四大冶金学物理过程:

  1. 加工硬化/应变硬化

    • 金属在锻打过程中逐渐变硬
    • 需要回火(加热)才能继续加工
    • 影响后续形变的阻力
  2. 应力/应变分布

    • 不均匀形变导致内部应力累积
    • 可能引起开裂、扭曲、回弹
    • 影响武器最终性能
  3. 淬火硬化(马氏体相变)

    • 快速冷却改变晶体结构
    • 极大提升硬度和脆性
    • 临界温度控制(800-1200°C)
  4. 微观组织演化(晶粒)

    • 晶粒尺寸、形状、取向影响材料特性
    • 影响强度、韧性、视觉花纹
    • 支持大马士革钢花纹效果

1.2 设计原则

  • 游戏娱乐级精度: 简化物理模型,保持真实感,60 FPS性能
  • 渐进式实现: 分阶段开发,每阶段可独立运行
  • 架构扩展性: 为未来功能预留接口
  • YAGNI原则: 避免过度设计,专注核心功能

2. 整体架构方案

2.1 技术方案:混合体素-顶点架构

核心思想: 体素存储"物理场",顶点存储"材料历史"

┌─────────────────────────────────────────────────────────┐
│                     锤击输入                             │
└─────────────────┬───────────────────────────────────────┘
                  │
         ┌────────┴────────┐
         │                 │
    ┌────▼─────┐    ┌─────▼────┐
    │ 体素层   │    │  顶点层   │
    │ (GPU)    │    │  (GPU)    │
    └────┬─────┘    └─────┬────┘
         │                 │
         │  双向采样通信   │
         └────────┬────────┘
                  │
         ┌────────▼────────┐
         │   渲染 & 显示    │
         └─────────────────┘

体素层(全局物理场)

存储内容:

  • 温度场(已有)
  • 平均应变率场(新增)
  • 冷却速率场(用于淬火判断)
  • 表面打磨度场(可选)

分辨率: 50×50×50(可配置) 更新方式: GPU Compute Shader(Ping-Pong双缓冲)

顶点层(局部材料历史)

存储内容:

  • 累积塑性应变(记录形变历史)
  • 当前硬度系数(影响形变阻力)
  • 晶粒尺寸/取向(简化标量)
  • 应力张量(简化为标量应力值)
  • 初始位置(用于纹理固定)
  • 打磨度(表面状态)

数量: 20-50万顶点(基础),刀刃区域局部加密至100万顶点/cm²

2.2 数据流

锤击事件
  ↓
1. 形变计算(顶点位移)
  ↓
2. 更新顶点应变累积
  ↓
3. 从温度体素采样塑性系数
  ↓
4. 硬化计算(基于应变+温度)
  ↓
5. 更新顶点硬度系数
  ↓
6. 更新体素应变率场
  ↓
7. 温度/淬火/退火判断
  ↓
8. 材质可视化更新

2.3 关键优势

特性 优势
性能可控 体素粗糙(50³),顶点精细(20-50万),可调节
物理直觉清晰 全局场(温度、应力扩散)+ 局部历史(材料记忆)
利用现有基础 复用GPU Compute、Ping-Pong、RDG基础设施
易于调试 体素和顶点数据可独立可视化

3. 核心子系统设计

3.1 刀刃形成系统

目标: 解决锻打边缘时材料流动方向性,形成平整锐利的刀刃

技术方案: 各向异性材料流动 + 局部边缘约束

详细设计: 见 刀刃形成技术细节.md

关键特性:

  • 材料优先沿边缘方向流动(非均匀扩散)
  • 边缘顶点保持共线约束
  • 自适应网格细分(刀刃区域高密度)

3.2 表面磨损系统

目标: 锤击在表面留下痕迹(铁锈脱落、金属光亮、划痕)

技术方案: 顶点属性存储 + 程序化细节 + 无漂移采样

详细设计: 见 表面磨损系统细节.md

关键特性:

  • 顶点存储"打磨度"和"初始位置"
  • 材质基于初始位置采样噪声(无漂移)
  • 支持铁锈、氧化层、酸蚀痕迹等多种表面状态
  • 金属度、粗糙度动态更新

3.3 网格质量维护系统

目标: 防止锻打导致的网格退化(细长三角形、分布不均)

技术方案: 增量式局部优化

详细设计: 见 网格质量优化细节.md

关键特性:

  • 每次锤击后局部优化(仅受影响区域)
  • 边翻转 + Laplacian平滑 + 自适应重网格化
  • 保留顶点属性(打磨度、应变等)
  • 性能开销: +5-15ms/次

3.4 物理模拟系统

目标: 实现温度-塑性-硬化-相变的完整冶金学循环

技术方案: GPU Compute Shader多物理场耦合

详细设计: 见 物理模拟架构细节.md

关键特性:

  • 温度传导与冷却(已有,需扩展)
  • 加工硬化模型(基于累积应变)
  • 淬火/退火相变判断
  • 应力累积与松弛

4. 数据结构设计

4.1 扩展体素结构

USTRUCT(BlueprintType)
struct FTemperatureVoxel
{
    GENERATED_BODY()

    // ===== 已有字段 =====
    UPROPERTY()
    float Temperature;              // 温度(°C)

    UPROPERTY()
    float PlasticityCoefficient;    // 塑性系数(0-1)

    UPROPERTY()
    uint8 Flags;                    // 标志位(bit 0: 表面体素)

    // ===== 新增字段 =====
    UPROPERTY()
    float AverageStrainRate;        // 平均应变率(记录形变活跃度)

    UPROPERTY()
    float CoolingRate;              // 冷却速率(用于淬火判断)

    UPROPERTY()
    uint8 PhaseState;               // 相态(0=奥氏体, 1=马氏体, 2=珠光体)

    FTemperatureVoxel()
        : Temperature(20.0f)
        , PlasticityCoefficient(0.0f)
        , Flags(0)
        , AverageStrainRate(0.0f)
        , CoolingRate(0.0f)
        , PhaseState(0)
    {}
};

4.2 顶点自定义属性

// 在DynamicIronBlock.h中添加
class ADynamicIronBlock : public ADynamicMeshActor
{
    // 顶点属性层(使用FDynamicMesh3的扩展属性系统)
    TDynamicMeshVertexAttribute<FVector>* InitialPositions;     // 初始位置(不变)
    TDynamicMeshVertexAttribute<float>* AccumulatedStrain;      // 累积应变
    TDynamicMeshVertexAttribute<float>* HardnessCoefficient;    // 硬度系数
    TDynamicMeshVertexAttribute<float>* PolishAmount;           // 打磨度
    TDynamicMeshVertexAttribute<float>* GrainSize;              // 晶粒尺寸
    TDynamicMeshVertexAttribute<float>* StressValue;            // 应力值(简化)
};

4.3 顶点颜色编码方案

由于顶点颜色只有4通道(RGBA),需要精心分配:

通道 用途 范围 说明
R 温度可视化 0-1 从体素采样,映射到颜色
G 打磨度 0-1 0=生锈,1=光亮金属
B 噪声种子 0-1 用于无漂移纹理采样
A 硬度/应变 0-1 可视化应变或硬化程度

额外数据通过UV1通道或自定义属性传递。


5. 性能预算

5.1 目标帧时间分解(60 FPS = 16.67ms)

系统 预算 说明
渲染(UE5基础) 10ms 场景渲染、后处理
锤击形变计算 2-3ms 顶点位移、BVH更新
网格质量优化 1-2ms 边翻转、平滑
GPU温度计算 0.5ms Compute Shader(异步)
顶点属性更新 0.5ms 硬化、应力计算
材质可视化 1ms 顶点颜色更新
总锤击开销 ≤7ms 保持在预算内

5.2 内存预算

数据 大小 说明
网格顶点(20万) 13.6 MB 68字节/顶点
网格三角形(40万) 4.8 MB 3×4字节索引
BVH结构 5 MB 加速结构
温度体素(50³) 0.3 MB 24字节/体素
GPU缓冲区 2 MB Ping-Pong温度缓冲
单铁块总计 ~26 MB 可接受

5.3 可扩展性

  • 网格密度: 可配置20万-100万顶点
  • 体素分辨率: 可配置30³-80³
  • 优化开关: 各子系统可独立禁用
  • LOD支持: 远距离降低网格密度

6. 实施计划

阶段1:核心形变增强(2-3天)

目标: 实现刀刃形成和表面磨损的基础版本

  • 各向异性材料流动(刀刃方向检测)
  • 顶点打磨度属性系统
  • 初始位置存储(无漂移采样)
  • 材质扩展(铁锈/金属混合)
  • 简单Laplacian平滑(网格质量维护基础)

验收标准:

  • 锻打边缘时材料优先沿边缘流动
  • 锤击后表面铁锈脱落,露出光亮金属
  • 形变后铁锈图案不"滑动"

阶段2:网格质量系统(1-2天)

目标: 防止网格退化

  • 三角形质量检测(长宽比、面积)
  • 边翻转优化算法
  • 增量式Laplacian平滑(带权重)
  • 局部自适应重网格化(FRemesher集成)
  • 性能优化(仅处理受影响区域)

验收标准:

  • 连续锻打50次后网格仍保持均匀
  • 无明显细长三角形(长宽比>0.1)
  • 锤击响应时间<10ms

阶段3:物理模拟扩展(3-4天)

目标: 实现完整冶金学循环

  • 扩展体素结构(应变率、冷却率、相态)
  • 顶点应变累积系统
  • 加工硬化模型(应变→硬度映射)
  • 淬火判断逻辑(温度+冷却速率→马氏体转变)
  • 退火/回火逻辑(温度+时间→硬度降低)
  • GPU Compute Shader扩展(多物理场耦合)

验收标准:

  • 连续锻打后铁块变硬(形变阻力增加)
  • 加热后硬度降低,可继续加工
  • 淬火后硬度显著提升(快速冷却)

阶段4:晶粒与视觉效果(2-3天)

目标: 视觉真实度提升

  • 晶粒尺寸标量模拟(简化模型)
  • 大马士革花纹支持(多层材料ID)
  • 应力可视化(顶点颜色.A通道)
  • 程序化细节噪声(材质层)
  • 开裂判定与可视化(应力阈值)

验收标准:

  • 高应变区域可视化(颜色变化)
  • 支持简单的大马士革花纹(层状结构)
  • 应力过大时出现视觉裂纹(不破坏网格)

阶段5:优化与打磨(1-2天)

目标: 性能优化和细节调整

  • 性能Profiling(Unreal Insights)
  • GPU Compute优化(共享内存、波前优化)
  • 参数曝光到Blueprint(方便调试)
  • 调试可视化工具(体素场可视化、应力热图)
  • 文档和示例场景

验收标准:

  • 60 FPS @ 连续锤击
  • 所有参数可在编辑器调节
  • 提供完整的使用文档

7. 风险评估

7.1 技术风险

风险 概率 影响 缓解措施
网格拓扑动态变化导致属性丢失 中 高 使用UUID或持久化ID追踪顶点
GPU Compute性能不足 低 高 降低体素分辨率,异步计算
大马士革花纹实现困难 高 中 阶段4可选功能,简化模型
网格重建开销过大 中 中 限制重建频率,局部优化

7.2 设计风险

风险 概率 影响 缓解措施
过度复杂化,开发周期过长 高 高 严格遵守YAGNI,分阶段验收
物理模型过于简化,真实感不足 中 中 阶段性用户测试,迭代调整
顶点通道不足,数据无法传递 低 中 使用UV1或自定义缓冲区

8. 技术债务与未来扩展

8.1 当前简化假设

  1. 应力张量简化为标量: 真实应力是3×3张量,当前仅用单值
  2. 晶粒模型极度简化: 真实晶粒有复杂的3D形状和取向
  3. 相变模型经验化: 马氏体转变实际需要CCT曲线
  4. 无热-力-电-磁耦合: 忽略了磁性、电阻率等二次效应

8.2 未来可扩展方向

  • 多材料支持: 当前仅钢,未来可扩展铜、青铜、钛合金
  • 焊接系统: 多块金属的连接与材料混合
  • 锻造工具多样性: 不同形状的锤头(平锤、圆锤、凿子)
  • 多人协作锻造: 网络同步动态网格
  • VR支持: 空间交互与力反馈

9. 参考资料

9.1 物理基础

  • 《金属塑性成形原理》(清华大学出版社)
  • 《材料科学基础》(上海交通大学出版社)
  • Metals Handbook: Forging and Forming (ASM International)

9.2 技术参考

  • Unreal Engine 5 Geometry Scripting文档
  • Real-Time Collision Detection by Christer Ericson (网格优化)
  • GPU Gems 3: Chapter 39 - Parallel Prefix Sum (GPU算法)
  • Siggraph 2020: Dynamic Mesh Simplification (网格优化)

9.3 游戏案例

  • My Summer Car - 机械装配真实度
  • BeamNG.drive - 动态网格形变
  • Dwarf Fortress - 材料属性系统

10. 附录

10.1 术语表

术语 英文 说明
塑性形变 Plastic Deformation 永久性的形状改变
加工硬化 Work Hardening 形变导致材料变硬的现象
马氏体 Martensite 淬火后的硬相组织
奥氏体 Austenite 高温下的软相组织
晶粒 Grain 金属微观结构的基本单元
应变 Strain 材料的相对变形量
应力 Stress 材料内部的力
BVH Bounding Volume Hierarchy 碰撞检测加速结构
RDG Render Dependency Graph UE5的GPU任务调度系统

10.2 文件索引


文档版本: 1.0 最后更新: 2026-01-22 状态: 设计完成,待评审