From 47e48d3112da0bdd2a87ec87178ab5e8d4dc2f16 Mon Sep 17 00:00:00 2001 From: starmen1265 Date: Fri, 28 Nov 2025 17:21:37 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 134 ++++++------------------------------------------------ 1 file changed, 13 insertions(+), 121 deletions(-) diff --git a/README.md b/README.md index dc353c1..dfacf42 100644 --- a/README.md +++ b/README.md @@ -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实现不同的变形算法 - 添加新的物理参数(弹性、硬度等) - 实现更复杂的碰撞检测 - 集成第三方物理引擎