This commit is contained in:
zhangqing
2025-11-28 19:06:56 +08:00
+13 -121
View File
@@ -1,22 +1,21 @@
# BladeSmith - UE5.5 打铁游戏
# BladeSmith - 打铁模拟游戏
这是一个基于UE5.5开发的打铁游戏,使用C++实现铁锤击中铁块造成物理形变的效果。
这是一个基于UE5开发的打铁游戏,玩家可以在游戏中体验锻造刀具的真实流程,刀具成型过程通过物理计算还原真实锻造效果,锻造每一把刀具的造型,纹路,性能都是独特的。
## 系统特性
### 核心功能
- **铁块变形系统**: 使用Compute Shader实时计算铁块顶点变形
- **锤击交互**: 第一人称锤击系统,支持力度和方向检测
- **物理形变**: 基于冲击力、位置和法线的真实物理变形
- **材质系统**: 动态材质实例,实时更新变形效果
- **切割**:通过电锯切割锻材,快速成型
- **加热** 通过温度控制锻材可塑性以及强度
- **捶打**: 通过锤击改变锻材形状
- **打磨**: 通过打磨,改变锻材表面光滑度与微调形状
- **淬火**: 通过淬火,改变锻材强度
- **强度测试**:提供场地和一些测试道具,测试刀具性能。
### 技术实现
- **Compute Shader**: 使用GPU并行计算顶点变形
- **双缓冲纹理**: 避免读写冲突,确保渲染稳定性
- **射线检测**: 精确的锤击碰撞检测
- **动态材质**: 实时更新变形参数
## 系统架构
- **GeometryScript**: 使用GeometryScript生成动态模型,并不断调整模型的形状
- **动态材质**: 通过动态材质来表现锻材表面的缺陷(锈蚀,坑洞,划痕,油污,灰尘,加热发光),并通过加工移除这些缺陷
- **以塑性力学/金属材料学/金属热处理为核心的数据模拟框架**:
- **应力损毁**: 强度不够,或者内部应力不平衡时,遇到较大冲击,刀具损毁。
- **数据存储**:刀具数据存储,每一把到存储其独特的数据,来保存其各个属性。
### 主要组件
@@ -48,114 +47,7 @@ Shaders/Private/
└── DeformationCS.usf # Compute Shader源码
```
## 使用方法
### 1. 设置输入映射
在UE编辑器中创建以下输入动作:
- **HammerAction**: 锤击输入(建议绑定鼠标左键)
- **MoveAction**: 移动输入(WASD)
- **LookAction**: 视角输入(鼠标)
- **JumpAction**: 跳跃输入(空格)
### 2. 配置角色蓝图
1. 打开角色蓝图
2. 确保HammerComponent已正确附加
3. 设置锤子网格和动画
4. 配置输入映射上下文
### 3. 放置铁块
1. 在场景中放置IronBlock Actor
2. 确保静态网格组件已设置
3. 系统会自动初始化变形纹理
### 4. 创建材质
创建支持变形的材质,包含以下参数:
- **PositionTexture**: 顶点位置纹理
- **LocalBoundsMin/Max**: 本地边界
- **DeformationStrength**: 变形强度
## 技术细节
### Compute Shader参数
```hlsl
struct Parameters
{
float3 ImpactPoint; // 冲击点
float3 ImpactNormal; // 冲击法线
float ImpactForce; // 冲击力
float DeformationRadius; // 变形半径
float Plasticity; // 塑性系数
Texture2D InputTexture; // 输入纹理
RWTexture2D OutputTexture; // 输出纹理
};
```
### 变形算法
1. **距离计算**: 计算每个顶点到冲击点的距离
2. **衰减函数**: 使用高斯衰减模拟真实物理
3. **变形计算**: 基于法线方向和冲击力计算变形量
4. **塑性应用**: 应用塑性系数实现永久变形
### 性能优化
- **区域更新**: 只更新受影响的纹理区域
- **双缓冲**: 避免读写冲突
- **异步处理**: 在渲染线程中执行Compute Shader
- **LOD支持**: 根据距离调整计算精度
## 编译和运行
### 编译要求
- UE5.5
- Visual Studio 2022
- Windows 10/11
### 编译步骤
1. 右键点击.uproject文件
2. 选择"Generate Visual Studio project files"
3. 打开生成的.sln文件
4. 编译项目
### 运行步骤
1. 在UE编辑器中打开项目
2. 确保所有输入映射已配置
3. 在场景中放置IronBlock
4. 运行游戏并测试锤击功能
## 故障排除
### 常见问题
1. **Compute Shader不工作**
- 检查GPU驱动是否支持Compute Shader
- 确认纹理格式正确
- 查看渲染日志中的错误信息
2. **变形效果不明显**
- 调整ImpactForce参数
- 增加DeformationRadius
- 检查材质参数设置
3. **性能问题**
- 减少纹理分辨率
- 缩小更新区域
- 启用LOD系统
### 调试功能
- 启用调试绘制查看射线检测
- 使用LogTemp输出调试信息
- 检查纹理资源是否正确创建
## 扩展功能
### 可能的改进
1. **多材质支持**: 不同材质的不同变形特性
2. **温度系统**: 基于温度影响变形效果
3. **声音系统**: 更真实的锤击音效
4. **粒子效果**: 锤击时的火花和灰尘
5. **工具系统**: 不同类型的锤子和工具
### 自定义开发
- 修改Compute Shader实现不同的变形算法
- 添加新的物理参数(弹性、硬度等)
- 实现更复杂的碰撞检测
- 集成第三方物理引擎