一半君的总结纸

听话只听一半君

尸体1: hj Isolate Display 自定义的选显

看header上写的是2007年,lz那时还是个屌丝 (现在依然是,不过是个大龄屌丝).

这个script作用就是模型建复杂了以后,选显(isolate display)的时候用的,lz已经忘记为啥会有这个垃圾了,不过好像作用应该是isolate display之前和之后,保持当前选择的componet 如 vertex edge face 不变, 总之是给懒人用的, 默认viewport顶上那个菜单只是isolate display, 好像不保持选的面。

总之lz已经忘记这个是干嘛的了,如果所有物体依然显示整个,那模型如果是一个很复杂的整体(比如生物模型)不还是一样卡么?lz表示已经想不起这个的使用情形是什么了,可能是做一个散开的模型(很多个mesh,但是没有combine的吧,也许),也许lz脑子当时进水了。不过既然写了,还是留着吧,也许是个垃圾.

当时还脑残的录了个像.(恕插)

其实很短,大意就是,先把当前选择的点线面存着,然后选isolate display那个菜单,之后再选回之前选择的东西而已。看了下抬头,怪不得这么弱,原来是以前在”Core Team”的时候写的…

/*
'=========================================================================
'
' MELScript Source File -- Created with Mapy
'
' NAME: hjIsolateDisplay

' VERSION: 0.2

' AUTHOR:  oglop, han jiang , the man who really hates max

' DATE  : 10/15/2007
' EMAIL : fuckme@gmail.com

	The scripts assign a hotkey `(the key beside ESC) to Isolate Display menu.
	long live Master Ma . Long live Core Team!!! Long live lina the dark lord!!

	USAGE:

		hjIsolateDisplay(0);// installs hotkey, you can assign hotkeys by yourself, mine is `

		hjIsolateDisplay(1);// switch isolate display status, and i have assigned hotkey ` to this.

TODO:

X	isolate even when vertex edge, or face is selected

*/

// 下面设了个快捷键`
proc hjInstallIsolateDisplayHotkey()
{
	runTimeCommand
	-annotation ""
	-category "User"
	-command ("hjIsolateDisplay(1);")
	hjIsolateDisplayRunTimeCmd;

	nameCommand
	-annotation "hjIsolateDisplayNameCommand"
	-command ("hjIsolateDisplayRunTimeCmd")
	hjIsolateDisplayNameCommand;

	hotkey -keyShortcut "`" -name ("hjIsolateDisplayNameCommand");

}

global proc hjIsolateDisplay (int $mode)
{

	// mode 0 install hotkey
	// mode 1 switch

	switch($mode){

	case 1:

		string $sel[]=`ls -sl`;

		string $objs[];
		// not implemented yet,
		string $vtx[],$face[],$edge[];
                // 求得所有预先选择的点线面所在的物体
		string $vtxObj[],$faceObj[],$edgeObj[];

		int $i;
		for($s in $sel){
			if(`gmatch $s "*.*"`){
				string $obj=`match "^[^\.]*" $s`;
				$objs[$i++]=$obj;

				if(`gmatch $s "*.vtx*"`){
					$vtxObj[size($vtxObj)]=$obj;
				}
				// you could use "*.e\\[*" here
				else if (`gmatch $s "*.e*"`){
					$edgeObj[size($edgeObj)]=$obj;
				}
				else if (`gmatch $s "*.f*"`){
					$faceObj[size($faceObj)]=$obj;
				}

			}
			else
				$objs[$i++]=$s;
		}

		$objs=stringArrayRemoveDuplicates($objs);

		select -r $objs;

		//hjDebug($objs);

		string $allPanels[]=`getPanel -vis`;

		string $mps[];

		string $mp;

		for($p in $allPanels){
			if (`startsWith $p "modelPanel"`){
				$mps[size($mps)]=$p;
			}
		}

		string $panel=`getPanel -wf`;

		if (size($mps)>1) {
			if(!`startsWith $panel "modelPanel"`)
				error("select a model panel first");
			else
				$mp=$panel;
		}
		else
			$mp=$mps[0];

		//string $panel=`getPanel -wf`;

		int $state = `isolateSelect -q -state $mp`;

		// automatically add new objects eg. fix clusters
		isoSelectAutoAddNewObjs $mp 1;

		enableIsolateSelect $mp (!$state);
		isolateSelect -state (!$state) $mp;

		// change sel mode
		//doMenuComponentSelection("satineSenateGownA:senateRobeHood_simMesh", "vertex");

		select -r $sel;
		// 在选回之前的物体之后,换回component selection 模式
		//hjDebug($vtxObj);
		for($vo in $vtxObj){
			doMenuComponentSelection($vo, "vertex");
		}

		for($fo in $faceObj){
			doMenuComponentSelection($fo, "facet");
		}

		for($eo in $edgeObj){
			doMenuComponentSelection($eo, "edge");
		}
	break;

	case 0:
		hjInstallIsolateDisplayHotkey();
		break;

	}

}

用pymel应该会短一半把,lz没体力改了。附上highend3d creativeCrash 的连接

ps: lz想起当时用这个干吗的了,当年cloth simulation的时候经常sim完以后k点,比如某人的hood 或者 衣服,因为是和身体分开的不同的mesh(废话显然),有时候k的时候很卡,有时候衣服有好几个mesh组成,我在k点的时候肯定是选了某些点的,所以就想isolate display之后那些点还选着,我才好继续k啊,而且我经常切来切去,来整体看看是不是k的满足自己的要求了。如果在这种特殊情形下,这个脑残script还是有点用的。

不知道新版本Maya有没有加类似的功能,lz当时用的是2008好像

Advertisements

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s

%d 博主赞过: