Render.ru

вопросы по MEL

VARVAR13

Активный участник
Рейтинг
8
#21
Впрос.
Можно ли как то "поймать за хвост" конец выполнения Batch Render, чтобы заставить потом маю выполнить какой либо скрипт, как например функция Post Render MEL для Render Current Frame
 
Рейтинг
47
#22
Господа, добрый день. Я смотрю в этой ветке дают толковые и полноценные ответы, а значит люди заглядывающие сюда компетентны и скорее всего, имеют большое количество МЕЛовых полезностей.

Вопрос: ни у кого ли нет в пользовании, таких себе интерактивных скриптов (выполняющих разные действия в зависимости от типа объекта и включенного в нем подобъекта).

В МаксСкрипте это выглядит так:
Код:
macroScript Alt_F
 category:"Chernega"
 toolTip:"Alt_F"

 ( case of
 (

 ( classof $ == Editable_Poly ): 
 case subobjectLevel of (
 1: macros.run "Editable Polygon Object" "EPoly_Break"
 2: macros.run "Editable Polygon Object" "EPoly_ShapeFromEdges"
 3: macros.run "Editable Polygon Object" "EPoly_ShapeFromEdges"
 4: actionMan.executeAction 1261319018 "Detach_Poly" 
 5: actionMan.executeAction 1261319018 "Detach_Poly" 
 )
default: macros.run "Chernega" "PPG_Low"

 ( classof $ == line or classof $ == SplineShape ): 
 case subobjectLevel of (
 1: macros.run "Editable Spline Object" "ESpline_Break"
 2: macros.run "Editable Spline Object" "ESpline_Detach_Segment"
 3: macros.run "Editable Spline Object" "ESpline_Detach_Spline"

 )
 default: macros.run "Chernega" "PPG_hight"
 )
 )
То есть, определяется что выделено (Поли, Нурбс, Сабдив, Кости, и т.д.) и после запуска скрипта выполняется действие после default. Следовательно если выделен какой то подобъект (Вертексы, Изопарн или Курвс поинт), что бы выполнялся кусок кода идущий за ним.

Если у кого то есть что то подобное (что вполне возможно, так как это очень удобно) выложите пожалуйста сюда.

Если не совсем понятно что я имею в веду, напишите, перефразирую.

Ps: VARVAR13, прошу прощения что задаю параллельный вопрос не дождавшись ответа на твой.
 
Рейтинг
34
#23
Так ведь в майке для полигнов это всё есть сразу . Маркин менюшки на шифте и контрле . А если надо для остального , то есть классная книга "F1" . Там в первой же главе похожие вещи делаються ( и не только ) . Я правда сам не пробовал браться , тольто азы сейчас учу , но метериал там классный .
 
Рейтинг
47
#24
A.D.I.D.A.S. огромное спасибо за наводку!
На ближайшие пару дней я уйду с головой в настройку интерактивных кнопок и меню (как у меня было в максе )

Ps; Если б можно было сказать десяток раз "спасибо", так бы и сделал!
 
Рейтинг
47
#25
Господа, а как к операнду If добавить еще несколько условий?
К примеру:
if (size(`filterExpand -sm 12`) > 0) // к 12 нужно добавить 31, 32, 34, 35. И если хоть одно из этих пяти условий верно, тогда выполняется действие.
 
Рейтинг
47
#27
Я не совсем понял куда эти && вставлять.

По просматривал чужие коды, увидел что то подобное if ($segm != 1 && $segm != 2) Как я понимаю, здесь сравниваются два условия и если они верны то и выполняется действия.

if (size(`filterExpand -sm 12`) > 0) //Тут же, напрямую указывается, что выделен поли объект в режиме ОбджектМоод.
Нельзя ли на примере хотя бы одно строчки показать как к нему добавить 32, 34, 35 (Эджи, фейсы, UVs).

И еще одно.
Строка size (`ls -hilite`); по идеи должна возвращать сумарное количество выделенных (подсвеченных) объектов. Но у меня почему то постоянно пишется // Result: 0 //
 

sanctus

Активный участник
Рейтинг
15
#28
совершенно непонятно чтовы тут делаете, но:
Код:
if (size(`filterExpand -sm 12`) > 0  && size(`filterExpand -sm 32`) > 0) ...итд
различайте понятие подсвеченный и выделенный.
hilite - это объект который вы "взяли в кандидаты на выбор компонент", т.е. нажали по нему правой кнопкой, и выбрали требуемый режим компонент. чаще всего он один, так что это безсмысленно)))
видимо вы хотите чего-то другого, но не сформулировали еще.
 
Рейтинг
47
#29
Я частично разобрался, но через or учитывается два значения. При добавлении большего количества, выбивает ошибку. А нужно четыре.

if (size(`filterExpand -sm 12`) || (size(`filterExpand -sm 34`) > 0))
dR_DoCmd("modeVert");
 

Dark™

Модератор форума
Команда форума
Рейтинг
431
#30
Впрос.
Можно ли как то "поймать за хвост" конец выполнения Batch Render, чтобы заставить потом маю выполнить какой либо скрипт, как например функция Post Render MEL для Render Current Frame
Для командной строки есть флаг -postRender {mel code} для команды render, прекрасно работает.

BatchRender из маи же запускает отдельный процесс, и чтобы иметь возможность проследить за его выполнением можно использовать код посложнее:
Код:
BatchRender;
scriptJob -ie "check_batch()";
global proc check_batch() {
$test = gmatch(`system tasklist`,"*mayabatch.exe*");
    if(!$test) {
    	print "OK";
    }
}
Единственное надо добавить способ уничтожить скриптджоб по окончанию всего. Зацикливание в конце можно остановить вручную через scriptJob -ka

if (size(`filterExpand -sm 12`) > 0) // к 12 нужно добавить 31, 32, 34, 35
Можно несколько флагов указывать `filterExpand -sm 12 -sm 31 -sm 32` и т.п.
 
Рейтинг
47
#31
Добрый вечер.
Есть еще несколько вопросов.

1) строка size (`ls -hl`); постоянно возвращающая // Result: 0 //

Для чего это нужно:

Благодаря наводке A.D.I.D.A.S. на книгу F1 и помощи sanctus, Dark, у меня есть вот такой вод код:
Код:
if (size(`filterExpand -sm 12`) > 0)
C_Poly_ObjMode_Press;
if (size(`filterExpand -sm 31`) > 0)
C_Poly_Vertex_Press;
if (size(`filterExpand -sm 32`) > 0)
C_Poly_Edge_Press;
if (size(`filterExpand -sm 34`) > 0)
C_Poly_Face_Press;
(еще будут добавляться менюхи для нурбсов, сплайнов и т.д.)
Следовательно при разных выделенных объектах и подобъектах, запускаются разнообразные МаркинкМеню.
А вот для того что бы добавить отдельное меню на случай когда ничего не выделено, как раз и нужна строчка size (`ls -hl`);

Пример из книги:
Код:
if ( size (%ls -hl’) > 0 ) // проверяем подсвечен ли какой-либо объект
PolyModelingTools_Press; // вызываем маркинг меншшку с поли инструментами
else //не подсвечен ни один объект
Create_Press; // вызываем менюшку создания примитивов

(я так понимаю, в первой строчке опечатка. Вместо % должно быть `)
В общем у меня постоянно возвращается 0 и следовательно открывается меню идущие после Else.
Может это у меня глюк с системе?

2) В той же книге вскользь упоминается о функции getPanel -wf; которая определяет в каком эдиторе ведется работа в данный момент. Следовательно интерактивность одной кнопки на клавиатуре можно расширить не только на определение типов объектов а и на разные рабочие панели (редактор материалов, развертки и т.д.). К сожалению в книге не приводится примеров. Я попытался перебрать несколько вариантов, но в виду скудных знаний у меня ничего не вышло.

Наверное должно быть как то так:
Код:
if (‘getPanel -wf;’ == “hyperShadePanel1”)
{
Действие;
}
if (‘getPanel -wf;’ == “modelPanel4”)
{
Действие;
}
Если будут найдены ответы на эти вопросы, то я смогу забацать полной аналог Xumi, или даже лучше.
 

sanctus

Активный участник
Рейтинг
15
#32
MEL - это язык програмирования, а не сочинение на тему, здесь не место посторонним символам

кавычки для строк - это " (находится на кнопке Э), а не “ и не ”
спец символ возврата значения - ` (верхняя левая клавиша, сразу под эскейпом), ни в коем случае не ‘ или ’

код работает прекрасно:
Код:
if (`getPanel -wf` == "modelPanel4")
{
print "cool";
}
видимо при наборе текста в книжке произошло автоматическая коррекция, или не автоматическая. пусть это останется на совести выпускающего редактора.
 

JBond

Знаток
Рейтинг
33
#33
у гномон воркшоп есть 4 DVD по MEL
есть книги по мелу зарубежных авторов - лучше учить их а не F1,Ципцина
можно полистать по С++ книгу до классов
maxscript обьектно-ориентирован, MEL - нет; их бесмысленно сравнивать.
 
Рейтинг
34
#34
J-Bond я конечно далеко не знаток MEL , скорее наоборот . Немного понял синтаксис и всё . Но именно благодаря "Понимая Мaya" Цыпцына начиню понемногу понимать как сделать что нить c помощъю MEL . Запомнить основные нужные команды , и разобрать кучку другую примеров ( например как в F1 ) и в голове уже кое что отложиться . Я не говорю что гномон плохо , но без знания англисского сразу лучше Цыпцына для понимания основ .
 

JBond

Знаток
Рейтинг
33
#35
Книги есть переведенные
http://free-book.at.ua/news/1-0-22
Знание английского для видео уроков нужно минимальное.
Если не разбирать уроки и книги на английском -тонны полезной информации пройдут мимо.
Форум в принципе не для обучения в духе ("Я не совсем понял куда эти && вставлять") , а для решения проблем.
Если книгу почитать этих вопросы отпадут сами собой , а когда уже реально что-то не получается писать на форум.
 
#36
скажите, как в expression сделать перебор большого количества объектов, проблема в синтаксисе, в том как подставить вместо номера в имени объекта переменную &i из цикла. грубо говоря мне нужно вот такое сделать &a = pPlane(&i).translateX
 
Рейтинг
47
#38
J-Bond, понимаю ваше недовольство. Сам возмущался (на форуме Макса) когда начинающие спрашивали элементарные вещи (скажем по моделированию) о которых рассказывается в первых же уроках любого видеокурса.
Я перешел в Майю с другого 3Д редактора и у меня есть привычные сочетания клавиш с разными инструментами. И эти несколько примитивных вопросов и ответов дали мне возможность настраивать все как было в максе.
Так что, сейчас настроюсь, помимо моделирования вникну в редактор материалов и ЮВ развертки, а после этого, десяти часовой курс по MEL
 

sanctus

Активный участник
Рейтинг
15
#39
ну да, а потом вам не понравится майский UV редактор и вы напишете на меле копию максовского, и так далее...
майку написали не идиоты, в ней все продумано и я бы порекомендовал не менять интерфейсных вещей до того как вы освоите стандартный функционал.
 
Рейтинг
47
#40
Эээээ, не. Я к делу подошел с током.
В течении двух месяцев, я смотрел уроки и делал все без горячих клавиш. Только с помощью мыши и верхнего меню. Разобрался в инструментах, настройках и принципах работы. А сейчас с помощью простенького скрипта компоную близкие по смыслу стандартные инструменты.

К примеру.

Код:
[b]Альт+Д
// выделен любой объект[/b]
Проигрывается скрипт доворачивающий объект до отметки кратной 90 градусам.
[b]// вершины[/b]
Сплит 
[b]//ребра[/b]
При одном выделенном ребре, выделяется весь луп и удаляется
[b]//фейсы[/b]
Детачит выбранные полигоны


[b]Шифт+Д[/b]
// выделен любой объект
Копирует объект
[b]// вершины[/b]
Аверандж вертесис
[b]//ребра[/b]
При одном выделенном ребре, выделяется весь ринг и добавляет по середине луп
[b]//фейсы[/b]
Копирует выделенные выбранные полигоны
[b]//нурбс обьерт, при выделенном Isoparm[/b]
Дубликейт сурфейс курсв

и т.д.
Ну и во всех остальных окнах эти кнопки так же будут выполнять какие то действия.
К примеру в Хайпершейде на Альт+Д можно посадить Клеар Граф (что бы не тянуться постоянно к иконке.)
 
Сверху