Render.ru

вопросы по MEL

Cyberika

Знаток
Рейтинг
21
Вот есть часть скрипта с перебором элементов и как пример делает все слои видимыми или нет
string $layer;
string $AllLayers[] = `ls -type displayLayer`;
for($layer in $AllLayers)
{
setAttr ($layer + ".visibility") 0;
}

Но здесь перебираются только те слои которые начинаются с маленьких a, b или с, или любой заглавной (от d и дальше по алфавиту со слоями ничего не происходит)
Если создать дефолтные слои (layer1...) то всё работает пока не переименуешь хотя бы 1
Может кто обьяснить причину такой избирательности или как её обойти?
Попробуйте так.
Код:
string $layer; 
string $AllLayers[] = `ls -type displayLayer`; 
for($layer in $AllLayers) 
{ 

if ($layer != "defaultLayer"){
    
       setAttr ($layer + ".visibility") 1; 
    
    }
 }
 

VARVAR13

Активный участник
Рейтинг
8
такой вопрос - при скрытии всех элемнтов сцены скрипт эдитор выдает modelEditor -e -allObjects 0 modelPanel4,
при отображении соответсвенно -allObjects 1,
когда пытаюсь проверить праметр allObjects то постоянно выдает 0, с чем это может быть связано?
Код:
string $currentPanel = `getPanel -wf`;
int $ObVis =`modelEditor -q -allObjects  $currentPanel`;
 
Господа, добрый день. Подскажите пожалуйста Mel команду на LMB (быстрый щелчок левой кнопки мыши).
Или если кто-то хорошо ориентируется в Майевском хелпе, хотя бы намекните где ее найти.
 
Разъяснение к предыдущему посту:
Хочу использовать для скрипта, переносящего опорную точку вращения, во вьюпорте

К примеру, на "Z" вешаю скрипт:
Код:
//Press
TumbleTool;
tumbleCtx -e -objectTumble true tumbleContext;

//Release
tumbleCtx -e -objectTumble false tumbleContext;
SelectTool;
Получается, нужно удерживая "Z", щелкать по объекту, находящемуся в середине экрана. Тем самым, перенося на него центр вращения камеры. Конечно же этот щелчок мыши не критичен, но подумал, может можно его вписать в скрипт.
 

iNOD

Активный участник
Рейтинг
18
Появилась проблема, не понимаю это глюк или особенность такая. Есть несколько бинарпроксей, я пробовал scriptJob и Expression для переключения проксей в зависимости от текущего кадра. Результат один и тот же, когда поочередно рендеришь кадры то все норм переключает, когда же ставишь сиквенцию кадров то использует только первый прокси. Может кто то посоветует другой вариант решения такого рода задачи(мб есть нода переключения связей).

Вот сам код:
Код:
int $crttm = `currentTime -q`; while ($crttm > 15) $crttm = $crttm -16;
for($i = 0; 15 > $i; $i++){
if($i < 10){
catchQuiet(`setAttr ("prx_ig01_0" + $i + ".write_geometry") 0`);
catchQuiet(`setAttr ("prx_kr01_0" + $i + ".write_geometry") 0`);}
else{
catchQuiet(`setAttr ("prx_ig01_" + $i + ".write_geometry") 0`);
catchQuiet(`setAttr ("prx_kr01_" + $i + ".write_geometry") 0`);}}
for($i = 0; 1 > $i; $i++){
if($crttm < 10){
string $nmPrxAnm = `getAttr ("gmp_ig01_00.prxNm0" + $crttm)`;
catchQuiet(`connectAttr -force ("prx_ig01_" + $nmPrxAnm + ".outValue") ("gmp_ig01_00.miGeoShader")`);
setAttr ("prx_ig01_0" + $crttm + ".write_geometry") 1;
string $nmPrxAnm = `getAttr ("gmp_kr01_00.prxNm0" + $crttm)`;
catchQuiet(`connectAttr -force ("prx_kr01_" + $nmPrxAnm + ".outValue") ("gmp_kr01_00.miGeoShader")`);
setAttr ("prx_kr01_0" + $crttm + ".write_geometry") 1;}
else{
string $nmPrxAnm = `getAttr ("gmp_ig01_00.prxNm" + $crttm)`;
catchQuiet(`connectAttr -force ("prx_ig01_" + $nmPrxAnm + ".outValue") ("gmp_ig01_00.miGeoShader")`);
setAttr ("prx_ig01_" + $crttm + ".write_geometry") 1;
string $nmPrxAnm = `getAttr ("gmp_kr01_00.prxNm" + $crttm)`;
catchQuiet(`connectAttr -force ("prx_kr01_" + $nmPrxAnm + ".outValue") ("gmp_kr01_00.miGeoShader")`);
setAttr ("prx_kr01_" + $crttm + ".write_geometry") 1;}}
 

iNOD

Активный участник
Рейтинг
18
Хм... Неужели никто не делал переключения связей через экспресии или скрипты? Оказывается это не глюк, а странная особенность. Пробовал на 2013, 2013SP2 и 2014 везде результат один и тот же. Не знаю как и быть :( походу когда происходит переключение то почему то не обновляется связи что-ли, пробовал reffresh вставлять, результат 0. Интересно можно как то командой принудительно обновлять связи? Искал решение так и не нашел. Да еще если рендерить каждый кадр через *.cmd то все работает, но если указать диапазон то только 1 кадр норм.
 

Владимир Забелин

Активный участник
Рейтинг
17
1.да ментал вообще подобные вещи не одобряет.
2.а свичер с любым количеством входящих атрибутов можно легко сделать с помощью рампа. естественно, атрибуты должны быть дейсвительными, а не мессаджами делаешь рамп без интерполяции, цвета рампа маппируешь своими атрибутами, а в качестве свичера используешь значение u координаты...
 

iNOD

Активный участник
Рейтинг
18
В этом и проблема, что нужны месаджи :( Вот по этому и хотел переключение сделать, Сейчас вижу только один выход Maya API и создать ноду для этих целей.
 

Dark™

Модератор форума
Команда форума
Рейтинг
431
А что, если управлять видимостью всех копий прокси через аним. кривые?
 

iNOD

Активный участник
Рейтинг
18
Я думал над этим уже, для 100 копий еще норм, но если их будет от 2000 до 10000 или более, то ресурсов не хватит (((
Интересно стало, можно как то без мешей использовать прокси? Например пустая группа, я пробовал правда так, не отображает их, мб есть варианты другие?
 

iNOD

Активный участник
Рейтинг
18
Я опишу задачу которую хочу решить. К примеру у нас есть дерево с полигонажем 100 000, это дерево анимированно, делаем прокси каждого кадра ,это все просто делается при помощи подстановки нового имени в поле ноды прокси при помощи экспрешенов и этот вариант работает. Но, допустим у нас есть 2000 шейпов, подгружаем к примеру 32 прокси(32 кадра анимации), и при помощи экспрешена или скрипта делаем рандомное подключение прокси к шейпу(что не получается, ибо не обновляются связи при сиквенции), если использовать для каждого шейпа экспрешен с подстановкой имени файла с прокси, то прокси будет подгружаться ~2000 раз вместо 32. Если делать с инвизом то 2000*32=64000 отдельных шейпов. Все это делается для рандомизации анимации.
 

iNOD

Активный участник
Рейтинг
18
Ментал прокси, а что за прокси референсы? Не пользовался ни разу, интересно.
 

Владимир Забелин

Активный участник
Рейтинг
17
есть такая технология референсирования объектов разной степени детализации. но она больше для анимационных задач. лучше доку почитайте или у меня на ютьюбовском канале посмотрите запись мастеркаласса про ассеты.
 

Ken_Zin

Мастер
Рейтинг
108
Подскажите пожалуйста,почему в первом случае кнопка удаляет сама себя,а во втором случае ,при использовании popupMenu ,кнопка удаляется , но maya вылетает.

//первый случай
window new1;
columnLayout col;
iconTextButton -w 50 -image1 "sphere.png" -c "deleteUI col";
showWindow new1;

//второй случай
window new2;
columnLayout col;
iconTextButton -w 50 -image1 "sphere.png" ;
popupMenu;
menuItem -l "delete" -c "deleteUI col";
showWindow new2;
 
Сверху