maya绑定技术。关于右击实现IKFK无缝切换。

我在表达式中新建了FKIK_switch_Node节点,dagMenuProc_Node节点,executeOnFileLoad节,进行强行更改damenuproc来实现... 我在表达式中新建了 FKIK_switch_Node节点,dagMenuProc_Node节点,executeOnFileLoad节,进行强行更改damenuproc来实现,在建立customMenu_Node节点是出现错误,经过测试,我觉得是加这个符号的位置不对,符号这么多我也不知道加哪!l这段mel没有问题!
会的高手,指教下!
或者发一个例子给我看下。也可以发我邮箱km1032@163.com
展开
 我来答
km1032
2012-06-02
知道答主
回答量:33
采纳率:0%
帮助的人:12.5万
展开全部
我有一种更方便的方法,不防试试,相信你肯定能测试成功。
1. 把IKFK转换的脚本编辑好,并写成
global proc 名字(这个名字是自己随意定的) ()
{
(这里放IKFK的转换脚本)
}
并在Script Editot下执行一次
2. 在Animate/Animation Editor/Expression Editor中的Script模式下创建1中的脚本,打开方式(Execute On)为Open/Close

3. 在window/Setting/Preferences/Marking Menu Editor中创建一个热核菜单,在Script Editot下把1中的名字拖到自己想放的位置上
之后可以右键给这个改名字,在这个窗口下边有个Menu name 这里的名字就是我的文档下的创建的Mel的文件名

4. 在我的文档下找到我们创建的这个文件,并打开,写成1中的格式,(即把文件中的所用东西放在大括号中,名字依旧自己定义),打开方式(Execute On)为Open/Close
5. 在Maya的安装目录下找到dagMenuProc.mel这个文件打开,把所有的东西复制到Script Editot下,找到
// label the object
string $shortName = `substitute ".*|" $object ""`;
并在此后面加
if($shortName=="控制器的名字")
{
4中的名字;
}
else
{
这里放原来文件里面后边的东西
}最后这个大括号放在最后的else的前边

6. 把5中的东西也创建在Expression Editor下,打开方式(Execute On)为Open/Close;
7. 保存文件重新打开即
xuansit
2012-05-31 · TA获得超过301个赞
知道小有建树答主
回答量:169
采纳率:0%
帮助的人:114万
展开全部
没有看到完整的代码,所以不能确定出错的地方。但图中所标关於符号的问题是这样的:
这里的符号指“英文引号”,-command标签传递的是一段字符串,用来调用你自定义的函数 IKFK_switch , 这个函数本身是带有字符串类型参数的,所以参数的引号必须写成 反斜槓+引号 的形式(\"),这是编程的强制用法。
例如,正常情况函数调用: IKFK_switch("", "L", "arm");
-command 字符串调用应该是: "IKFK_switch( \"\", \"L\", \"arm\");"
注意最前面跟最後面的引号,它们是一对的,出现在它们之间所有的引号都要写成(\")这种形式。
再次强调,是 英文引号。
追问
谢谢,没学过C语言,还是有点不明白。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
python_kn
2012-05-31 · TA获得超过346个赞
知道小有建树答主
回答量:205
采纳率:0%
帮助的人:191万
展开全部
command是控件执行语句命令的途径 举个例子
比如我有一个函数 Op 我想在点击button按钮中执行OP函数
window -width 150;
columnLayout -adjustableColumn true;
button -l "按钮" -command "Op"; //这样点击按钮时就执行Op了
showWindow;

当然还有另一种情况,就是被执行的函数有参数时
比如我有个有参数的Op函数
proc Op(string $A,string $B)
{
print ($A+"\n"+$B);
}
我要按按钮时打印sb bs
这时改如何呢?
如果写成
button -l "按钮" -command "Op(sb,bs)";
就错了
因为这事的Op函数是要输入字符类型的而上面的相当于执行 Op(sb,bs);
此时我们需要执行的是Op("sb","bs");
而在command后面加( " )就需要转义字符 ( \ )
正确的写法
window -width 150;
columnLayout -adjustableColumn true;
button -l "按钮" -command ("Op("+"\""+"sd"+"\""+","+"\""+"sd"+"\""+")");//这样点击按钮时就执行Op了
showWindow;
注意 在Op外有个括号一定要加,不然就会出错
如果你觉得加"\""很麻烦,可以把它给个变量

string $ff = "\"";
window -width 150;
columnLayout -adjustableColumn true;
button -l "按钮" -command ("Op("+$ff+"sd"+$ff+","+$ff+"sd"+$ff+")");
showWindow;
同理一些转义的字符也可以存到变量里
比如\n,\t....
有点罗嗦了,但希望可以帮到你
追问
谢谢你啊,看了楼下的这个方法试了下也能达到这效果,就不用现在这个方法了!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式