更新 README.md
This commit is contained in:
@@ -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源码
|
└── 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实现不同的变形算法
|
|
||||||
- 添加新的物理参数(弹性、硬度等)
|
- 添加新的物理参数(弹性、硬度等)
|
||||||
- 实现更复杂的碰撞检测
|
- 实现更复杂的碰撞检测
|
||||||
- 集成第三方物理引擎
|
- 集成第三方物理引擎
|
||||||
|
|||||||
Reference in New Issue
Block a user