
Maya 的角色绑定由大量 NURBS 曲线做控制器:手指控制器、脸部控制器、道具挂点、次级动画控制器。一个完整的角色绑定动辄一百到两百个曲线控制器。
常见的需求是「整体移动这个角色」——比如把角色挪到场景另一处。做法上要先把所有控制器选中,再打一个组或者加一个父级。这时候怎么选?
方法是有的,但都不理想。第一种是框选:相机里角色占满屏时可行,但背面与内部的控制器框不到。第二种是 Window > Outliner 里按类型过滤 nurbsCurve:这个会把场景里所有曲线都选上,包括参考线、路径曲线、其他角色的控制器。第三种是选根控制器然后按层级选:只有绑定是干净父子层级时才成立,而实际绑定往往有约束与分组,层级不连贯。
这个脚本解决的就是这个:它不按类型选,而是按「属于这个角色」来选——你选中角色身上任何一个控制器,它反查整个绑定的控制曲线集合。
反查的依据通常是控制器的命名前缀,或者是它们共享的某个父组。具体实现可以看脚本源码(1,784 字节,不到两百行)。
二、包内结构:三个文件,两个版本
这个包极小,解压后是 `Select-ALL-Curve-Controls-2-PY` 目录,里面只有三样:`SelectAllCurves_v2.py`(1,784 字节)、`SelectAllCurves.py`(1,718 字节)、`SelectAll.jpg`(182,167 字节的演示图)。
两个 .py 是新旧两版。v2 是现在的版本(体积多 66 字节,改动很小,说明是修补而不是重写)。旧版保留着可能是为了兼容老版本的 Maya。
用的时候只放 v2 那一份就行。把两个都放进 scripts 目录会在脚本编辑器里看到两个相似的名字,容易混。
`SelectAll.jpg` 是演示截图(182 KB,比两个脚本加起来还大得多),展示选中效果。看一眼能明白它的行为边界。
整个包 186,118 字节里 97.9% 是那张 jpg,脚本本体只有 3.5 KB。这是这类小工具包的常态——它卖(或者送)的是一个想法,不是一个程序。
三、两种用法:脚本编辑器与 shelf 按钮
第一种用法最直接:打开 Maya 的 Script Editor(右下角的 {} 图标),切到 Python 标签,把 `SelectAllCurves_v2.py` 的内容贴进去,选中角色任意部位,全选脚本内容按 Ctrl+Enter 执行。
第二种是做成 shelf 按钮,这是长期用的正确做法。步骤:先把 .py 文件复制到 Maya 的 scripts 目录(路径可以在脚本编辑器的 Help 里查到,通常是我的文档下的 maya/版本号/scripts),然后在 shelf 上右键 Custom,新建一个按钮,Type 选 Python,命令里写 `import SelectAllCurves_v2` (或者 `reload` + 调用主函数,取决于脚本暴露的入口)。
第二种做法的好处是变成一键。这类脚本的价值就在于减少操作摩擦,如果每次都要开脚本编辑器贴代码,那省下的时间又被吃回去了。所以强烈建议第一次用的时候就把它做成按钮。
一个小细节:如果脚本里没有明确的函数入口(很多单文件脚本是直接执行的),做成 shelf 按钮时要看它末尾是怎么组织的。1,784 字节的规模通常是一个直接执行的脚本,那就在按钮里用 `exec(open(…).read())` 的方式调,或者手动改造出一个 main 函数。
四、它的行为边界:能选什么,选不了什么
能选的:属于当前角色绑定的 NURBS 控制曲线(curve 类型的控制器)。
选不了的(根据「NURBS 控制曲线」这个限定,属于合理推断):非曲线类型的控制器。有些绑定会用 locator、joint 或者自定义形状的 mesh 做控制器,这些不在它的选择范围内。如果你用的是这类绑定,脚本不会帮你选到它们。
另一个边界是「属于这个绑定」的判定方式。如果角色是单独导入的、命名规范,那没问题;如果场景里有多个角色、命名前缀相同(比如都是从同一套模板改的),可能会把别的角色的控制器也选进来。这种情况要先看一眼选择结果再操作。
还有一种是引用的角色(reference)。Maya 的 reference 机制下对象的完整路径带 reference 前缀,选择逻辑是否能处理要看实现。这种场景建议先在小工程里试一次。
这些不是缺陷,是这类小脚本的必然边界——它没有 UI、没有配置项,只有一条规则。用之前花两分钟试一次,比在项目里翻车省事。
五、更好的替代方案:Maya 自带的功能
在推荐这个脚本之前,应该先说清楚 Maya 本身能做什么,免得有人装了用不上。
第一种替代:给角色绑定的所有控制器打一个组(或者挂在同一个 transform 下),然后用组去整体移动。这是最规范的做法——绑定师本来就该这么做。如果你的绑定有这个组,那这个脚本就不需要了。
第二种替代:用 Display Layer 把所有控制器放在一个层里,需要时按层选。这需要预先整理。
第三种替代:Character Set(Maya 的 Character 节点)。把角色的所有控制器加进一个 Character Set,之后可以用 Character Set 一键选全。这是 Maya 自带的官方方案,而且比脚本更稳。
所以这个脚本真正的适用场景是:拿到别人的绑定、没有干净的组、没有 Character Set、也不想手工整理。这种情况下它是最快的路。
说这一点是因为很多人会先装脚本再想需求。正确的顺序是先看 Maya 自带的东西够不够,不够再考虑外部脚本。
六、来源与使用提醒
这个条目的来源信息最弱,必须说清楚。
psdly 页面没有 publisher 字段,也没有 source_url——也就是没有指向任何官方站点或作者的链接。包内三个文件里也没有授权协议、没有作者署名、没有版本历史。
所以:作者是谁、原始发布渠道是哪里、有没有付费版本、授权条款是什么,这些我们都无法核实。本条不编造这些信息。
这意味着两件事。一是使用时要注意来源不明——脚本会执行任意代码,虽然 1.7 KB 的规模不太可能藏东西,但按规范应该在运行前读一遍源码(不到两百行,五分钟能看完),至少确认它没有往外部发请求。二是商用前要自己确认授权,因为包内没有任何授权文件。
价格方面同样无法核实——psdly 页面没给出价格与源链接,所以本条不写金额,也不猜。
功能上它是有效的:一键选中整个绑定的控制曲线,这个需求真实存在,实现逻辑也不复杂。如果你读完源码觉得干净,用它没有风险;如果想要有作者支持与明确授权的版本,这个条目不适合,得去找原始来源。
本条记录的是安装文件本身,来源与授权未核实。
原产品页:https://www.psdly.site/select-all-curve-controls-script-for-maya
封面图片来自作者官方产品页。本文为中文整理,功能与兼容性信息以作者官方页面与包内说明为准。资源仅供学习交流,商业使用请购买正版授权。














暂无评论内容