Render.ru

вопросы по MEL

JBond

Знаток
Рейтинг
33
#41
Поищите cheatsheet, например

http://mbakr.squarespace.com/blog/maya-mel-cheat-sheet.html

часто они в .pdf . Там весь основной синтаксис выложен. Полезно если знаешь другой язык программирования , помогает быстро переключиться.
Вам проще вьехать в синтаксис, а потом начинать читать чужие скрипты.
 
Рейтинг
34
#42
Ковыряю понемногу книгу Гоулда . Дошёл пока до анимации . Не могу понять почему не работает код :
Код:
play ;
$time = `currentTime -q ` ;
if ( $time == 96 )
{
   play -st 0 ;
   currentTime 1 ;
}
Тоесть у меня проигрываеться анимация , но в нужный момент не останавливаеться а повторяеться по кругу .
P.S. Вставил код в експрешн эдитор . Всё работает . Получаеться Maya не проверяет значение переменной при воспроизведении ? Как тогда правильно написать ?
 
Рейтинг
34
#43
Ещё вопрос . Для закрепления пройденного придумал такой вот наивный скрипт :
Код:
float$value[] = `keyframe -q -vc Sphere_translateY`  ;
for ( $ind in $value )
{
    if ( $ind > 0 )
    $ind = $ind + 1 ;
    else
    $ind = $ind + 1.5 ;
    print ( $ind + "  " ) ;
}
Скрипт выполняеться нормально , print пишет изменённые значения у ключей . Однако в граф едиторе всё без изминений и сама анимация не меняеться . Почему ? Начальные значения ключей переодически меняються с -2.5 по 2.5 .
 

VARVAR13

Активный участник
Рейтинг
8
#44
Скрипт выполняеться нормально , print пишет изменённые значения у ключей . Однако в граф едиторе всё без изминений и сама анимация не меняеться . Почему ?
у тебя в скрипте просто выполняется операция с числами, оторые берутся из значений кадров, я так думаю нужно добавить еще команды для изменения ключей...
 

VARVAR13

Активный участник
Рейтинг
8
#45
Ппц ... не только в книге опечатки . Правда не помогло .
Кароче вот что у меня в файле maya.env
MAYA_SCRIPTS_PATH = C:\Documents and Settings\Administrator\Desktop\Scripts
Если ты создавал сам файл Maya.env то название должно быть с Большой буквы ( Maya.env),
и внутри путь к существующей папке например (MAYA_SCRIPT_PATH = X:\MAYA PROJECT\scripts)...
правда при запросе internalVar -userScriptDir выдает стандартный адрес в моих документах, но из добавленной папки все скрипты работают...
 
Рейтинг
34
#46
VARVAR13 за ответы спасибо . С циклом я конечно ступил .
А по переменной этой я незнаю как быть . Я фаил сам не создавал он у меня был сразу . Находиться вот по такому пути C:\Documents and Settings\Administrator\My Documents\maya\2012-x64 . Он был пуст я в нём написал MAYA_SCRIPTS_PATH = C:\Documents and Settings\Administrator\Desktop\Scripts . Всё равно не видит . Собственно всё . Я уже в принцыпе забил на него . Не самая важная вещь . Но раз уж написал ...
 
Рейтинг
34
#49
Или у Цыпцына или у Гоулда ( или ещё где ) читал что очерёдность флагов у команды не имеет значения . У меня почему то если написать так :
Код:
$qwerty = ` keyframe -in 0 -in 1 -q -tc Sphere_translateY ` ;
print $qwerty ;
принт пишет значения времени у флагов . А если я как обычно ставлю флаг -q впереди пишет ошибку
Код:
$qwerty = ` keyframe -q -in 0 -in 1 -vc Sphere_translateY ` ;
print $qwerty ;
// Error: line 1: Invalid object or value: 0 //
Почему так ?
 

gimmick

Активный участник
Рейтинг
5
#50
Хотелось бы написать скрипт, который бы несколько раз запускал batch рендер, при этом меняя настройки рендер глобалз: к примеру диапазон кадров и их размер.
Если просто писать что-то типа

setAttr "defaultRenderGlobals.startFrame" 1;
setAttr "defaultRenderGlobals.endFrame" 2;
//указывать размер кадра в том числе
batchRender -f "E:\works\project\images\";


setAttr "defaultRenderGlobals.startFrame" 3;
setAttr "defaultRenderGlobals.endFrame" 4;
//здесь изменить размер кадра
batchRender -f "E:\works\projects\images\";

то остальная часть скрипта начинает выполняться, не дожидаясь окончания бэтч рендера.

Нужно ли поместить бэтч рендер в цикл и проверять условным оператором выполненность предыдущей операции (изменяя значение на пост-фрейм специально заведённой булевской переменной, например)?
(правда тогда цикл будет выполняться параллельно с рендером)

В общем, подскажите пожалуйста, как правильно это реализовать?
 

Dark™

Модератор форума
Команда форума
Рейтинг
431
#51
gimmick, прописывайте в bat файле рендер из командной строки, все будет поэтапно.
 

gimmick

Активный участник
Рейтинг
5
#52
Рендер через командную строку оказался прекрасным и очень удобным инструментом.

Но я столкнулся с такой проблемой, v-ray for MAYA на батч рендере не воспринимает динамически изменяющихся строковых атрибутов (когда анимируется input на них), т.е. рендерит все кадры так, как если бы эти атрибуты имели во всех кадрах то значение, которое они имеют в первом. По всей видимости, это может касаться не только строковых, но и всех скрытых и non-keyable атрибутов. Сделать строковые атрибуты keyable через channel Control невозможно - их там просто нет. (Через команду MEL тоже не получилось). Таким образом изменение стринговых атрибутов оказывается за полем зрения V-ray.

Однако при рендеринге через Render View результат получается адекватным.
Логично было бы использовать это, в цикле рендеря каждый кадр таким способом и сохраняя его в файл с уникальным именем.

Здесь загвоздка в том, чтобы отловить в Script Editor'е команду, сохраняющую полученное изображение в файл.
В книге С. Цыпцына приводится именно этот пример про рендеринг render View в цикле. Но там за сохранение в файл отвечает по всей видимости не актуальная в Maya 2011 комманда

renderWindowSaveImageCallback "RenderView" "C:/renderTest1.iff" "image";
у меня же, когда я выполняю сохранение в файл, появляется такой код:

formatManager.listFormats(createImageFormats.ImageDescriptor.kIsImage, createImageFormats.ImageDescriptor.filterFormat)
saveImageOptionsCreate FileDialogOptionsGrpBoxLayout;
np_getFileRuleWidgets "E:/works/test1";
setRenderViewSaveMode FileDialogOptionsGrpBoxLayout;
(u"E:/works/test1/images/0.jpeg").replace("\\","/");

при том выполнить его снова не получается.

Подскажите, пожалуйста, как правильно прописать команду saveImage, чтобы сохранить содержимое renderView?
 

gimmick

Активный участник
Рейтинг
5
#53
Подскажите, пожалуйста, как правильно прописать команду saveImage, чтобы сохранить содержимое renderView?
Видимо нужно использовать такую команду:
catch(eval(renderWindowSaveImageCallback ("renderView", $concatFilename, `getAttr defaultRenderGlobals.imageFormat`)));
 

fast0ne

Активный участник
Рейтинг
10
#54
Друзья! Я не совсем шарю в MEL, поэтому спрашиваю тут. Можно ли найти код какого-нибудь плагина или, например, алгоритма разбиения поверхности методом Voronoi, или еще чего-нибудь - без разницы, главное чтобы это несло практическую пользу? Если да, то прошу помощи в поиске. Нужно приспособить все это дело под свой диплом. Среди тех, кто будет на защите, мало кто вообще слышал, что такое Maya и MEL. Поэтому я хочу взять готовый "алгоритм" ))
 

kukart

Знаток
Рейтинг
29
#55
запустите майа и плагин. сохраните в майа бинари, откройте в блокноте будет сплошной мел.Это язык такой программирования, в нем мало кто разбирается на самом деле.)
 

Dimonn

Активный участник
Рейтинг
15
#56
Подскажите как реализовать в скрипте возможность объединения кривых, так же как это сделано в CorelDraw.
MEL только начал изучать и пока ни как не могу найти решение.
 

Вложения

Рейтинг
47
#57
Ответа не знаю, но мне кажется, что такое реализовать в Maye будет не просто. Это в максе одно действие – Atach, а здесь все гораздо сложнее. Хотя, может я неправ.
 

DanR

Активный участник
Рейтинг
17
#58

Merlin_2008

Активный участник
Рейтинг
5
#59
Кстати, а кто ещё подскажет. Можно ли как-то прицепить выражение к textForBevel для элемента текст? У меня сам текст должен меняться при изменении пространственных координат
Само выражение по изменению значения стринговой переменной есть, но зацепить к тексту не получается
В connection editor атрибут textForBevel.Text есть, но выражение на него не цепляется
 

gimmick

Активный участник
Рейтинг
5
#60
Подскажите, пожалуйста, как сделать так, чтобы экспршн с процедурой вида
moveEquidistantLocatorsOnCurve( "curve1" )`;
(т.е. не в правой стороне присваивания относящегося к атрибутам объекта)
выполнялся при каждом изменении положений определённых объектов. Например cluster1Handle.

пробовал искусственно добавлять атрибут к объекту, и вычислять его с помощью этой процедуры, делая её возвращающей значение соответствующего типа.
Безрезультатно.

Экспрешн выполняется только при переходе в другой кадр или при выборе соответствующего объекта.
 
Сверху