Render.ru

вопросы по MEL

mrDuke

Пользователь сайта
Рейтинг
2
#81
Здравствуйте,
хочу сделать скрипты на хоткеи, которые автоматом создают экспрешен для выделенного объекта. Но не могу получить даже выделенный объект ^^

Код:
string $pObj[] = `ls -sl` ;
expression -s "$pObj[0].scaleX = $pObj[0].scaleY)"  -o $pObj[0] -n myName -ae 1 -uc all ;
помогите пожалуйста.
 

VARVAR13

Активный участник
Рейтинг
8
#82
попробуй вот это...

Код:
string $pObj[]= `ls -sl`;

expression  -o $pObj -s "scaleX = scaleY"  -n $pObj -ae 1 -uc all ;
 

dinnoel

Активный участник
Рейтинг
10
#84
Получилась такая глупая ситуация, создал свое Window. Но оно как-то мешает - занимает место, Вместо того, чтобы свернуть, таскал туда-сюда пока нечаянно вывел за экран. Maya запоминает последние координаты Window. Не знаю как вернуть назад. Взял скрипт и добавил флаги позиции -le -te. Окно вернулось в заданные координаты. Но может есть другой более простой способ?
Вот с панелями, которые Tear Off, тоже самое, но там есть Panel Editor с его помощью я создал нов. панель. Возможно я уже наплодил несколько панелей и они просто занимают память? как вернуться к начальным настройкам, по-моему есть специальный файл стандартных настроек. Где он?
 

VIG 142133

Пользователь сайта
Рейтинг
2
#85
в c:\Users\...\Documents\maya\версия\prefs есть файлик windowPrefs.mel - если его грохнуть, потом запустить Maya то создатся новый с дефолтовым расположением окон.
 

Strahovid

Активный участник
Рейтинг
11
#86
Приветствую. Продолжаю мучить скрипт. Хочется для него красивое окошечко написать. Вот, собственно, что получается:
Код:
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;

    }
}
Кнопка "Tree" вызывает скрипт генератор. Он генерирует 30 Случайных плоскостей. Это значение прописано вот в этой строке:
Код:
for($i = 0; $i < 30; $i++)
Так вот, нужно как-то это значение сделать настраиваемым, через слайдер attrFieldSliderGrp;
Как-то через флаг наверное, не знаю. Познаний не хватает.
Да, и ещё, можно ли это значение сделать только целым, то есть без знаков после запятой (не может же генерироваться три с половиной плоскости, правильно)?
 

Strahovid

Активный участник
Рейтинг
11
#88
Я как раз по книжке и делаю (Понимая Майя). А по Ф1 в интернет лезет, траффика не напосёшся.
Мне бы для примера что нибудь, а дальше я бы и сам мутил.
 

VARVAR13

Активный участник
Рейтинг
8
#89
Народ такой вопрос - можно ли как то организовать расстановку объектов вдоль кривой на определенном расстоянии...
не через процентное соотношение длинны кривой, а именно через определенное расстояние (через 3 мм, 10 см и тд)
 

Strahovid

Активный участник
Рейтинг
11
#90
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.
 

Strahovid

Активный участник
Рейтинг
11
#91
Вот только один вопрос у меня остался. С целыми и дробными числами я разобрался:
intSliderGrp -l "Num Points" -field 1 -value 500;
А вот как его привязать к этой строчке :
for($i = 0; $i < 30; $i++)
Чтобы значение, забитое в слайдере, меняло значение $i < 30; ???
 

Strahovid

Активный участник
Рейтинг
11
#92
Ух, разобрался. Какой же всётаки молодец :)
Нужно было сделать вот так:
$papo = `intSliderGrp -q -value PAPO`;
for($i = 0; $i < $papo; $i=$i+1)
Теперь работает.
 

VARVAR13

Активный участник
Рейтинг
8
#93
VARVAR13, есть такой способ, но работа не со скриптами, а с анимацией. Вот цитата из книги "Понимая Майя":
вот это как раз то что не надо, сдесь любая кривая будет разбиватся на 100 частей (если кол-во кадров 100) с каким то равным промежутком, а мне нужно чтобы на любой длинны кривой можно было рассаживать объекты с нужным МНЕ шагом, а не с шагом который делает моушен пас.
 

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

Активный участник
Рейтинг
17
#94
1.никто не запрещает скачать хелп и поставить его локально.

2.Понимая майа - это книжка на общее понимание логики пакета, а не учебник по мел. по мелу есть другие специализированные книги.

3.И это не учебник по моделировани шпал. если вы ищите там решения всех возможных практических задач, то значит, вы не совсем понимаете для чего и для кого написана эта книга.
 

Strahovid

Активный участник
Рейтинг
11
#95
VARVAR13 может поин_эффекты попробовать, ну в смысле свой создать?
-----------------------------------------------------------------

Такой вопрос. Нужно сделать переменные, но не просто `ls -sl`, а чтобы первый выбранный объект заносился в переменную $1select, например, второй в $2select. Подскажите, как это сделать?
 

Dark™

Модератор форума
Команда форума
Рейтинг
431
#96
Такой вопрос. Нужно сделать переменные, но не просто `ls -sl`, а чтобы первый выбранный объект заносился в переменную $1select, например, второй в $2select. Подскажите, как это сделать?
Все заносится в порядке выделения. Остается просто по индексам распределить.
 

Strahovid

Активный участник
Рейтинг
11
#97
Извините, а как это сделать?
string $list1[] = `ls -sl`;
string $list2[] = `ls -sl`;
duplicate $list2;
Не работает, дублируются оба объекта.
 

Dark™

Модератор форума
Команда форума
Рейтинг
431
#98
Код:
string $objs[] = `ls -sl`;
string $obj1 = $objs[0];
string $obj2 = $objs[1];
 

Strahovid

Активный участник
Рейтинг
11
#99
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;
 

Вложения

Strahovid

Активный участник
Рейтинг
11
Окончательный вариант.
Код:
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; //центрируем пивоты у полученных объектов
Но что самое интересное, вместо плоскости можно использовать и другие примитивы.
 
Сверху