вопросы по MEL
- Автор темы JazzzDima
- Дата создания
Получилась такая глупая ситуация, создал свое Window. Но оно как-то мешает - занимает место, Вместо того, чтобы свернуть, таскал туда-сюда пока нечаянно вывел за экран. Maya запоминает последние координаты Window. Не знаю как вернуть назад. Взял скрипт и добавил флаги позиции -le -te. Окно вернулось в заданные координаты. Но может есть другой более простой способ?
Вот с панелями, которые Tear Off, тоже самое, но там есть Panel Editor с его помощью я создал нов. панель. Возможно я уже наплодил несколько панелей и они просто занимают память? как вернуться к начальным настройкам, по-моему есть специальный файл стандартных настроек. Где он?
Вот с панелями, которые Tear Off, тоже самое, но там есть Panel Editor с его помощью я создал нов. панель. Возможно я уже наплодил несколько панелей и они просто занимают память? как вернуться к начальным настройкам, по-моему есть специальный файл стандартных настроек. Где он?
Приветствую. Продолжаю мучить скрипт. Хочется для него красивое окошечко написать. Вот, собственно, что получается:
Кнопка "Tree" вызывает скрипт генератор. Он генерирует 30 Случайных плоскостей. Это значение прописано вот в этой строке:
Так вот, нужно как-то это значение сделать настраиваемым, через слайдер attrFieldSliderGrp;
Как-то через флаг наверное, не знаю. Познаний не хватает.
Да, и ещё, можно ли это значение сделать только целым, то есть без знаков после запятой (не может же генерироваться три с половиной плоскости, правильно)?
Код:
window -t "Generator" DROP_WINDOW;
columnLayout;
attrFieldSliderGrp;
gridLayout -numberOfColumns 2 -cellWidthHeight 64 32;
button -l "Tree" -w 94 -c "Tree";
button -l "Undo" -w 94 -c "Undo;";
setParent..;
showWindow DROP_WINDOW;
global proc Tree()
{
string $list[] = `ls -sl`;
int $i;
float $x, $y, $z, $x1, $y1, $z1, $x2, $y2, $z2;
for($i = 0; $i < 30; $i++)
{
select -r $list;
duplicate -rr;
$x = rand (-5, 5) ;
$y = rand (-5, 5) ;
$z = rand (-5, 5) ;
$x1 = rand ( -20, 30) ;
$y1 = rand ( 0, 360) ;
$z1 = rand ( -20, 30) ;
$x2 = rand ( 0, 2) ;
//$y2 = rand ( 1, 2) ;
$z2 = rand ( 0, 2) ;
move -r 0 $y 0;
rotate -r $x1 $y1 $z1;
scale -r $x2 0 $x2;
}
}
Код:
for($i = 0; $i < 30; $i++)
Как-то через флаг наверное, не знаю. Познаний не хватает.
Да, и ещё, можно ли это значение сделать только целым, то есть без знаков после запятой (не может же генерироваться три с половиной плоскости, правильно)?
VARVAR13, есть такой способ, но работа не со скриптами, а с анимацией. Вот цитата из книги "Понимая Майя":
К сожалению, «прогнать» поверхность вдоль пути с помощью операции Extrude невозможно.
Необходимо размножить поверхность вдоль пути. Такая задача решается с помощью анимации. То
есть сначала надо запустить шпалу вдоль пути, а потом в каждом втором или третьем кадре снять
с нее копию. В этом случае некоторые методы анимации можно рассматривать как инструменты
моделирования.
Установите на Range Slider диапазон анимации равным 100 кадрам.
Выберите шпалу, а затем кривую между рельсами (порядок, как ни странно, опять важен
В основном меню выберите Animate=>Motion Paths=>Attach to Motion Path.
Шпала «насадилась» на путь и при нажатии кнопки Play на TimeLine весело бегает по пути
Недостаток один - она насадилась на путь своим pivot'OM, который расположен прямо в центре
шпалы. Попробуем сдвинуть pivot прямо на анимированной шпале.
Нажмите Insert и тяните pivot вверх!
Чтобы скомпенсировать смещение вверх вынужденного оставаться на пути пивота, шпала
смешается вниз.
Загнав шпалу под рельсы, снова нажмите Insert.
Теперь осталось снять копию шкалы в каждом третьем кадре. Трудолюбивые умы могут
сделать это и вручную, однако мы воспользуемся операцией Snapshot.
Выберите шпалу.
Откройте Option Box для Animate=>Create Animation=>Snapshot.
Установите диапазон Time Range=Time Slider. Это определит диапазон выполнения
копирования равным диапазону анимации.
Задайте параметр Increment=3, это установит каждый третий кадр для копирования
анимированного объекта.
После выполнения операции Snapshot вдоль пути возникнет последовательность из шпал,
а в Outliner появится snapshot1 Group.
Необходимо размножить поверхность вдоль пути. Такая задача решается с помощью анимации. То
есть сначала надо запустить шпалу вдоль пути, а потом в каждом втором или третьем кадре снять
с нее копию. В этом случае некоторые методы анимации можно рассматривать как инструменты
моделирования.
Установите на Range Slider диапазон анимации равным 100 кадрам.
Выберите шпалу, а затем кривую между рельсами (порядок, как ни странно, опять важен
В основном меню выберите Animate=>Motion Paths=>Attach to Motion Path.
Шпала «насадилась» на путь и при нажатии кнопки Play на TimeLine весело бегает по пути
Недостаток один - она насадилась на путь своим pivot'OM, который расположен прямо в центре
шпалы. Попробуем сдвинуть pivot прямо на анимированной шпале.
Нажмите Insert и тяните pivot вверх!
Чтобы скомпенсировать смещение вверх вынужденного оставаться на пути пивота, шпала
смешается вниз.
Загнав шпалу под рельсы, снова нажмите Insert.
Теперь осталось снять копию шкалы в каждом третьем кадре. Трудолюбивые умы могут
сделать это и вручную, однако мы воспользуемся операцией Snapshot.
Выберите шпалу.
Откройте Option Box для Animate=>Create Animation=>Snapshot.
Установите диапазон Time Range=Time Slider. Это определит диапазон выполнения
копирования равным диапазону анимации.
Задайте параметр Increment=3, это установит каждый третий кадр для копирования
анимированного объекта.
После выполнения операции Snapshot вдоль пути возникнет последовательность из шпал,
а в Outliner появится snapshot1 Group.
VARVAR13, есть такой способ, но работа не со скриптами, а с анимацией. Вот цитата из книги "Понимая Майя":
- Рейтинг
- 17
1.никто не запрещает скачать хелп и поставить его локально.
2.Понимая майа - это книжка на общее понимание логики пакета, а не учебник по мел. по мелу есть другие специализированные книги.
3.И это не учебник по моделировани шпал. если вы ищите там решения всех возможных практических задач, то значит, вы не совсем понимаете для чего и для кого написана эта книга.
2.Понимая майа - это книжка на общее понимание логики пакета, а не учебник по мел. по мелу есть другие специализированные книги.
3.И это не учебник по моделировани шпал. если вы ищите там решения всех возможных практических задач, то значит, вы не совсем понимаете для чего и для кого написана эта книга.
VARVAR13 может поин_эффекты попробовать, ну в смысле свой создать?
-----------------------------------------------------------------
Такой вопрос. Нужно сделать переменные, но не просто `ls -sl`, а чтобы первый выбранный объект заносился в переменную $1select, например, второй в $2select. Подскажите, как это сделать?
-----------------------------------------------------------------
Такой вопрос. Нужно сделать переменные, но не просто `ls -sl`, а чтобы первый выбранный объект заносился в переменную $1select, например, второй в $2select. Подскажите, как это сделать?
Dark™, огромное спасибо. Собственно, вот зачем мне это было нужно. Находил гдето подобный скрипт, но он у меня тогда не работал, решил его воссоздать.
Разрезание плоскостью. При выборе необходимо соблюдать последовательность, сначала плоскость, затем разрезаемый объект.
Разрезание плоскостью. При выборе необходимо соблюдать последовательность, сначала плоскость, затем разрезаемый объект.
Код:
string $objs[] = `ls -sl`;
string $obj1 = $objs[0];
string $obj2 = $objs[1];
string $objss[] = `duplicate $objs`;
string $obj11 = $objss[0];
string $obj22 = $objss[1];
polyNormal -normalMode 0 -userNormalMode 0 -ch 1 $obj11;
polyBoolOp -op 3 -ch 1 -useThresholds 1 -preserveColor 0 $obj1 $obj2;
polyBoolOp -op 3 -ch 1 -useThresholds 1 -preserveColor 0 $obj11 $obj22;
Вложения
-
30,2 КБ Просмотров: 285
Окончательный вариант.
Но что самое интересное, вместо плоскости можно использовать и другие примитивы.
Код:
string $o1[] = `ls -sl`; //создаём переменную
string $ob1 = $o1[0]; //раскладываем по индексам, последовательность выделения
string $ob2 = $o1[1];
string $o2[] = `duplicate $o1`; //дублируем переменную $o1, заносим результат в другую переменную
string $ob3 = $o2[0];
string $ob4 = $o2[1];
polyNormal $ob3; //делаем реверс нормалей полученного объекта (плоскости или другого объекта)
string $rez1[] = `polyBoolOp -op 3 $ob1 $ob2`; //применяем булеан, заносим результаты в переменные
string $rez2[] = `polyBoolOp -op 3 $ob3 $ob4`;
xform -cp $rez1 $rez2; //центрируем пивоты у полученных объектов