fbb2baa854
design/04 仅保留加工硬化与晶粒演化,应力/淬火部分引用 design/05、design/06。design/05 涵盖温度区间、冷却速率、Sigmoid 硬度映射、相态系统、三阶段可视化(过程高辨识→冷却过渡→真实回火色)。 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
11 KiB
11 KiB
淬火退火相变系统设计
项目: BladeSmith
文档类型: 技术设计(专题)
版本: 2.0
最后更新: 2026-08-11
状态: 整合自原 2026-01-23-淬火退火相变系统设计.md
本文档描述淬火退火相变系统的技术实现。需求见 [../requirements/05-淬火退火相变需求.md]。总体架构见 00-锻造系统总体技术架构.md。
1. 技术背景
淬火退火相变系统模拟热处理过程中的相变行为,基于温度和冷却速率计算材料状态变化。系统通过温度区间判定、冷却速率计算、相态判定、硬度/脆性计算以及三阶段可视化,实现真实的热处理效果模拟。
2. 温度区间判定
2.1 温度阈值定义
三个关键温度阈值:
| 阈值名称 | 温度范围 | 效果 |
|---|---|---|
| 临界下限 | < 800°C | 淬火无效,硬度无提升 |
| 黄金区间 | 900-1100°C | 最佳淬火,硬度最大提升 |
| 临界上限 | > 1200°C | 材料开裂风险,硬度提升低 |
2.2 温度区间修正系数
TemperatureFactor 公式:
TemperatureFactor =
3.0 (900°C ≤ T ≤ 1100°C, 黄金区间)
1.8 (800°C ≤ T < 900°C 或 1100°C < T ≤ 1200°C, 次优区间)
0.5 (T < 800°C, 温度过低)
0.2 (T > 1200°C, 温度过高且可能开裂)
3. 冷却速率计算
3.1 基础冷却速率公式
CoolingRate = |T_current - T_previous| / Δt
参数说明:
T_current: 当前帧体素温度T_previous: Δt时间前的体素温度Δt: 采样时间窗口(推荐0.5-1.0秒)
3.2 滑动平均平滑
平滑公式:
CoolingRate_smoothed = Σ(CoolingRate_i) / N (i=1 to N, N=10)
使用过去10帧的平均值,消除瞬时波动。
4. 硬度映射系统
4.1 硬度倍数公式
基于冷却速率的Sigmoid函数:
HardnessMultiplier = BaseMultiplier × Sigmoid(CoolingRate)
其中:
Sigmoid(CoolingRate) = 1 + 2 / (1 + exp(-k × (CoolingRate - Threshold)))
参数说明:
BaseMultiplier = 1.0: 基准倍数Threshold = 35°C/s: 中点冷却速率k = 0.1: 曲线陡峭度(可调节)
4.2 冷却速率分类
| 冷却速率 | 范围 | 淬火方式 | 硬度表现 |
|---|---|---|---|
| 快速冷却 | > 50°C/s | 水淬 | 硬度最高 |
| 中速冷却 | 20-50°C/s | 油淬 | 硬度适中 |
| 慢速冷却 | < 20°C/s | 空冷 | 硬度低(退火) |
4.3 最终硬度计算
综合硬度公式:
FinalHardness = InitialHardness × HardnessMultiplier × TemperatureFactor
4.4 硬度对形变的影响
形变阻力公式:
HardnessFactor = 1.0 + (Hardness / MaxHardness) × 2.0
硬度越高,形变阻力越大(最大3倍阻力)。
5. 脆性计算系统
5.1 脆性系数公式
基础脆性公式:
Brittleness = BaseBrittleness + BrittlenessIncrease × CoolingRate_normalized
参数说明:
BaseBrittleness = 0.1: 基准脆性(未经淬火的钢)BrittlenessIncrease = 0.6: 最大脆性增加量CoolingRate_normalized: 归一化冷却速率
归一化公式:
CoolingRate_normalized = clamp(CoolingRate / 80°C/s, 0, 1)
5.2 脆性对开裂的影响
脆性系数与开裂概率直接相关,详见应力系统文档。
5.3 脆性可视化阈值
| 脆性范围 | 颜色 | 含义 |
|---|---|---|
| < 0.3 | 绿色 | 韧性良好 |
| 0.3 - 0.6 | 黄色 | 中度脆性 |
| ≥ 0.6 | 红色 | 高度脆性 |
6. 内部应力公式
6.1 应力分量
热应力分量(温度梯度):
StressThermal = ThermalStressCoeff × CoolingRate × (T_current - 20°C)
参数说明:
ThermalStressCoeff = 0.005: 热应力系数(可调)T_current: 当前温度(°C)- 20°C: 环境温度
相变应力分量(马氏体体积膨胀):
StressPhase = PhaseStressCoeff × MartensiteFraction
参数说明:
PhaseStressCoeff = 50.0: 相变应力系数MartensiteFraction: 马氏体转化比例
马氏体转化比例公式:
MartensiteFraction = clamp(CoolingRate / 80°C/s, 0, 1)
6.2 总应力
综合应力公式:
InternalStress = StressThermal + StressPhase
6.3 应力松弛机制
温度驱动的松弛公式:
RelaxationFactor =
0.99 (T < 100°C, 常温慢松弛)
0.90 (200°C ≤ T < 400°C, 回火快松弛)
0.85 (T ≥ 400°C, 快速松弛)
每帧更新:
InternalStress = InternalStress × RelaxationFactor
7. 相态系统
7.1 相态枚举
EPhaseState 定义:
UENUM(BlueprintType)
enum class EPhaseState : uint8
{
Austenite = 0, // 奥氏体(软)
Martensite = 1, // 马氏体(硬)
Pearlite = 2, // 珠光体(中)
Cracked = 3 // 开裂(永久缺陷)
};
7.2 相变判定规则
奥氏体→马氏体(淬火):
if (Temperature > 800°C && CoolingRate > 20°C/s)
{
PhaseState = EPhaseState::Martensite;
// 硬度和脆性提升
}
奥氏体→珠光体(退火):
if (Temperature > 800°C && CoolingRate < 20°C/s)
{
PhaseState = EPhaseState::Pearlite;
// 硬度适中,脆性低
}
重置相态:
if (Temperature > 800°C && TimeAbove800C > 5.0s)
{
PhaseState = EPhaseState::Austenite;
// 材料回到软态,可重新淬火
}
8. 三阶段可视化设计
8.1 阶段1:淬火过程(临时高辨识度)
顶点颜色强制覆盖:
// R通道:温度的互补色
R = 1.0 - Temperature / MaxTemperature
// G通道:冷却速率(快=绿色,慢=红色)
G = clamp(1.0 - CoolingRate / 80°C/s, 0, 1)
// B通道:硬度倍数(暗色=软,亮色=硬)
B = (Hardness - MinHardness) / (MaxHardness - MinHardness)
// A通道:脆性(透明=韧性,不透明=脆)
A = Brittleness
材质临时参数:
- 自发光:启用,随温度变化
- 金属度:暂时设为1.0(全金属感)
- 粗糙度:暂时设为0.0(镜面反光)
8.2 阶段2:冷却过渡(逐步恢复正常)
颜色过渡公式(0.5-1.0秒):
// 插值因子
Alpha = (CurrentTime - QuenchStartTime) / TransitionDuration
// R通道:温度回归到常温
R = Lerp(TemporaryR, 0.0, Alpha)
// G通道:恢复到打磨度
G = Lerp(TemporaryG, PolishAmount, Alpha)
// B通道:恢复到噪声种子
B = Lerp(TemporaryB, NoiseSeed, Alpha)
// A通道:保留相态标记
A = PhaseState // 0=奥氏体, 1=马氏体, 2=珠光体, 3=开裂
材质过渡:
// 自发光:指数衰减至0
Emissive = TemporaryEmissive × exp(-Alpha × 5.0)
// 金属度/粗糙度:恢复到打磨度驱动
Metallic = 0.5 + PolishAmount × 0.5
Roughness = 0.6 - PolishAmount × 0.4
8.3 阶段3:最终真实表现(永久保留)
8.3.1 回火色系统
回火色映射表:
| 回火温度 | 颜色 | RGB值 |
|---|---|---|
| 20-150°C(无回火) | 银灰色 | (0.8, 0.8, 0.8) |
| 150-200°C | 淡黄色 | (0.95, 0.9, 0.7) |
| 200-250°C | 金黄/麦秆色 | (0.95, 0.8, 0.4) |
| 250-300°C | 棕色 | (0.7, 0.5, 0.3) |
| 300-350°C | 紫色 | (0.6, 0.4, 0.7) |
| 350-400°C | 蓝色 | (0.4, 0.5, 0.8) |
| >400°C | 灰色 | (0.6, 0.6, 0.6) |
实现方式: 根据最后回火温度设置顶点TemperColor属性。
8.3.2 氧化层表现
OxidationLevel 属性定义(0-1):
| 冷却介质 | OxidationLevel | 视觉效果 |
|---|---|---|
| 水淬 | 0.8-1.0 | 深色氧化层 |
| 油淬 | 0.4-0.6 | 浅棕色氧化层 |
| 空冷 | 0.1-0.3 | 轻微氧化 |
8.3.3 最终材质组合
基础颜色公式:
BaseColor = OxidationColor × (1 - PolishAmount) + TemperColor × PolishAmount
参数说明:
OxidationColor: 基于OxidationLevel的深灰色TemperColor: 基于TemperColor的回火色PolishAmount: 打磨度(打磨后露出金属底色)
8.3.4 相态的微妙影响
虽然马氏体组织肉眼不可见,但通过细微色调表现:
- 马氏体区域: 略微更冷色调(蓝灰倾向)
- 珠光体区域: 略微更暖色调(棕灰倾向)
- 奥氏体区域: 中性灰调
9. 实现架构
9.1 GPU-CPU分工
GPU Compute Shader职责:
- 体素层面热力学计算
- 温度场更新
- 冷却速率计算(滑动平均)
- 相态判定
- 热应力计算
CPU职责:
- 顶点属性更新
- 硬度/脆性公式应用
- 相态采样到顶点
- 三阶段可视化逻辑
- 材质参数更新
9.2 数据流
温度更新(GPU)
↓
冷却速率计算(GPU)
↓
相态判定(GPU)
↓
硬度/脆性公式(CPU)
↓
顶点属性更新(CPU)
↓
材质可视化(CPU)
9.3 性能优化
冷却速率计算:
- 使用Ping-Pong双缓冲避免冲突
- 滑动平均使用历史缓冲,减少计算量
相态判定:
- 只在温度变化时重新计算
- 使用标志位避免重复判定
可视化:
- 临时效果使用简单着色器
- 最终效果复用现有材质系统
10. 参数配置
10.1 可调参数(蓝图可配)
| 参数名 | 默认值 | 范围 | 说明 |
|---|---|---|---|
CriticalTempLow |
800.0°C | 600-900 | 临界下限 |
CriticalTempHigh |
1200.0°C | 1100-1400 | 临界上限 |
GoldTempMin |
900.0°C | 800-1000 | 黄金区间下限 |
GoldTempMax |
1100.0°C | 1000-1200 | 黄金区间上限 |
CoolingRateThreshold |
35.0°C/s | 20-50 | Sigmoid中点 |
SigmoidK |
0.1 | 0.05-0.2 | 曲线陡峭度 |
ThermalStressCoeff |
0.005 | 0.001-0.01 | 热应力系数 |
PhaseStressCoeff |
50.0 | 20-100 | 相变应力系数 |
RelaxationTimeNormal |
60.0s | 30-120 | 常温松弛时间 |
RelaxationTimeTemper |
10.0s | 5-20 | 回火松弛时间 |
10.2 调试工具
- 体素可视化:显示温度、冷却速率、相态
- 顶点属性检查:硬度、脆性、应力值
- 时间线:记录淬火-回火过程
- 统计面板:覆盖率、平均硬度、最大脆性
11. 实施计划
11.1 第一阶段:核心公式(1天)
- 冷却速率计算
- 硬度/脆性公式
- 相态判定逻辑
- 单元测试
11.2 第二阶段:顶点属性(1天)
- 顶点属性扩展
- 公式应用到顶点
- 材质参数更新
- 基础可视化
11.3 第三阶段:三阶段可视化(1-2天)
- 淬火过程临时效果
- 冷却过渡动画
- 回火色系统
- 氧化层表现
- UI辅助工具
11.4 第四阶段:集成测试(0.5天)
- 完整流程测试
- 性能Profiling
- 参数调优
- 文档更新
12. 已知限制
- 相变模型经验化: 真实马氏体转变需要CCT曲线,当前用冷却速率阈值近似
- 各向同性假设: 真实钢有晶粒取向,当前材料各向同性
- 简化热力学: 忽略形变生热、磁性等二次效应
13. 引用
- 对应需求: ../requirements/05-淬火退火相变需求.md
- 总体架构: 00-锻造系统总体技术架构.md
- 原始设计文档(归档): ../_archive/plans/2026-01-23-淬火退火相变系统设计.md
- 相关专题(物理模拟): 04-物理模拟-加工硬化与晶粒演化设计.md