maya拼图随机打乱工具插件

以前做的一个小案例,拼图打乱工具,效果如下图所示:
在这里插入图片描述
打乱前需要record一下原始位置,之后,点击random打乱后的效果如下:
在这里插入图片描述
点击reset可以还原原始位置:

代码分享如下:

//coded by JingHai Tian in 2015

//this procedure can order the select objects randomly.
global proc tjh_random_order_proc()
{
 
	if (`windowPref -exists tjh_random_order_proc_window `)
		    windowPref -remove  tjh_random_order_proc_window;     

			  
	if (`window -exists tjh_random_order_proc_window `)
			  deleteUI tjh_random_order_proc_window;
 
         window -title "南无阿弥陀佛" -w 300  -h 100 tjh_random_order_proc_window ;
         columnLayout -w 100 ;
             text -h 50 -l "   随机顺序排列工具   Random Order Tool 1.0 ";
             rowLayout -numberOfColumns 3
			    -columnWidth3 100 100 100
			    -adjustableColumn 2
			    
			    -columnAlign  1 "right"
			    -columnAttach 1 "both"     0
			    -columnAttach 2 "both"  0;
             
             button -w 100 -l "record" -c "tjh_random_order__recordOld";
             button -w 100 -l "reset" -c "tjh_random_order__restore";
             button -w 100 -l "random" -c "tjh_random_order__random";
             setParent ..;

         showWindow tjh_random_order_proc_window;
}

//record the old order ids.
global proc tjh_random_order__recordOld()
{
    global float $oldPosArrays_x[];
    global float $oldPosArrays_y[];
    global float $oldPosArrays_z[];
    global string $oldSelects[];
    string $selects[]= ` ls -sl `;
    $oldSelects = $selects;
    

    for($i=0; $i<size($selects);$i++)
    {
       $oldPosArrays_x[$i]= ` getAttr ($selects[$i]+".tx") `;        
       $oldPosArrays_y[$i]= ` getAttr ($selects[$i]+".ty") `;      
       $oldPosArrays_z[$i]= ` getAttr ($selects[$i]+".tz") `;
      
    }
}


global proc tjh_random_order__restore()
{
    global float $oldPosArrays_x[];
    global float $oldPosArrays_y[];
    global float $oldPosArrays_z[];
    global string $oldSelects[];
    select -r $oldSelects; 
    

    for($i=0; $i<size($oldSelects);$i++)
    {
       setAttr ($oldSelects[$i]+".tx") $oldPosArrays_x[$i]; 
       setAttr ($oldSelects[$i]+".ty") $oldPosArrays_y[$i];
       setAttr ($oldSelects[$i]+".tz") $oldPosArrays_z[$i];
    }

}



global proc tjh_random_order__random() // 
{
	string $selects[] =`ls -sl`;
	string $oldOrderIds[]= $selects;
        
       
        
	//print  $oldOrderIds;
	string $newOrderIds[];
	int $newIndex=0;
	int $i,$j,$k;
	
	int $selectTimes = size($oldOrderIds);

	float $mx[],$my[],$mz[];	

	//random order & select method
	while($selectTimes)
	{		
					
		
		int $randselect = rand($selectTimes);
		string $orderIdsTemp[];
		int $tmpIndex=0;

		for($k=0;$k<$selectTimes;$k++)
		{
			if($k==$randselect){ $newOrderIds[$newIndex]=$oldOrderIds[$k]; $newIndex++; };
			//print $oldOrderIds;
			
			//remove the select id from the old list.
			if($k!=$randselect){ $orderIdsTemp[$tmpIndex]=$oldOrderIds[$k]; $tmpIndex++; };
						
		}
		clear $oldOrderIds;
		$oldOrderIds = $orderIdsTemp;
		
		clear $orderIdsTemp;
		$selectTimes --;		
	}
	
	print  $selects;
	print  $newOrderIds;
	print  (size($newOrderIds));
	

	//transform the new list objects.
	for($k=0;$k<size($selects);$k++)
	{				
		$mx[$k] = ` getAttr ($selects[$k]+".tx")`;
		$my[$k] = ` getAttr ($selects[$k]+".ty")`;
		$mz[$k] = ` getAttr ($selects[$k]+".tz")`;		
	}	
   
         //transform the new list objects.
         for($k=0;$k<size($selects);$k++)
         {
                 setAttr ($newOrderIds[$k]+".tx") $mx[$k];
                 setAttr ($newOrderIds[$k]+".ty") $my[$k];
                 setAttr ($newOrderIds[$k]+".tz") $mz[$k];                 
         }
        
}

tjh_random_order_proc;
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Maya动画技术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值