Maya Embedded Language (MEL) является язык сценариев , используемый для упрощения задачи в компании Autodesk 3D Graphics Software Maya . Большинство задач, которые могут быть выполнены с помощью графического интерфейса пользователя Maya, могут быть выполнены с помощью MEL, а также некоторые задачи, недоступные из графического интерфейса пользователя. MEL предлагает метод ускорения сложных или повторяющихся задач, а также позволяет пользователям распространять определенный набор команд среди других, которые могут оказаться полезными.
Дизайн
MEL синтаксически похож на Perl и Tcl . Он обеспечивает некоторое управление памятью и динамическое распределение массивов, а также предлагает прямой доступ к функциям, специфичным для Maya. Большинство стандартных команд Maya - это сценарии MEL по умолчанию, сохраненные в каталоге Maya Program Files.
MEL довольно ограничен по сравнению с основными языками сценариев. Mel - это в первую очередь язык, предназначенный для ведения журнала сеанса Maya [ необходима ссылка ] , поэтому ему не хватает многих дополнительных функций, таких как ассоциативные массивы. Python был добавлен в Maya в качестве альтернативы MEL в Maya 8.5. Тем не менее MEL предлагает некоторые преимущества Python:
- Обнаружение MEL лучше, поскольку встроенный командный эхо-сервер был создан с учетом MEL.
- Большая часть унаследованного кода и внутренней работы Maya находится в форме MEL. Это дает много информации о недокументированном внутреннем устройстве Maya.
MEL часто критикуют за отсутствие функций программирования и объектной ориентации. Однако на практике MEL используется как язык метапрограммирования, где MEL просто инструктирует архитектуру узлов Maya для решения проблемы. Поскольку узлы образуют фактическое вычислительное ядро Maya, использование более надежного и очевидного метода программирования было бы очень неэффективным подходом. MEL во многих отношениях дополняет Maya API с четкими границами между выделенными задачами. Это затрудняет изучение и полное понимание MEL.
Использует
Инструменты, разработанные с использованием сценариев MEL, обычно относятся к следующим категориям:
- Ввод / вывод данных
- Импорт данных захвата движения
- Экспорт проприетарных игровых данных
- Метаданные сцены для отслеживания производства
- Создание / изменение геометрии
- Пользовательские примитивы
- Тип данных, зависящий от стороннего средства визуализации (например, подразделенные поверхности RenderMan)
- Инструменты моделирования, отсутствующие в базовом пакете
- Инструменты анимации
- Тренажеры для мышц
- Управление оснасткой / настройкой
- Поведение толпы AI
- Инструменты освещения / рендеринга
- Автоматическое создание общих сложных настроек шейдера
- Эффекты до и после рендеринга
- Звонки сторонним рендерерам
- Динамика
- Пользовательское поведение частиц
- Эмерджентное скопление и роение смоделированного объекта
- Генетические алгоритмы
- Моделирование ткани
- Настройка и обслуживание сцен с файлами и папками
- Настройка пользовательского интерфейса
- Пользовательские элементы управления персонажами
- Удаление неверных команд Maya
- Пользовательские интерфейсы
Пример
Это пример сценария, который копирует выбранный объект по его пути:
// анимированные дубликаты / экземпляры скрипта proc animatedDuplication ( int $ rangeStart , int $ rangeEnd , int $ numOfDuplicates , int $ duplicateOrInstance ) { int $ range_start = $ rangeStart ; int $ range_end = $ rangeEnd ; int $ num_of_duplicates = $ numOfDuplicates ; int $ step_size = ( $ range_end - $ range_start ) / $ num_of_duplicates ; int $ i = 0 ; int $ temp ; currentTime $ range_start ; // установить в начало диапазона строка $ selectedObjects []; // для хранения выбранных объектов $ selectedObjects = `ls -sl` ; // сохраняем выбранные объекты select $ selectedObjects ; в то время как ( $ i <= $ num_of_duplicates ) { $ temp = $ range_start + ( $ step_size * $ i ); currentTime ( $ temp ); // выбранные объекты для копирования или экземпляра select $ selectedObjects ; если ( $ duplicateOrInstance == 0 ) { duplicate ; } else { экземпляр ; } $ i ++ ; } } // Пример использования: // дублируем текущий выбор 5 раз - // равномерно распределяем между кадрами 1 и 240 animatedDuplication ( 1 , 240 , 5 , 0 );
Функции
Maya также предлагает язык выражений, который является надмножеством MEL, и в результате создаются узлы, которые выполняются как часть графа зависимостей Maya . Выражения разрабатываются с помощью редактора выражений Maya и позволяют запускать сценарии, в то время как Maya оценивает файл сцены при каждом изменении времени, чтобы моделировать сложное поведение или выполнять другие полезные задачи.
Рекомендации
Внешние ссылки
- Официальный веб-сайт
- Справочник по командам MEL (Maya 2013)
- Справочник по командам MEL (Maya, 2014 г.)
- Справочник по командам MEL (Maya 2015)
- MEL и выражения - Справка по Autodesk Maya 2015
- Мел Вики
- Полезные скрипты для Maya
- CGSociety - Форум программирования на майя
- CGSociety - ветка 'MEL scripts'
- CGSociety - ветка 'Maya UI Building'
- Руководства по написанию сценариев MEL для Maya - CreativeCrash
- переменные в mel - инструктор ACCAD Алан Прайс
- Видеоуроки по MEL - lynda.com
- Поиск цифровых репетиторов - MEL
- майя мел - polyextrude.com
- MEL - maya rigging wiki
- Мел сценарий - RobTheBloke