Render.ru

нужна помощь в скрипте

Skif

Администратор 3D галереи
Команда форума
Рейтинг
584
#1
не могу понять де ошибка.
скрипт меняет интерактивно цвет выбранного объекта.
проблема в том, что цвет ползунка - не соответствует цвету объекта.
сам скрипт вот. буду признателен за помощь.
Код:
global proc colorobj ()

{
 if (`window -exists mc`)
 deleteUI -window mc;


string $window = `window -title "Controllers"  -rtf 1  -s 1  mc`;
 string $mco = `columnLayout -adjustableColumn true `;
  frameLayout -label " Color" -borderStyle "etchedIn";
   columnLayout -adjustableColumn true -columnAttach "left" 10  -rowSpacing 10;
colorIndexSliderGrp -minValue 1 -maxValue 31 -value 16 -columnWidth 1 25 -columnWidth 2 140 -inv 1 -dc h_off -cc h_on cis01 ;

setParent $mco;

showWindow mc;
}



global proc h_off ()

{

string $panel = `getPanel -withFocus`;

modelEditor -e -sel 0 -manipulators 0 $panel;

set;

}

global proc h_on ()

{

string $panel = `getPanel -withFocus`;

modelEditor -e -sel 1 -manipulators 1 $panel;

}


global proc set ()

{

$color = `colorIndexSliderGrp -q -value cis01`;

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

string $obj ;


for ($obj in $sl)

{

setAttr ($obj+".overrideEnabled") 1;

setAttr ($obj+".overrideColor") ($color -1);

}


}
colorobj ;
 

VARVAR13

Активный участник
Рейтинг
8
#2
в строке
Код:
setAttr ($obj+".overrideColor") ($color -1)
убрать -1 и все будет работать...
 

Skif

Администратор 3D галереи
Команда форума
Рейтинг
584
#3
убрать -1 и все будет работать...
не будет проверено.
если убрать -1 то получится вправо когда ведешь - все ок. а влево опять начинается чехарда.
да. это часть скрипта. изначально скрипт не мой. я просто хочу исправить это.
 

iNOD

Активный участник
Рейтинг
18
#4
Я тоже этим заморачивался, в результате тоже убрал -1.
 

iNOD

Активный участник
Рейтинг
18
#5
Вот кое как работает, не идеально правда :)

Код:
{
if (`window -exists mc`)
deleteUI -window mc;

string $window = `window -title "Controllers" -rtf 1 -s 1 mc`;
string $mco = `columnLayout -adjustableColumn true `;
frameLayout -label " Color" -borderStyle "etchedIn";
columnLayout -adjustableColumn true -columnAttach "left" 10 -rowSpacing 10;
colorIndexSliderGrp -min 1 -max 31 -value 0 -columnWidth 1 25 -columnWidth 10 140 -dc h_off -cc h_on cis01;

setParent $mco;
showWindow mc;
}

global int $tmpcolor = 0;

global proc h_off ()
{
string $panel = `getPanel -withFocus`;
modelEditor -e -sel 0 -manipulators 0 $panel;
set;
}

global proc h_on ()
{
string $panel = `getPanel -withFocus`;
modelEditor -e -sel 1 -manipulators 1 $panel;
}


global proc set ()
		{
		$color1 = `colorIndexSliderGrp -q -value cis01`;
		global int $tmpcolor;
		int $colcon = $color1 - $tmpcolor;
		string $sl [] = `ls -sl`;
		string $obj01 ;
        for ($obj01 in $sl)
		{
		
		if ($colcon >=0 && $color1 >=1)
		{
		setAttr ($obj01 + ".overrideEnabled") 1;
		setAttr ($obj01 + ".overrideColor") $color1;
		$tmpcolor = $color1;
		}
		
		if ($colcon <0 && $color1 ==1)
		{
		setAttr ($obj01 + ".overrideEnabled") 1;
		setAttr ($obj01 + ".overrideColor") ($color1 -1);
		$tmpcolor = $color1;
		}
		
		if ($colcon <0 && ($color1 - 2) >=1 && $color1 !=1)
		{
		setAttr ($obj01 + ".overrideEnabled") 1;
		setAttr ($obj01 + ".overrideColor") ($color1 -2);
		$tmpcolor = $color1;
		}
		
		}

}
 

Skif

Администратор 3D галереи
Команда форума
Рейтинг
584
#6
оо спасибо.. хоть так.. хотя при щелчке опять лагает.. :)
 

iNOD

Активный участник
Рейтинг
18
#7
А спасибо?))
Можно впринципе описать все случаи что б было идеально.
 

iNOD

Активный участник
Рейтинг
18
#8
Skif я тестировал colorIndexSliderGrp и он не корректно выдает результаты, по этому я заменил его на intSlider, работает безупречно! Вот два вариант реализации через intSlider.

Код:
{
if (`window -exists mc`)
deleteUI -window mc;

string $window = `window -wh 320 200 -s off -title "Controllers" -rtf 1 mc`;
string $mco = `columnLayout -adjustableColumn true `;
frameLayout -label " Color" -borderStyle "etchedIn";
columnLayout -adjustableColumn true -columnAttach "left" 10 -rowSpacing 10;
intSlider -w 300 -min 0 -max 31 -value 0 -step 1 -bgc 0.467 0.467 0.467 -dc h_off -cc h_on cis01;

setParent $mco;
showWindow mc;
}

global proc h_off ()
{
string $panel = `getPanel -withFocus`;
modelEditor -e -sel 0 -manipulators 0 $panel;
set;
}

global proc h_on ()
{
string $panel = `getPanel -withFocus`;
modelEditor -e -sel 1 -manipulators 1 $panel;
}


global proc set ()
		{
		$color1 = `intSlider -q -value cis01`;
		string $sl [] = `ls -sl`;
		string $obj01 ;
		if ($color1 == 0) intSlider -e -bgc 0.467 0.467 0.467 cis01;
		if ($color1 == 1) intSlider -e -bgc 0 0 0 cis01;
		if ($color1 == 2) intSlider -e -bgc 0.247 0.247 0.247 cis01;
		if ($color1 == 3) intSlider -e -bgc 0.498 0.498 0.498 cis01;
		if ($color1 == 4) intSlider -e -bgc 0.608 0 0.157 cis01;
		if ($color1 == 5) intSlider -e -bgc 0 0.016 0.373 cis01;
		if ($color1 == 6) intSlider -e -bgc 0 0 1 cis01;
		if ($color1 == 7) intSlider -e -bgc 0 0.275 0.094 cis01;
		if ($color1 == 8) intSlider -e -bgc 0.145 0 0.263 cis01;
		if ($color1 == 9) intSlider -e -bgc 0.78 0 0.78 cis01;
		if ($color1 == 10) intSlider -e -bgc 0.537 0.278 0.2 cis01;
		if ($color1 == 11) intSlider -e -bgc 0.243 0.133 0.122 cis01;
		if ($color1 == 12) intSlider -e -bgc 0.6 0.145 0 cis01;
		if ($color1 == 13) intSlider -e -bgc 1 0 0 cis01;
		if ($color1 == 14) intSlider -e -bgc 0 1 0 cis01;
		if ($color1 == 15) intSlider -e -bgc 0 0.255 0.6 cis01;
		if ($color1 == 16) intSlider -e -bgc 1 1 1 cis01;
		if ($color1 == 17) intSlider -e -bgc 1 1 0 cis01;
		if ($color1 == 18) intSlider -e -bgc 0.388 0.863 1 cis01;
		if ($color1 == 19) intSlider -e -bgc 0.263 1 0.635 cis01;
		if ($color1 == 20) intSlider -e -bgc 1 0.686 0.686 cis01;
		if ($color1 == 21) intSlider -e -bgc 0.89 0.675 0.475 cis01;
		if ($color1 == 22) intSlider -e -bgc 1 1 0.384 cis01;
		if ($color1 == 23) intSlider -e -bgc 0 0.6 0.325 cis01;
		if ($color1 == 24) intSlider -e -bgc 0.627 0.412 0.188 cis01;
		if ($color1 == 25) intSlider -e -bgc 0.62 0.627 0.188 cis01;
		if ($color1 == 26) intSlider -e -bgc 0.408 0.627 0.188 cis01;
		if ($color1 == 27) intSlider -e -bgc 0.188 0.627 0.365 cis01;
		if ($color1 == 28) intSlider -e -bgc 0.188 0.627 0.627 cis01;
		if ($color1 == 29) intSlider -e -bgc 0.188 0.404 0.627 cis01;
		if ($color1 == 30) intSlider -e -bgc 0.435 0.188 0.627 cis01;
		if ($color1 == 31) intSlider -e -bgc 0.631 0.188 0.412 cis01;
		
        for ($obj01 in $sl)
		{
		setAttr ($obj01 + ".overrideEnabled") 1;
		setAttr ($obj01 + ".overrideColor") $color1;
		}

}
Код:
{
if (`window -exists mc`)
deleteUI -window mc;

string $window = `window -wh 400 200 -s on -title "Controllers" -rtf 1 mc`;
string $mco = `columnLayout -adjustableColumn true `;
frameLayout -label " Color" -borderStyle "etchedIn";
rowLayout -nc 2 -cw2 300 100;
intSlider -w 300 -min 0 -max 31 -value 0 -step 1 -dc h_off -cc h_on cis01;
iconTextButton -w 100 -bgc 0.467 0.467 0.467 clr;

setParent $mco;
showWindow mc;
}

global proc h_off ()
{
string $panel = `getPanel -withFocus`;
modelEditor -e -sel 0 -manipulators 0 $panel;
set;
}

global proc h_on ()
{
string $panel = `getPanel -withFocus`;
modelEditor -e -sel 1 -manipulators 1 $panel;
}


global proc set ()
		{
		$color1 = `intSlider -q -value cis01`;
		string $sl [] = `ls -sl`;
		string $obj01 ;
		if ($color1 == 0) iconTextButton -e -bgc 0.467 0.467 0.467 clr;
		if ($color1 == 1) iconTextButton -e -bgc 0 0 0 clr;
		if ($color1 == 2) iconTextButton -e -bgc 0.247 0.247 0.247 clr;
		if ($color1 == 3) iconTextButton -e -bgc 0.498 0.498 0.498 clr;
		if ($color1 == 4) iconTextButton -e -bgc 0.608 0 0.157 clr;
		if ($color1 == 5) iconTextButton -e -bgc 0 0.016 0.373 clr;
		if ($color1 == 6) iconTextButton -e -bgc 0 0 1 clr;
		if ($color1 == 7) iconTextButton -e -bgc 0 0.275 0.094 clr;
		if ($color1 == 8) iconTextButton -e -bgc 0.145 0 0.263 clr;
		if ($color1 == 9) iconTextButton -e -bgc 0.78 0 0.78 clr;
		if ($color1 == 10) iconTextButton -e -bgc 0.537 0.278 0.2 clr;
		if ($color1 == 11) iconTextButton -e -bgc 0.243 0.133 0.122 clr;
		if ($color1 == 12) iconTextButton -e -bgc 0.6 0.145 0 clr;
		if ($color1 == 13) iconTextButton -e -bgc 1 0 0 clr;
		if ($color1 == 14) iconTextButton -e -bgc 0 1 0 clr;
		if ($color1 == 15) iconTextButton -e -bgc 0 0.255 0.6 clr;
		if ($color1 == 16) iconTextButton -e -bgc 1 1 1 clr;
		if ($color1 == 17) iconTextButton -e -bgc 1 1 0 clr;
		if ($color1 == 18) iconTextButton -e -bgc 0.388 0.863 1 clr;
		if ($color1 == 19) iconTextButton -e -bgc 0.263 1 0.635 clr;
		if ($color1 == 20) iconTextButton -e -bgc 1 0.686 0.686 clr;
		if ($color1 == 21) iconTextButton -e -bgc 0.89 0.675 0.475 clr;
		if ($color1 == 22) iconTextButton -e -bgc 1 1 0.384 clr;
		if ($color1 == 23) iconTextButton -e -bgc 0 0.6 0.325 clr;
		if ($color1 == 24) iconTextButton -e -bgc 0.627 0.412 0.188 clr;
		if ($color1 == 25) iconTextButton -e -bgc 0.62 0.627 0.188 clr;
		if ($color1 == 26) iconTextButton -e -bgc 0.408 0.627 0.188 clr;
		if ($color1 == 27) iconTextButton -e -bgc 0.188 0.627 0.365 clr;
		if ($color1 == 28) iconTextButton -e -bgc 0.188 0.627 0.627 clr;
		if ($color1 == 29) iconTextButton -e -bgc 0.188 0.404 0.627 clr;
		if ($color1 == 30) iconTextButton -e -bgc 0.435 0.188 0.627 clr;
		if ($color1 == 31) iconTextButton -e -bgc 0.631 0.188 0.412 clr;
		
        for ($obj01 in $sl)
		{
		setAttr ($obj01 + ".overrideEnabled") 1;
		setAttr ($obj01 + ".overrideColor") $color1;
		}

}
 
Сверху