<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ALA's HOME &#187; Rigging Demo</title>
	<atom:link href="http://vlookr.com/tag/rigging-demo/feed" rel="self" type="application/rss+xml" />
	<link>http://vlookr.com</link>
	<description>Ain't No High Mountain</description>
	<lastBuildDate>Tue, 14 Sep 2010 14:34:24 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>整合自定义右键菜单实现FK/IK无缝切换</title>
		<link>http://vlookr.com/2009/03/maya-dagmenuproc-script-controls-right-mouse-button-for-fkik-seamless-switch.html</link>
		<comments>http://vlookr.com/2009/03/maya-dagmenuproc-script-controls-right-mouse-button-for-fkik-seamless-switch.html#comments</comments>
		<pubDate>Mon, 09 Mar 2009 12:44:07 +0000</pubDate>
		<dc:creator>XRacZ</dc:creator>
				<category><![CDATA[CG]]></category>
		<category><![CDATA[绑定]]></category>
		<category><![CDATA[dagMenuProc]]></category>
		<category><![CDATA[FK/IK Seamless]]></category>
		<category><![CDATA[Maya]]></category>
		<category><![CDATA[Mel编程]]></category>
		<category><![CDATA[Rigging Demo]]></category>
		<category><![CDATA[Victor Vinyals]]></category>
		<category><![CDATA[右键菜单]]></category>
		<category><![CDATA[无缝切换]]></category>

		<guid isPermaLink="false">http://vlookr.com/?p=241</guid>
		<description><![CDATA[原创文章，转载请注明出处！！！
今天又拿Victor Vinyals的Rigging Demo 说事了，没办法，实在太经典了，有很多东西值得去挖，比如本文要介绍的自定义右键菜单实现FK/IK无缝切换，如果您还不知道如何实现无缝切换，请先学习《单骨骼FK/IK无缝切换技术》，至于整合Mel进.ma（.mb）文件，请参见《将Mel整合进.ma（.mb）文件》。此外，虽然无法下到Victor的源文件，但有个叫Nimo的免费Rigging也为我们的研究提供了很好的参考，本文将借鉴里面的代码来说说实现的方法。

如何改造右键菜单？
Maya自带的dagMenuProc.mel（在Autodesk\Maya&#60;版本号&#62;\scripts\others目录可找到）提供了一系列Maya右键菜单的实现方法，我们不必深究每行代码的意思，只需知道如何改造dagMenuProc(string $parent, string $object)这个函数里的内容即可，因为它才是关键！我们还需要另外定义一个函数来存储自定义右键菜单，再用dagMenuProc来调用它，这是一种较科学的方法，因为当我们需要为自己的右键菜单定义新功能或修改的时候，不必去翻dagMenuProc里的一大堆代码，我们尽可能保留它的原样，存储在一个脚本节点里，只需修改自定义右键菜单函数里的内容即可。
本文将借用Seith的源文件（已绑定好）来做范例，推荐下载来学习本教程：custom_right_click_button_for_fkik_seamless_switch_init.ma
步骤：
1、打开这个文件（custom_right_click_button_for_fkik_seamless_switch_init.ma）。进入表达式编辑器（Expression Editor）,在Select Filter菜单里选中By Script Node Name。
2、在表达式编辑器的Script Node Name里填入FKIK_switch_Node，我们将创建这个脚本节点来存储FK/IK无缝切换的代码，将ikfk_switch_002.zip里的代码粘贴进脚本（Script）框，点击“创建”，并把执行条件（Execute On）改为Open/Close。
3、同上方法，创建一个叫customMenu_Node的脚本节点来存储以下代码：
global proc customMenu (string $shortName)
{
if($shortName==&#8221;L_wrist_JNT&#8221; &#124;&#124; $shortName==&#8221;L_elbow_JNT&#8221; &#124;&#124; $shortName==&#8221;L_shoulder_JNT&#8221;)
{
menuItem   -label &#8220;FK&#124;IK Switch&#8221;    -command &#8220;IkFk_switch( \&#8221;\&#8221;, \&#8221;L_\&#8221;, \&#8221;arm\&#8221; );&#8221;    -enable 1   -radialPosition &#8220;N&#8221;    -enableCommandRepeat 1;
}
}
这就是我们要定义的自定义右键菜单函数，其实很容易理解，if语句用来判断了当鼠标指在哪个物体上时，创建什么样的菜单，这里我定义了在L_wrist_JNT、L_elbow_JNT、L_shoulder_JNT这几个骨骼上弹出指定的菜单，“&#124;&#124;”符号表示或者。
menuItem命令是用来创建菜单的，-label标签用来记录菜单名；-command标签用来记录要执行的Mel命令，记住，命令里标点符号前要加&#8220;\&#8221;；-radialPosition用来记录菜单的方位：
N——北、S——南、W——西、E——东、SW——西南、SE——东南、NW——西北、NE——东北
其它标签不做详细介绍，懂得照着用就行。
4、现在我们要改动下dagMenuProc.mel文件，记得复制一份出来修改，而不是修改默认目录里的那个。找到dagMenuProc(string $parent, string $object)这个函数，在string $shortName = `substitute &#8220;.*&#124;&#8221; $object &#8220;&#8221;`;一句下面加入这段:
if($shortName==&#8221;L_wrist_JNT&#8221; &#124;&#124; $shortName==&#8221;L_elbow_JNT&#8221; &#124;&#124; $shortName==&#8221;L_shoulder_JNT&#8221;)
{
customMenu $shortName;
}
该判断将调用customMenu函数在指定的位置生成自定义菜单，此时还得把后面一大段（即代码最后“} else {……}”前）用else {……}括起来，即在其他位置依然弹出Maya默认菜单。把修改后的dagMenuProc代码，全部添加进表达式编辑器，创建一个叫dagMenuProc_Node的节点来保存即可（方法还是同上）。可以下载我修改的文件来参考下：dagmenuproc_mod.mel
5、最后这步相当重要，再新建一个脚本节点executeOnFileLoad，里面填入一句scriptNode [...]]]></description>
		<wfw:commentRss>http://vlookr.com/2009/03/maya-dagmenuproc-script-controls-right-mouse-button-for-fkik-seamless-switch.html/feed</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
	</channel>
</rss>

