[maya][mel] select_Mesh_Group_To_replace_UV.mel – Automatically places UVs on a large number of meshes in a group.
ひさしぶりに楽しい楽しいmel script codingした。
Nurvs モデリングしたあとUVスケールが1×1になって全メッシュのUVが重なってる状態から

スクリプト実行で

自動配置できる。
select_Mesh_Group_To_replace_UV.mel
//実行
float $widthU = 0.05; //幅
float $heightV = 0.05; //高さ
float $ScaleU_ = 0.0625; //スケールX
float $ScaleV_ = 0.0625; //スケールY
float $newLineU_ =0.4; //改行位置
select_Mesh_Group_To_replace_UV($widthU,$heightV,$ScaleU_,$ScaleV_,$newLineU_);
//select Mesh Group To replace UV
global proc select_Mesh_Group_To_replace_UV(float $width,float $height,float $ScaleU,float $ScaleV ,float $newLineU)
{
string $selectedArrFUllPath[] = `ls -long -sl`;
print($selectedArrFUllPath);
string $FirstSelect=$selectedArrFUllPath[0];
string $inputNodes_mesh[] = `ls -type mesh -long -dag $FirstSelect`;
$inputNodes_meshlong=size($inputNodes_mesh);
string $inputNodes[];
clear $inputNodes;
string $mesh;
for($d0 = 0; $d0 <$inputNodes_meshlong;$d0++){
$mesh=$inputNodes_mesh[$d0];
//string $parentS[] = `listRelatives -parent -path -type transform $mesh`;
//$parent=$parentS[0];
//$inputNodes[size($inputNodes)] = $parent;
$bool=`gmatch $mesh "*Orig"`;
if($bool==0){
$inputNodes[size($inputNodes)] = $mesh;
}
}
print("$inputNodes= ------------------------------------------------ \n");
print($inputNodes);
print("------------------------------------------------------------- \n");
$inputNodeslong=size($inputNodes);
float $buildX=0;
float $buildY=0;
//float $width=0.05;
//float $height=0.05;
for($f = 0; $f <$inputNodeslong;$f++){
$mesh=$inputNodes[$f];
$face=$mesh+".f[0:]";
select -r $mesh;
polyAutoProjection -lm 0 -pb 0 -ibd 1 -cm 0 -l 2 -sc 1 -o 1 -p 6 -ps 0.2 -ws 0 $face;
select -r $face;
$uvPivot=$mesh+".uvPivot";
//setAttr $uvPivot -type double2 0.5 0.5 ;
$U=$buildX*1-0.0;
$V=$buildY*1-0.0;
print("U:"+$U+" V:"+$V+"\n");
//polyEditUV -relative false -u $buildX -v $buildY;
$PivotU=$U+$width/2;
$PivotV=$V+$height/2;
polyEditUV -relative false -pu $PivotU -pv $PivotV -su $ScaleU -sv $ScaleU -u $buildX -v $buildY;
//polyEditUV -relative false -pu $PivotU -pv $PivotV -su 0.8 -sv 0.8 ;
//polyEditUV -relative false -pu $U -pv $V -su 0.2 -sv 0.2 ;
if($buildX>$newLineU){
print("new y----------Line\n");
$buildY = $buildY+$width;
$buildX = -$width;
}
$buildX = $buildX + $width;
}
}
float $widthU = 0.05; //幅
float $heightV = 0.05; //高さ
float $ScaleU_ = 0.0625; //スケールX
float $ScaleV_ = 0.0625; //スケールY
float $newLineU_ =0.4; //改行位置
select_Mesh_Group_To_replace_UV($widthU,$heightV,$ScaleU_,$ScaleV_,$newLineU_);
/*
参考スクリプト
select -r group24_rearBoost_Up2.f[0:1601] group4_rear_Body1.f[0:7323] ;
setAttr "group24_rearBoost_UpShape2.uvPivot" -type double2 0.5 2.504208 ;
polyEditUV -u 0 -v 2.004208 ;
polyEditUV -pu 0.5 -pv 2.504208 -su 0.25 -sv 0.25 ;
*/わかった事
polyEditUV コマンドは一発で6パラメータ入れないとだめ、
polyEditUV -relative false -pu $PivotU -pv $PivotV -su $ScaleU -sv $ScaleU -u $buildX -v $buildY;
polyEditUVコマンドは絶対スケール値を指定しても相対スケールが入る
polyEditUV -relative false -pu $PivotU -pv $PivotV -su $ScaleU -sv $ScaleU -u $buildX -v $buildY;


