// 获取选中的对象
string $selectedObjects[] = `ls -selection`;
// 查询选定对象的真实坐标
float $location[] = `xform -q -ws -rp $selectedObjects[0]`;
if (size($selectedObjects) == 0) {
warning "请选中一个对象";
} else {
// 使用第一个选中的对象名创建关节
string $jointName = $selectedObjects[0] + "_joint";
joint -name $jointName;
// 移动控制器到目标点
xform -ws -t $location[0] $location[1] $location[2] $jointName;
// 删除历史记录
delete -ch $jointName;
// 冻结变换
makeIdentity -apply true -t 1 -r 1 -s 1 -n 0 $jointName;
// 创建主控制器
string $mainControllerName = $selectedObjects[0] + "_main_ctrl";
string $mainController[] = `circle -name $mainControllerName -normal 0 1 0 -radius 20`; // 将半径改为10倍
// 移动控制器到目标点
xform -ws -t $location[0] $location[1] $location[2] $mainControllerName;
// 删除历史记录
delete -ch $mainControllerName;
// 冻结变换
makeIdentity -apply true -t 1 -r 1 -s 1 -n 0 $mainControllerName;
// 设置主控制器颜色为黄色
setAttr ($mainController[0] + ".overrideEnabled") 1;
setAttr ($mainController[0] + ".overrideColor") 17; // 17 代表黄色
// 设置主控制器外圈宽度为2
setAttr ($mainController[0] + ".lineWidth") 2;
// 创建副控制器
string $secondaryControllerName = $selectedObjects[0] + "_secondary_ctrl";
string $secondaryController[] = `circle -name $secondaryControllerName -normal 0 1 0 -radius 15`; // 将半径改为10倍的一半
// 移动控制器到目标点
xform -ws -t $location[0] $location[1] $location[2] $secondaryControllerName;
// 删除历史记录
delete -ch $secondaryControllerName;
// 冻结变换
makeIdentity -apply true -t 1 -r 1 -s 1 -n 0 $secondaryControllerName;
// 设置副控制器颜色为黄色
setAttr ($secondaryController[0] + ".overrideEnabled") 1;
setAttr ($secondaryController[0] + ".overrideColor") 17; // 17 代表黄色
// 将副控制器放置在主控制器的层级下
parent $secondaryController[0] $mainController[0];
// 将关节约束到副控制器
parentConstraint -maintainOffset $secondaryController[0] $jointName;
// 将关节缩放约束到副控制器
scaleConstraint -maintainOffset $secondaryController[0] $jointName;
// 将关节加入到选择的对象中
select -r $selectedObjects[0] $jointName;
// 执行 smoothBind 将关节绑定到选中的对象上
SmoothBindSkin;
// 创建组并重命名
string $group = `group -em -name ($selectedObjects[0] + "_ctrl_grp")`; // 创建空组并命名
parent $mainController[0] $group; // 将主控制器放入组中
parent $selectedObjects[0] $group; // 将对象放入组中
parent $jointName $group; // 将对象放入组中
//选中主控制器
select -r $mainControllerName;
}