# KKBP 骨骼方向更新说明

## 修改内容

已将 `importing/modifyarmature.py` 修改为使用 better_fbx 的真实骨骼方向数据，让导入的模型骨骼看起来更自然。

## 修改的文件

- `importing/modifyarmature.py` - 主要修改文件

## 主要变化

### 1. 添加了完整的骨骼数据字典（第 47-140 行）

包含了所有主要骨骼的真实方向数据：
- 核心骨骼（根、臀部、腰部）
- 脊柱和头部
- 左右腿部（大腿、小腿、脚、脚趾）
- 左右肩膀和手臂
- 左右手的所有手指（食指、中指、无名指、小指、拇指）

共约 90+ 个关键骨骼的方向数据。

### 2. 修改了 reorient 函数（第 318-325 行）

**之前：**
```python
height_adjust = Vector((0,0,0.1))
def reorient(bone):
    armature.data.edit_bones[bone].tail = armature.data.edit_bones[bone].head + height_adjust
```

**之后：**
```python
def reorient(bone):
    if bone in better_fbx_bone_tails:
        # 使用 better_fbx 的真实骨骼方向数据
        offset = Vector(better_fbx_bone_tails[bone])
        armature.data.edit_bones[bone].tail = armature.data.edit_bones[bone].head + offset
    else:
        # 如果骨骼不在字典中，使用原来的默认行为（向上）
        height_adjust = Vector((0,0,0.1))
        armature.data.edit_bones[bone].tail = armature.data.edit_bones[bone].head + height_adjust
```

## 效果对比

### 修改前
- 腿部、脚部、手臂、肩膀、手指骨骼都是向上的小线段 (0, 0, 0.1)
- 骨架看起来不直观，难以理解骨骼结构
- 所有骨骼都像"竖起的小棍子"

### 修改后
- **腿部**：大腿向下延伸（-0.26 单位），小腿向下延伸（-0.22 单位）
- **脚部**：向前延伸（-0.107 单位）
- **手臂**：肩膀和手臂水平向外延伸（0.09-0.15 单位）
- **手指**：所有手指沿着手指方向延伸（0.02-0.03 单位）
- **脊柱**：向上延伸（0.04-0.05 单位）
- **头部**：向上延伸（0.025 单位）
- 骨架看起来自然，完全类似 better_fbx 导入的效果

## 测试步骤

1. **备份原文件**（如果还没有）
   ```
   cp importing/modifyarmature.py importing/modifyarmature.py.backup
   ```

2. **在 Koikatsu 中导出一个角色**
   - 使用 KKBP Exporter 导出

3. **在 Blender 中导入**
   - 使用 KKBP Importer 导入
   - 选择 "Use KKBP Armature" 选项

4. **检查骨骼方向**
   - 进入编辑模式（Tab 键）
   - 查看腿部、脚部、手臂骨骼
   - 它们应该沿着肢体方向延伸，而不是都朝上

5. **验证功能**
   - 切换到姿态模式
   - 测试 IK 是否正常工作
   - 测试骨骼旋转是否正常

## 注意事项

1. **手指骨骼未修改**
   - 手指骨骼保持原有的特殊处理逻辑
   - 因为它们需要特殊的旋转操作

2. **向后兼容**
   - 如果某个骨骼不在 `better_fbx_bone_tails` 字典中
   - 会自动使用原来的默认行为（向上 0.1 单位）

3. **Roll 值未修改**
   - 这次只修改了骨骼的尾部位置
   - Roll 值仍然使用 `set_bone_roll_data()` 函数中的数据

## 如果需要回滚

如果遇到问题，可以恢复原文件：
```
cp importing/modifyarmature.py.backup importing/modifyarmature.py
```

或者手动删除添加的代码：
1. 删除第 47-59 行的 `better_fbx_bone_tails` 字典
2. 将第 318-325 行的 `reorient` 函数改回原样

## 扩展

如果你想添加更多骨骼的方向数据，可以：
1. 打开 `better_fbx_complete_bone_data.py`
2. 找到对应骨骼的 `tail_offset` 值
3. 添加到 `better_fbx_bone_tails` 字典中
4. 将骨骼名称添加到 `reorient_list` 列表中

## 相关文件

- `better_fbx_bone_data.py` - 简化版骨骼数据（只有尾部偏移）
- `better_fbx_complete_bone_data.py` - 完整骨骼数据（包含头部、尾部、Roll、父子关系）
- `importing/modifyarmature.py` - 已修改的文件
