This commit is contained in:
2025-11-30 22:42:19 +08:00
parent de46c4b073
commit 618e2abae5
11 changed files with 1238 additions and 3749 deletions

View File

@@ -0,0 +1,144 @@
# IKFK Switch Tool
## 概述
IKFK Switch Tool 是一个用于在Maya中实现IK和FK动画之间无缝切换的工具。该工具从原始MEL脚本转换为Python版本提供更好的跨版本兼容性。
## 版本信息
- **版本**: V1.0
- **兼容性**: Maya 2018+
- **语言**: Python
- **原始版本**: MEL (ikfk_switch.mel)
## 功能特性
### 主要功能
1. **无缝切换**: 在IK和FK动画之间进行无缝切换保持动画连续性
2. **自动匹配**: 切换时自动匹配控制器位置和旋转
3. **关键帧设置**: 自动在切换点设置关键帧
4. **预设支持**: 内置ADV绑定预设支持快速设置
### UI功能
- **FK控制器加载**: 加载FK骨骼和控制器
- FK Joint Root/Mid/End
- FK Ctrl Root/Mid/End
- **IK控制器加载**: 加载IK骨骼和控制器
- IK Joint Root/Mid/End
- IK Ctrl Root (IK手柄)
- IK Ctrl Pole (极向量控制器)
- **切换控制器**: 设置切换属性
- Switch Ctrl (切换控制器)
- Switch Attr (切换属性名称)
### 辅助功能
- **ADV Build**: 快速为ADV绑定设置IKFK切换
- **Empty**: 清空所有输入字段
- **BiliBili**: 打开教程链接
## 使用方法
### 基本使用流程
1. **加载FK控制器**
- 选择FK骨骼根节点点击"< FK Joint Root"
- 选择FK骨骼中间节点点击"< FK Joint Mid"
- 选择FK骨骼末端节点点击"< FK Joint End"
- 重复以上步骤加载FK控制器
2. **加载IK控制器**
- 选择IK骨骼节点点击相应按钮
- 选择IK控制器和极向量控制器
3. **设置切换控制器**
- 选择用于切换的控制器,点击"< Switch Ctrl"
- 在通道盒中选择切换属性,点击"< Switch Attr"
4. **构建切换系统**
- 点击"<<< Build Seamless Switching >>>"按钮
- 系统会自动创建必要的属性和脚本节点
5. **使用切换功能**
- 在切换控制器上找到"IKFK_Seamless"属性
- 切换该属性值IK=0, FK=1即可实现无缝切换
### ADV绑定快速设置
如果使用ADV绑定系统可以使用预设功能
1. 展开"Edit"面板
2. 点击"<<< ADV Build >>>"
3. 系统会自动为左右手臂和腿部设置IKFK切换
## 技术实现
### 核心组件
1. **IKFKSwitchUI类**: UI界面管理
- 创建和管理UI窗口
- 处理用户输入
- 调用切换逻辑
2. **seamless_switching函数**: 核心切换逻辑
- 创建数据存储locator
- 添加必要属性
- 建立属性连接
- 创建脚本节点
3. **create_switching_script函数**: 创建全局切换脚本
- 使用MEL脚本实现切换逻辑
- 处理约束和关键帧
4. **create_script_job函数**: 创建脚本任务
- 监听属性变化
- 自动触发切换
### 兼容性设计
- 使用`maya.cmds``maya.mel`模块,确保跨版本兼容
- 避免使用版本特定的API
- 使用f-string格式化Python 3.6+
- 异常处理确保稳定性
## 工具架集成
该工具已集成到Nexus Animation工具架
- **图标**: ikfk_switch.png
- **位置**: 动画工具架末尾
- **调用**: `import animation_tools.ikfx_switch; animation_tools.ikfx_switch.show()`
## 文件位置
### Maya 2023
- 脚本: `scripts/animation_tools/ikfx_switch.py`
- 图标: `icons/ikfk_switch.png`
- 工具架: `shelves/shelf_Nexus_Animation.mel`
### Maya 2025
- 脚本: `scripts/animation_tools/ikfx_switch.py`
- 图标: `icons/ikfk_switch.png`
- 工具架: `shelves/shelf_Nexus_Animation.mel`
## 注意事项
1. **属性要求**: 切换属性必须有最小值和最大值设置
2. **命名规范**: 建议使用清晰的命名规范以便识别
3. **关键帧**: 切换会在当前帧和前一帧设置关键帧
4. **选择保持**: 切换后会恢复原始选择
## 故障排除
### 常见问题
1. **切换不工作**
- 检查所有必需的对象是否存在
- 确认切换属性已正确设置
- 查看脚本编辑器的错误信息
2. **位置不匹配**
- 确保FK和IK骨骼层级正确
- 检查约束设置
- 验证控制器方向
3. **属性加载失败**
- 确保在通道盒中选择了属性
- 检查属性是否可关键帧化