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

Аналог максовского параметра "Visible to camera" в Мае

Тема в разделе "Maya", создана пользователем Артем Безфамильный, 13 сен 2011.

Модераторы: Dark™, Skif
  1. Артем Безфамильный

    Артем Безфамильный Знаток

    С нами с:
    21.07.2005
    Сообщения:
    103
    Симпатии:
    35
    Баллы:
    22
    Коллеги здравствуйте.

    Маю не знаю вообще. Стоит задача отрендерить уже готовую сцену, но по объектам.
    Обычно в Максе я выделяю объект захожу в Object Properties и снимаю/ставлю галочку напротив "Visible To Camera".

    Подскажите пожалуйста, желательно подробнее, где в Мае найти аналог данного параметра.

    Спасибо, за внимание.
     
  2. Pacmaniac

    Pacmaniac Знаток

    С нами с:
    25.12.2008
    Сообщения:
    736
    Симпатии:
    99
    Баллы:
    40
    Выделяешь объект, открываешь редактор атрибутов (Ctrl+A), переходишь в узел shape (второй с лева), открываешь вкладку render stats , там множество полезных атрибутов, в том числе и primary visibility (то что тебе надо).
     
  3. Артем Безфамильный

    Артем Безфамильный Знаток

    С нами с:
    21.07.2005
    Сообщения:
    103
    Симпатии:
    35
    Баллы:
    22
    Благодарю, получилось )
     
  4. Артем Безфамильный

    Артем Безфамильный Знаток

    С нами с:
    21.07.2005
    Сообщения:
    103
    Симпатии:
    35
    Баллы:
    22
    Появились следующие сложности.

    Как убрать/поставить Primary Visibility сразу нескольким объектам? (Выделяю несколько объектов, снимаю/устанавливаю visibility, а этот параметр применяется только к последнему выбранному объекту.) К группам тоже этот параметр не применяется, приходится в outliner'e выбирать каждый объект отдельно. Это очень долго ибо в сцене достаточно мелких объектов.
     
  5. iNOD

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

    С нами с:
    10.11.2009
    Сообщения:
    631
    Симпатии:
    2
    Баллы:
    19
    Открой скрипт эдитор скопируй туда
    Код:
    {
    pickWalk -d down;
    string $pv[] = `ls -sl`;
    string $pvobj;
    for($pvobj in $pv)
    {
    setAttr ($pvobj + ".primaryVisibility") 0;
    }
    }
    
    За тем выдели что скопировал, зажми колесико мышки и перетащи на шелф.
    Теперь выделяешь все свои объекты к которым хочешь применить невидимость и жмешь на кнопку :)
     
  6. Pacmaniac

    Pacmaniac Знаток

    С нами с:
    25.12.2008
    Сообщения:
    736
    Симпатии:
    99
    Баллы:
    40
    Выдели все нужные объекты, иди в windows > genral editors > attribute spread sheet , в этом редакторе перейди на вкладку render, там ты найдёшь столбец "primiry visibility" , щёлкни прямо по надписи "primary visibility" и нажми "0", после этого у всех выбранных объектов primary visibility выставиться в off .
     
  7. Александр Чернега

    Александр Чернега Знаток

    С нами с:
    24.12.2009
    Сообщения:
    1.058
    Симпатии:
    56
    Баллы:
    53
    iNOD, предложенный скрипт к сожалению малоэффективен. Во-первых, это не Toggle, срабатывает только на Off. Во-вторых, не функционирует при выделении группы (нода Group).
    Pacmaniac, "attribute spread sheet" очень полезная панелька! Пожалуй есть смысл вынести ее в одно из многих маркинг меню.
     
  8. Артем Безфамильный

    Артем Безфамильный Знаток

    С нами с:
    21.07.2005
    Сообщения:
    103
    Симпатии:
    35
    Баллы:
    22
    Ого, коллеги, очень много благодарностей за отзывчивость.

    iNOD, MEL для меня пока кузькина грамота, но в любом случаи очень спасибо. На будущее обязательно пригодится.

    Pacmaniac, именно то, что надо.

    Александр Чернега, ну почему же мало эффективен? Можно ручками подменивать в скрипте 0 на 1 и будет работать наоборот ))

    P.S. Pacmaniac второй раз, увы поблагодарить не получается. Скузи. ((
     
  9. iNOD

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

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

    Код:
    {
    string $window = `window -title "cc" renderop`;
    
    string $rnmBnFL = `columnLayout -adjustableColumn true `;
        frameLayout -label "off/on" -borderStyle "etchedIn";
        rowLayout -nc 2 -cw2 50 50;
        		button -label "off" -c offp -w 50;
        		button -label "on" -c onp -w 50;
    		setParent $rnmBnFL;
    
    		frameLayout -borderStyle "etchedIn" -h 180 -w 150 -label "options";
    			string $mf = `formLayout`;
    
    		checkBox  -label "Cast Shadows" cs;
    		checkBox  -label "Receive Shadows" rs;
    		checkBox  -label "Motion blur" mb;
    		checkBox  -label "Primary Visibility" pv;
    		checkBox  -label "Smooth Shading" ss;
    		checkBox  -label "Visible in Reflection" viref;
    		checkBox  -label "Visible in Refraction" virefra;
    		checkBox  -label "Double Sided" ds;
    
    
    	formLayout -e
    
    		-attachForm cs "top" 0
    		-attachForm cs "left" 2
    
    		-attachForm rs "top" 20
    		-attachForm rs "left" 2
    
    		-attachForm mb "top" 40
    		-attachForm mb "left" 2
    		
    		-attachForm pv "top" 60
    		-attachForm pv "left" 2
    		
    		-attachForm ss "top" 80
    		-attachForm ss "left" 2
    		
    		-attachForm viref "top" 100
    		-attachForm viref "left" 2
    		
    		-attachForm virefra "top" 120
    		-attachForm virefra "left" 2
    		
    		-attachForm ds "top" 140
    		-attachForm ds "left" 2
    
    		$mf;
    
    showWindow renderop;
    }
    
    global proc onp ()
    
    {
    string $cs = `checkBox -q -value cs`;
    string $rs = `checkBox -q -value rs`;
    string $mb = `checkBox -q -value mb`;
    string $pv = `checkBox -q -value pv`;
    string $ss = `checkBox -q -value ss`;
    string $viref = `checkBox -q -value viref`;
    string $virefra = `checkBox -q -value virefra`;
    string $ds = `checkBox -q -value ds`;
    select -hi;
    pickWalk -d down;
    pickWalk -d down;
    pickWalk -d down;
    pickWalk -d down;
    pickWalk -d down;
    string $opobj[] = `ls -sl`;
    if ($cs == 1)
        {
        string $opcs;
        for($opcs in $opobj)
            {
            setAttr ($opcs + ".castsShadows") 1;
            }
        }
    if ($rs == 1)
        {
        string $oprs;
        for($oprs in $opobj)
            {
            setAttr ($oprs + ".receiveShadows") 1;
            }
        }
    if ($mb == 1)
        {
        string $opmb;
        for($opmb in $opobj)
            {
            setAttr ($opmb + ".motionBlur") 1;
            }
        }
    if ($mb == 1)
        {
        string $oppv;
        for($oppv in $opobj)
            {
            setAttr ($oppv + ".primaryVisibility") 1;
            }
        }
    if ($ss == 1)
        {
        string $opss;
        for($opss in $opobj)
            {
            setAttr ($opss + ".smoothShading") 1;
            }
        }
    if ($viref == 1)
        {
        string $opviref;
        for($opviref in $opobj)
            {
            setAttr ($opviref + ".visibleInReflections") 1;
            }
        }
    if ($virefra == 1)
        {
        string $opvirefra;
        for($opvirefra in $opobj)
            {
            setAttr ($opvirefra + ".visibleInRefractions") 1;
            }
        }
    if ($ds == 1)
        {
        string $opds;
        for($opds in $opobj)
            {
            setAttr ($opds + ".doubleSided") 1;
            }
        }
    }
    global proc offp ()
    
    {
    string $cs = `checkBox -q -value cs`;
    string $rs = `checkBox -q -value rs`;
    string $mb = `checkBox -q -value mb`;
    string $pv = `checkBox -q -value pv`;
    string $ss = `checkBox -q -value ss`;
    string $viref = `checkBox -q -value viref`;
    string $virefra = `checkBox -q -value virefra`;
    string $ds = `checkBox -q -value ds`;
    select -hi;
    pickWalk -d down;
    pickWalk -d down;
    pickWalk -d down;
    pickWalk -d down;
    pickWalk -d down;
    string $opobj[] = `ls -sl`;
    if ($cs == 1)
        {
        string $opcs;
        for($opcs in $opobj)
            {
            setAttr ($opcs + ".castsShadows") 0;
            }
        }
    if ($rs == 1)
        {
        string $oprs;
        for($oprs in $opobj)
            {
            setAttr ($oprs + ".receiveShadows") 0;
            }
        }
    if ($mb == 1)
        {
        string $opmb;
        for($opmb in $opobj)
            {
            setAttr ($opmb + ".motionBlur") 0;
            }
        }
    if ($mb == 1)
        {
        string $oppv;
        for($oppv in $opobj)
            {
            setAttr ($oppv + ".primaryVisibility") 0;
            }
        }
    if ($ss == 1)
        {
        string $opss;
        for($opss in $opobj)
            {
            setAttr ($opss + ".smoothShading") 0;
            }
        }
    if ($viref == 1)
        {
        string $opviref;
        for($opviref in $opobj)
            {
            setAttr ($opviref + ".visibleInReflections") 0;
            }
        }
    if ($virefra == 1)
        {
        string $opvirefra;
        for($opvirefra in $opobj)
            {
            setAttr ($opvirefra + ".visibleInRefractions") 0;
            }
        }
    if ($ds == 1)
        {
        string $opds;
        for($opds in $opobj)
            {
            setAttr ($opds + ".doubleSided") 0;
            }
        }
    }
    
    2Александр Чернега Надеюсь этот не малоэффективен))
     
  10. iNOD

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

    С нами с:
    10.11.2009
    Сообщения:
    631
    Симпатии:
    2
    Баллы:
    19
    В скрипте допустил ошибку((
    в 97 и 180 строчках вместо "if ($mb == 1)" нужно исправить на "if ($pv == 1)"
     
Модераторы: Dark™, Skif

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