1. Пользоваться форумом на планшетах и телефонах стало удобнее благодаря Tapatalk

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

Тема в разделе "Maya", создана пользователем Skif 5030, 15 апр 2012.

Модераторы: Dark™, Skif
  1. Skif vip

    Skif Administrator Команда форума

    С нами с:
    26.03.2004
    Сообщения:
    6.826
    Симпатии:
    417
    Баллы:
    2.787
    не могу понять де ошибка.
    скрипт меняет интерактивно цвет выбранного объекта.
    проблема в том, что цвет ползунка - не соответствует цвету объекта.
    сам скрипт вот. буду признателен за помощь.
    Код:
    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 ;
     
  2. VARVAR13

    VARVAR13 Активный участник

    С нами с:
    29.12.2010
    Сообщения:
    80
    Симпатии:
    3
    Баллы:
    9
    в строке
    Код:
    setAttr ($obj+".overrideColor") ($color -1)
    убрать -1 и все будет работать...
     
  3. Skif vip

    Skif Administrator Команда форума

    С нами с:
    26.03.2004
    Сообщения:
    6.826
    Симпатии:
    417
    Баллы:
    2.787
    не будет проверено.
    если убрать -1 то получится вправо когда ведешь - все ок. а влево опять начинается чехарда.
    да. это часть скрипта. изначально скрипт не мой. я просто хочу исправить это.
     
  4. iNOD

    iNOD Активный участник

    С нами с:
    10.11.2009
    Сообщения:
    631
    Симпатии:
    2
    Баллы:
    19
    Я тоже этим заморачивался, в результате тоже убрал -1.
     
  5. iNOD

    iNOD Активный участник

    С нами с:
    10.11.2009
    Сообщения:
    631
    Симпатии:
    2
    Баллы:
    19
    Вот кое как работает, не идеально правда :)

    Код:
    {
    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;
    		}
    		
    		}
    
    }
    
     
  6. Skif vip

    Skif Administrator Команда форума

    С нами с:
    26.03.2004
    Сообщения:
    6.826
    Симпатии:
    417
    Баллы:
    2.787
    оо спасибо.. хоть так.. хотя при щелчке опять лагает.. :)
     
  7. iNOD

    iNOD Активный участник

    С нами с:
    10.11.2009
    Сообщения:
    631
    Симпатии:
    2
    Баллы:
    19
    А спасибо?))
    Можно впринципе описать все случаи что б было идеально.
     
  8. iNOD

    iNOD Активный участник

    С нами с:
    10.11.2009
    Сообщения:
    631
    Симпатии:
    2
    Баллы:
    19
    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;
    		}
    
    }
    
     
Модераторы: Dark™, Skif

Поделиться этой страницей