описание работы
есть размапленый сложный объект типа персонаж.
логически мысля понимаешь что если подёргать вертексы на персонаже то UV сетку тоже нужно будет подкорректировать.
но. есть один человек (Александер Лунёв ) которого эта шняга задолбала. и он (вечная ему слава почёт и всё такое), написал скрипт, который коректирует UV сетку автоматом
как с ним работать:
выдели размапленый объект, запусти скрипт( он должен лежать в папке скриптов, а вызывать его нужно просто набрав его название autoUVRelax, или хоткей который делает это автоматом)
появится маленькая панелька, где нужно поставить галочку, типа активировать фунцию скрипта.. !!!! при этом объект должен быть выбран, и находиться в режиме обджект !!!
потом двигаем вертексы, смотрим как чудесно работает, когда не нужно снимаем галочку и работаем как обычно.(скрипт работает со всеми подобъектами вертексы, ейджи, полики, коректно работает со сплитом)
!!!
ЗЫ скрипт не работает с бордерами UV сетки так как основная задача скрипта не нарушая области UV сетки коректировать геометрию
вот собсна листинг от начала и до конца
____________
global string $AUV_VER = "v 0.666b";
global string $UIName = "AUV_WINDOW";
global int $CheckValue = 0;
global int $AUV_JOB = -1;
global int $SEL_JOB = -1;
proc DoRelax()
{
string $whichCtx = `currentCtx`;
setToolTo selectSuperContext;
int $mode = 0;
string $CurSel[] = `ls -sl`;
PolySelectConvert 4;
untangleUV -r harmonic -pb 1 -ps 0 -pu 1 -rt 0 -mri 10;
select -r $CurSel[0];
setToolTo $whichCtx;
}
proc GetObjName()
{
global int $AUV_JOB;
string $ObjSelName[] = `ls -type "mesh" -o -sl`;
if($ObjSelName[0] == "")
{
print ("NOT A MESH !!!\n");
}
else
{
//print ($ObjSelName[0] + " MESH !!!\n");
if(`scriptJob -ex $AUV_JOB`)
{
scriptJob -kill $AUV_JOB;
}
$AUV_JOB = `scriptJob -ac ($ObjSelName[0] + ".pnts") DoRelax`;
}
}
proc CheckON()
{
global int $CheckValue;
global int $SEL_JOB;
$SEL_JOB = `scriptJob -e "SelectionChanged" GetObjName`;
$CheckValue = 1;
}
proc CheckOFF()
{
global int $CheckValue;
global int $SEL_JOB;
global int $AUV_JOB;
if(`scriptJob -ex $AUV_JOB`)
{
scriptJob -kill $AUV_JOB;
}
scriptJob -kill $SEL_JOB;
$CheckValue = 0;
}
global proc autoUVRelax ()
{
global string $UIName;
global string $AUV_VER;
global int $CheckValue;
if(`window -q -exists $UIName`)
{
deleteUI -wnd $UIName;
}
window
-maximizeButton false
-menuBar false
-menuBarVisible false
-sizeable false
-toolbox true
-title ("Automatic UV Relaxer " + $AUV_VER)
-widthHeight 200 80
$UIName;
string $frmMain = `formLayout -numberOfDivisions 100`;
string $chkOnOff = `checkBox -label "Enable" -v $CheckValue`;
string $txtCopyr = `text -label "Created by LuniX" -en 0`;
checkBox -e -onc "CheckON" $chkOnOff;
checkBox -e -ofc "CheckOFF" $chkOnOff;
formLayout -edit
-attachForm $chkOnOff "top" 10
-attachForm $chkOnOff "left" 65
-attachForm $txtCopyr "top" 35
-attachForm $txtCopyr "left" 55
$frmMain;
showWindow $UIName;
}
___________
собсна для ленивых вот сам скрипт , тока разширение нужно переименовать autoUVRelax.mel
скрипт работает под 6.1 и под 6.5 майки
Энджой как говорится