Files
BladeSmith/README.md
T
2025-08-06 23:47:59 +08:00

167 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# BladeSmith - UE5.5 打铁游戏
这是一个基于UE5.5开发的打铁游戏,使用C++实现铁锤击中铁块造成物理形变的效果。
## 系统特性
### 核心功能
- **铁块变形系统**: 使用Compute Shader实时计算铁块顶点变形
- **锤击交互**: 第一人称锤击系统,支持力度和方向检测
- **物理形变**: 基于冲击力、位置和法线的真实物理变形
- **材质系统**: 动态材质实例,实时更新变形效果
### 技术实现
- **Compute Shader**: 使用GPU并行计算顶点变形
- **双缓冲纹理**: 避免读写冲突,确保渲染稳定性
- **射线检测**: 精确的锤击碰撞检测
- **动态材质**: 实时更新变形参数
## 系统架构
### 主要组件
1. **AIronBlock** - 铁块Actor
- 管理变形纹理和Compute Shader
- 处理锤击碰撞和变形计算
- 更新动态材质参数
2. **UBladeSmithWeaponComponent** - 锤子组件
- 第一人称锤击交互
- 射线检测和碰撞处理
- 音效和动画播放
3. **FDeformationCS** - Compute Shader
- GPU并行变形计算
- 基于距离的衰减效果
- 塑性变形模拟
### 文件结构
```
Source/BladeSmith/
├── IronBlock.h/cpp # 铁块实现
├── FDeformComputeShader.h/cpp # Compute Shader
├── BladeSmithWeaponComponent.h/cpp # 锤子组件
├── BladeSmithCharacter.h/cpp # 角色类
└── BladeSmith.Build.cs # 模块配置
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实现不同的变形算法
- 添加新的物理参数(弹性、硬度等)
- 实现更复杂的碰撞检测
- 集成第三方物理引擎
## 许可证
本项目基于Epic Games的UE5.5开发,遵循相应的许可证条款。