Files
BladeSmith/docs/_archive/plans/2026-01-23-淬火退火相变与应力疲劳系统总览.md
starmen1265 56cb314799 docs: 归档原 plans 目录,迁移实施清单到 impl/
原 docs/plans/ 下的 10 份混合文档(需求+设计混杂)归档到 docs/_archive/plans/ 作为决策考古用途。hammer-deformation-enhancement 实施清单迁移到 docs/impl/。后续工作产出统一进入 docs/requirements/ 与 docs/design/ 两个清晰分层。

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-08-11 08:57:46 +08:00

12 KiB
Raw Permalink Blame History

淬火退火相变与应力疲劳系统总览

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


1. 设计目标

1.1 核心物理现象

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

  1. 淬火硬化(马氏体相变)

    • 快速冷却改变晶体结构
    • 极大提升硬度和脆性
    • 温度区间与冷却速率双参数控制
  2. 退火/回火机制

    • 重新加热软化材料
    • 应力松弛,硬度降低
    • 可逆性支持(可多次热处理)
  3. 应力累积与松弛

    • 多来源应力:塑性形变、热应力、相变应力、残余应力
    • 应力影响形变阻力和开裂风险
    • 温度驱动的应力松弛机制
  4. 疲劳累积与耐久度

    • 反复锻打导致的材料疲劳
    • 裂纹起始与扩展机制
    • 刀具使用中的耐久度系统

1.2 设计原则

  • 游戏体验优先: 简化物理模型,保留核心机制,60 FPS性能
  • 三阶段可视化: 淬火过程高辨识度→冷却过渡→真实物理表现
  • 渐进式实现: 分阶段开发,每阶段可独立运行
  • 架构扩展性: 为未来功能预留接口
  • YAGNI原则: 避免过度设计,专注核心功能

2. 整体架构方案

2.1 混合体素-顶点架构

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

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

2.2 体素层(全局物理场)

存储内容:

  • 温度场(已有)
  • 冷却速率场(用于淬火判定)
  • 相态标记(0=奥氏体, 1=马氏体, 2=珠光体, 3=开裂)

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

2.3 顶点层(局部材料历史)

存储内容:

  • 硬度系数(影响形变阻力)
  • 脆性系数(影响开裂风险)
  • 内部应力值(标量简化)
  • 疲劳值(0-1,影响耐久度)
  • 相态标记(从体素采样)
  • 回火颜色(用于真实视觉表现)
  • 氧化层度数(用于氧化层表现)
  • 打磨度(表面状态)

数量: 20-50万顶点(基础)

2.4 数据流

锤击事件
  ↓
1. 形变计算(顶点位移)
  ↓
2. 应力累积(塑性应力+残余应力)
  ↓
3. 从温度体素采样相态和材料参数
  ↓
4. 硬度/脆性计算(基于相变+冷却速率)
  ↓
5. 更新顶点属性(硬度、应力、疲劳)
  ↓
6. 应力扩散与松弛
  ↓
7. 疲劳累积与裂纹判定
  ↓
8. 材质可视化更新

3. 子系统概述

3.1 淬火退火相变系统

目标: 实现基于温度和冷却速率的真实热处理效果

核心机制:

  • 温度区间判定(800-1200°C)
  • 冷却速率计算(快速/中速/慢速)
  • 硬度倍数映射(基于Sigmoid函数)
  • 脆性系数增加(基于冷却速率)
  • 相态标记永久保留

可视化:

  • 三阶段可视化:过程高辨识度→冷却过渡→真实物理表现
  • 真实回火色系统(基于最后回火温度)
  • 氧化层表现(基于冷却介质)

详细设计: 见 淬火退火相变系统设计.md

3.2 应力累积系统

目标: 模拟多来源应力累积与物理表现

应力来源:

  • 塑性形变应力(锤击)
  • 热应力(温度梯度)
  • 相变应力(马氏体膨胀)
  • 残余应力(外部约束)

物理表现:

  • 弯曲/扭曲(应力梯度导致)
  • 裂纹起始与扩展(应力超阈值)
  • 应力松弛(温度驱动)

辅助功能:

  • 应力扫描模式(玩家主动开启)
  • 彩虹色谱可视化应力分布

详细设计: 见 应力累积系统设计.md

3.3 疲劳累积与耐久度系统

目标: 模拟材料疲劳和刀具耐久度

疲劳机制:

  • 累积式疲劳值(每次锻打增加)
  • 应力和温度影响疲劳率
  • 疲劳裂纹起始与扩展

耐久度系统:

  • 基于平均疲劳、裂纹数量、最大应力
  • 使用中的损伤累积
  • 回火部分恢复耐久度

详细设计: 见 疲劳累积与耐久度系统设计.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 CoolingRate;              // 冷却速率(°C/s)

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

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

4.2 顶点自定义属性

// 在DynamicIronBlock.h中添加
class ADynamicIronBlock : public ADynamicMeshActor
{
    // 顶点属性层(使用FDynamicMesh3的扩展属性系统)
    TDynamicMeshVertexAttribute<float>* HardnessCoefficient;    // 硬度系数
    TDynamicMeshVertexAttribute<float>* Brittleness;            // 脆性系数(0-1)
    TDynamicMeshVertexAttribute<float>* InternalStress;        // 内部应力值
    TDynamicMeshVertexAttribute<float>* FatigueValue;          // 疲劳值(0-1)
    TDynamicMeshVertexAttribute<uint8>* PhaseState;            // 相态标记
    TDynamicMeshVertexAttribute<FVector>* TemperColor;        // 回火颜色
    TDynamicMeshVertexAttribute<float>* OxidationLevel;        // 氧化层度数
    TDynamicMeshVertexAttribute<float>* PolishAmount;          // 打磨度
};

4.3 顶点颜色编码方案

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

通道 用途 范围 说明
R 温度可视化 0-1 淬火过程:温度映射,冷却后恢复
G 打磨度 0-1 0=生锈,1=光亮金属
B 噪声种子 0-1 用于无漂移纹理采样
A 辅助标记 0-3 0=正常, 1=裂纹区, 2=淬火区(临时)

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


5. GPU-CPU分工

5.1 GPU Compute Shader职责

  • 体素层面热力学计算
  • 温度场更新
  • 冷却速率计算
  • 相态判定
  • 应力扩散(简化版)

5.2 CPU职责

  • 顶点属性更新
  • 锤击碰撞检测
  • 形变计算
  • 硬度/脆性/应力/疲劳公式应用
  • 开裂判定
  • 材质可视化更新
  • 游戏逻辑(辅助功能触发)

6. 性能预算

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

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

6.2 内存预算

数据 大小 说明
网格顶点(20万) 16.8 MB 84字节/顶点(新增属性)
网格三角形(40万) 4.8 MB 3×4字节索引
BVH结构 5 MB 加速结构
物理场体素(50³) 0.4 MB 扩展后的体素结构
GPU缓冲区 3 MB Ping-Pong缓冲
单铁块总计 ~30 MB 可接受

7. 实施计划

阶段1:淬火退火相变系统(3-4天)

目标: 实现完整的热处理机制

  • 扩展体素结构(冷却速率、相态)
  • 顶点硬度/脆性属性系统
  • 温度区间判定逻辑
  • 冷却速率计算(滑动平均)
  • 硬度/脆性公式实现
  • 三阶段可视化系统
  • 回火色系统
  • 氧化层表现

验收标准:

  • 淬火后硬度显著提升
  • 冷却速率影响硬度和脆性
  • 回火后硬度降低,应力松弛
  • 视觉表现符合真实物理规律

阶段2:应力累积系统(2-3天)

目标: 实现应力累积与物理表现

  • 应力来源分类与计算
  • 应力累积规则
  • 应力扩散机制
  • 形变阻力公式
  • 弯曲/扭曲机制
  • 裂纹起始判定
  • 裂纹扩展逻辑
  • 应力扫描辅助功能

验收标准:

  • 多来源应力正确累积
  • 高应力区域形变困难
  • 应力超阈值产生裂纹
  • 裂纹沿应力梯度扩展

阶段3:疲劳累积与耐久度系统(2-3天)

目标: 实现材料疲劳和耐久度机制

  • 疲劳值累积规则
  • 应力和温度影响疲劳率
  • 疲劳裂纹起始
  • 裂纹扩展概率
  • 耐久度计算公式
  • 使用中的损伤累积
  • 回火恢复机制
  • 刀具失效判定

验收标准:

  • 反复锻打疲劳累积
  • 疲劳裂纹产生并扩展
  • 耐久度正确计算
  • 使用导致耐久度下降
  • 回火部分恢复耐久度

阶段4:集成与优化(1-2天)

目标: 系统集成与性能优化

  • 各子系统联动测试
  • 参数调优
  • 性能Profiling
  • 调试工具完善
  • 文档更新

验收标准:

  • 60 FPS @ 连续锤击
  • 所有功能正常运行
  • 调试工具完善
  • 文档齐全

8. 风险评估

8.1 技术风险

风险 概率 影响 缓解措施
公式过于复杂,性能不足 中 高 简化计算,使用GPU并行
参数调优困难 中 中 提供调试工具,分阶段测试
可视化效果不真实 中 中 参考真实照片,迭代优化
网格拓扑变化导致属性丢失 中 高 使用持久化ID追踪顶点

8.2 设计风险

风险 概率 影响 缓解措施
过度复杂化,开发周期过长 高 高 严格遵守YAGNI,分阶段验收
物理模型过于简化,真实感不足 中 中 阶段性用户测试,迭代调整
辅助功能与真实表现混淆 低 中 明确区分,UI提示清晰

9. 参考资料

9.1 物理基础

  • 《金属塑性成形原理》(清华大学出版社)
  • 《材料科学基础》(上海交通大学出版社)
  • 《金属热处理原理与工艺》(机械工业出版社)
  • Metals Handbook: Heat Treating (ASM International)

9.2 游戏案例

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

10. 文件索引


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