Глава 2. Теория
This project is a student project at the School of Design or a research project at the School of Design. This project is not commercial and serves educational purposes

Взаимодействие скриптов и Maya API

Maya API (Application Programming Interface) — это набор инструментов, которые позволяют управлять Maya. Простыми словами, это внутренний механизм, который хранит всю информацию о сцене: где находится объект, какой у него цвет, какие у него ключи, как связаны ноды и т. п.

С его помощью можно давать команды программе пропуская интерфейс, меню и кнопки. Это полезно и удобно в том плане, что при ручной работе Maya затрачивает время и ресурсы устройства на обновление окон, полей и панелей, в то время как Maya API действует напрямую.

Исходя из этого, скрипты сами по себе являются запросами и инструкциями, которые пользователь отправляет в Maya API.

big
Original size 587x224

Программные интерфейсы Autodesk Maya

Взаимодействие скриптов с Maya API происходит на двух уровнях: высокоуровневом и низкоуровневом. Разница между ними заключается в том, насколько глубоко скрипт «залезает» в работу программы и насколько сложные, быстрые или уникальные задачи может решать.

big
Original size 2845x192

Схема работы скриптов на высоком уровне

При высокоуровневом взаимодействии скрипты делают то же, что и кнопки в интерфейсе. Они работают через стандартные команды Maya.

Такой скрипт является некоторым «конструктором»: пользователь может создать объект, передвинуть его и поставить ключ, создав из этого процедуру и автоматизировать ручной процесс.

big
Original size 2845x192

Схема работы скриптов на низком уровне

Низкоуровневое взаимодействие позволяет напрямую работать со структурными элементами Maya.

Вместо обычных команд, таких как «перемести объект» или «выдели вершины», скрипт получает доступ к внутренней структуре сцены. Это позволяет ему управлять геометрией меша, анимационными деформерами на уровне костей и скина, кастомными нодами и оптимизировать производительность при обработке больших сцен.

Сравнение Python и MEL

Python и MEL — два основных языка, используемых для написания скриптов в Autodesk Maya.

Original size 1088x343

Сравнение синтаксиса MEL и Python на примере создания окна с двумя кнопками

MEL (Maya Embedded Language) — встроенный в Maya командный язык, созданный специально для автоматизации задач в Maya.

Изначально MEL задумывался как способ описывать команды, которыми Maya сама управляет сценой, интерфейсом и нодовой структурой. Практически любое действие пользователя в программе транслируется в Script Editor в виде MEL-команды.

Original size 2149x571

Записи в логе о создании, перемещении, изменении размера и вращении куба

В архитектуре MEL отсутствуют классы и модули, что делает её неудобной для больших проектов. Язык больше подходит для прямых последовательных команд и быстрого вызова функций Maya.

Кроме того, существование MEL возможно только внутри программы.

Original size 2149x562

Скрипт на Python аналогичный записи в логе с изображения выше

Python — это современный, универсальный язык программирования общего назначения. В Autodesk Maya он появился в версии 8.5 и сейчас расширяет возможности MEL и позволяет создавать более сложные инструменты.

Несмотря на то, что Python — универсальный язык программирования, для работы с Autodesk Maya ему требуется доступ к ее внутренним функциям и данным сцены. С этой целью используются специальные модули (специальные пакеты, которые содержат ресурсы, необходимые для взаимодействия с программой) и библиотеки.

Код для создания сферы радиусом 5 на MEL и Python

maya.cmds

Это основной модуль для скриптинга на Python в Maya. Он представляет собой «оболочку» для команд MEL, давая возможность выполнять те же действия, что и MEL, но используя Python. Модуль позволяет создавать, модифицировать объекты, работать со сценой и анимацией с помощью Python-конструкций.

Original size 2361x678

Создание куба с использование maya.cmds

PyMEL

Это объектно-ориентированная обёртка (метод упрощения работы с программами или библиотеками) над maya.cmds и OpenMaya. PyMEL упрощает написание кода, преобразуя команды в Python-объекты, что делает скрипты более понятными и читаемыми. PyMEL часто предпочтителен в больших инструментах и проектах за счёт удобства и структуры. Однако он иногда медленнее maya.cmds и требует корректной установки и интеграции в среду Maya. PyMEL облегчает управление сценой, уменьшает количество кода и усилий для работы с объектами Maya.

Original size 2361x678

Создание куба с использованием PyMEL

OpenMaya

Этот модуль предоставляет низкоуровневый интерфейс доступа к API Maya. Он используется для более сложных и производительных операций, например, при разработке плагинов, обработке данных сцен большого объёма и интенсивных вычислениях. OpenMaya обеспечивает прямой доступ к внутренним структурам данных Maya. Может быть менее удобен для быстрого прототипирования, зато даёт больше контроля и производительности.

На примере ниже показан скрипт для создания простой геометрии куба с помощью OpenMaya. На практике такой способ является непрактичным и неудобным, поэтому для подобных задач обычно используют maya.cmds или PyMEL.

Original size 2349x1254

Создание «чистой» геометрии куба без ноды трансформации (transform node) c помощью OpenMaya

В целом, MEL, maya.cmds, OpenMaya и PyMEL являются базовыми и официально поддерживаемыми инструментами, а остальные — это вспомогательные или сторонние дополнения для удобства и расширенного функционала.

В вопросе удобства использования Python имеет преимущество: он более гибкий и современный, поддерживает библиотеки и выходит за пределы программы, давая больше возможностей для работы. Тем не менее, для отдельных точечных команд удобнее использовать MEL.

Script Editor

В Maya для написания и тестирования скриптов используется Script Editor — встроенный редактор, где можно писать и сразу запускать код на MEL и Python.

Способы открыть Script Editor через вкладки Panels и Windows

Original size 1888x107

Способ открыть Script Editor через иконку в нижней панели

Открывается через меню Window → General Editors → Script Editor, во вьюпорте через Panels → Panel → Script Editor или с помощью иконки внизу интерфейса.

Состоит из двух основных частей: - лог, который отображает историю команд и их результаты - редактор, где пользователь пишет код

Также в верхней части окна находится панель инструментов.

Original size 2503x1259

Объяснение окна Script Editor официальной документацией Autodesk Maya

Для запуска скрипта в окне ввода, можно сделать одно из следующих действий:

- Нажать Enter на цифровой клавиатуре - В меню выбрать Command → Execute - Выделить текст, который нужно выполнить, и нажать Ctrl + Enter

Меню, появляющиеся при нажатии ПКМ

Для создания, открытия или закрытия вкладки можно сделать одно из следующих действий:

- Выбрать нужную опцию в меню Tabs - Щёлкнуть правой кнопкой мыши по вкладке и выбрать нужное действие из контекстного меню - Зажать правую кнопку мыши в области ввода или панели истории и выбрать нужную опцию в появившемся меню - Использовать горячие клавиши: Ctrl+T — для создания вкладки, Ctrl+Shift+Tab — для перехода к предыдущей, Ctrl+Tab — для перехода к следующей, Ctrl+W — для удаления текущей

Также, чтобы закрыть вкладку, можно кликнуть по ней средней кнопкой мыши.

Original size 869x215

Вкладка File

File

Open Script — загружает содержимое текстового файла в Script Editor. Source Script — выполняет скрипт из текстового файла. Save Script — сохраняет выделенный текст в файл. Save All Script Tabs — сохраняет все вкладки Script Editor. Они также сохраняются автоматически при выходе, но эта команда позволяет не потерять их после вылета программы. Save Script to Shelf — добавляет кнопку на текущую полку, которая будет выполнять выделенный скрипт.

Original size 869x468

Вкладка Edit

Edit

Включает стандартные команды редактирования: Undo, Redo, Cut, Copy, Paste, Select All, а также:

Go to line — перейти к указанной строке. Search and Replace — поиск и замена текста, с выбором направления поиска и учётом регистра. Indent / Unindent Selection — добавление или удаление отступов для выделенного текста. Clear History — очистка панели истории. Clear Input — очистка панели ввода. Clear All — очистка обеих панелей (истории и ввода).

Original size 869x382

Вкладка History

History

Batch Render Messages — выводит сообщения батч-рендера. Echo All Commands — при включении все MEL-команды, выполняемые Maya, отображаются в верхней панели Script Editor. Line Numbers in Errors — отображает номера строк в сообщениях об ошибках. Show Stack Trace — открывает отдельное окно с трассировкой ошибок и номерами строк в скриптах. Suppress Command / Info / Warning / Error Messages — отключает отображение результатов команд, информационных сообщений, предупреждений или ошибок. Suppress Duplicate Variable Messages — отключает предупреждения о дублировании переменных в одной области видимости. Suppress Stack Window — при включении окно с информацией о выполнении скриптов не открывается, а результаты выводятся в основной вывод Script Editor.

Original size 869x320

Вкладка Command

Command

Show Line Numbers — включение/отключение отображения номеров строк. Use Tabs for Indent — при нажатии Tab вставляется табуляция, а не пробелы. Show Tabs and Spaces — визуализация табуляций и пробелов, особенно важно для Python. Auto-close Braces — автоматическое закрытие фигурных скобок. Command / Object Path Completion — автодополнение команд и путей объектов. Show Tooltip Help / Quick Help — отображение подсказок и справки по командам. Execute — выполнение MEL-скрипта в нижней панели, также можно нажать Enter на цифровой клавиатуре.

Original size 869x237

Вкладка Tabs

Tabs

New Tab — создаёт новую вкладку, с выбором языка выполнения: MEL или Python. Rename Tab — переименовать текущую вкладку. Go to Previous / Next Tab — переключение вкладок. Delete Tab / Delete All Other Tabs — удаление текущей вкладки или всех, кроме текущей. Command Highlighting — подсветка MEL и Python команд в соответствующих вкладках. Saved MEL Scripts — MEL-скрипты автоматически сохраняются при выходе из Maya и восстанавливаются при следующем запуске.

Пример создания анимации посредством кода

С помощью кода можно создавать простые и при этом технически и физически корректные анимации. В данном примере рассматривается анимация падения мяча, основанная на реалистичных параметрах движения под действием силы тяжести и взаимодействии с поверхностью.

Original size 1088x671

Код для анимации падения мяча

Код позволяет задать начальную высоту мяча, учесть ускорение при падении, а также настроить поведение мяча при ударе и отскоке от поверхности. При этом значение скорости и положение мяча автоматически рассчитываются для каждого кадра, обеспечивая плавное и реалистичное движение.

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

Original size 792x391

Автоматическая анимация падения трех мячей разной упругости

В получившейся анимации представлены три мяча разной степени упругости — 0.35, 0.55 и 0.75, где 1.0 — наибольшее значение. Эти значения присваивались переменной elastiсity и автоматически подставлялись в формулу, по которой в дальнейшем рассчитывалось движение объекта.

Анимация, созданная с помощью кода, получилась технически верной и естественно отражает физические особенности падения мяча — корректно учитывается ускорение свободного падения и взаимодействие с поверхностью. Однако, несмотря на точность расчётов движения, такая анимация может быть недостаточно творческой и выразительной.

Bibliography
Show
1.

Autodesk Maya Documentation // Autodesk URL: https://help.autodesk.com/view/MAYAUG/2022/ENU/ (дата обращения: 10.10.2025)

2.

Maya API Documentation // Autodesk URL: https://help.autodesk.com/cloudhelp/2022/ENU/Maya-Tech-Docs/CommandsPython/ (дата обращения: 12.10.2025)

3.

Technology at Pixar // Pixar URL: https://www.pixar.com/technology-at-pixar (дата обращения: 12.10.2025)

4.

Autodesk Knowledge Network. Introduction to MEL Scripting // Autodesk URL: https://knowledge.autodesk.com/support/maya/learn-explore/caas/CloudHelp/cloudhelp/2022/ENU/Maya/files/GUID-E2F3F3E1-91A4-4AD2-99B6-0DC13C7D9EE7-htm.html (дата обращения: 15.10.2025)

5.

Autodesk Maya // Wikipedia URL: https://ru.wikipedia.org/wiki/Autodesk_Maya (дата обращения: 15.10.2025)

6.

Studio Library // Studio Library URL: https://www.studiolibrary.com/ (дата обращения: 15.10.2025)

7.

ZV PARENT MASTER 1.3 // Paolo Dominici URL: https://paolodominici.com/products/zvparentmaster/ (дата обращения: 01.11.2025)

8.

Universal IK FK Switch and Match Tool FREE 3.1.0 for Maya // Gumroad URL: https://monikayellow.gumroad.com/l/srTEI (дата обращения: 01.11.2025)

9.

Overlapper 1.1.2 // Gumroad URL: https://dkolpakov.gumroad.com/l/Overlapper (дата обращения: 03.11.2025)

10.

Tween Machine Py3 for Maya 2022+ // Gumroad URL: https://themaize.gumroad.com/l/tweenmachine3 (дата обращения: 03.11.2025)

11.

bhGhost // Graphite9 URL: https://www.graphite9.com/MayaDownloads.html (дата обращения: 03.11.2025)

12.

Autodesk Maya: полезные базовые функции для работы с 3Д моделями и их тестирования // Habr URL: https://habr.com/ru/articles/457720/ (дата обращения: 04.11.2025)

13.

Maya.cmds VS pyMel.core // Autodesk Community URL: https://forums.autodesk.com/t5/maya-programming-forum/maya-cmds-vs-pymel-core/td-p/10883604 (дата обращения: 04.11.2025)

14.

Обзор редактора скриптов (Script Editor) // Uroki-Maya URL: https://uroki-maya.ru/21/obzor-redaktora-skriptov-script-editor (дата обращения: 01.11.2025)

15.

MEL vs Python Scripting in Maya // Autodesk URL: https://www.autodesk.com/autodesk-university/class/AutodeskR-MayaR-Scripting-MELtm-and-Python-2012 (дата обращения: 04.11.2025)

Image sources
Show
1.

Autodesk Maya User Documentation 2018 // Autodesk URL: https://help.autodesk.com/view/MAYAUL/2018/ENU/ (дата обращения: 01.11.2025)

2.

ZV PARENT MASTER 1.3 // Paolo Dominici URL: https://paolodominici.com/products/zvparentmaster/ (дата обращения: 01.11.2025)

3.

Madagascar «The Tech of Madagascar» (фрагменты из видео) // YouTube URL: https://www.youtube.com/watch?v=n_OpjHLpAyE (дата обращения: 01.11.2025)

4.

Maya 8 Review: How the Standard-Bearer Holds Up // AWN URL: https://www.awn.com/vfxworld/maya-8-review-how-standard-bearer-holds (дата обращения: 01.11.2025)

5.

Alias | Wavefront Maya 1.0 — UI (фрагменты из видео) // YouTube URL: https://www.youtube.com/watch?v=NpSxvclBk2E (дата обращения: 03.11.2025)

6.

Maya Community UI Theme Presets // Autodesk Forum URL: https://forums.autodesk.com/t5/maya-ideas/maya-community-ui-theme-presets/idi-p/13212828 (дата обращения: 03.11.2025)

7.

Essential Free Maya Animation Scripts (фрагменты из видео) // YouTube URL: https://www.youtube.com/watch?v=pPdl39IoYGE (дата обращения: 03.11.2025)

8.

Disney’s Filmmaking Process: Rigging in Encanto, Frozen, Moana, Raya (фрагменты из видео) // YouTube URL: https://www.youtube.com/watch?v=6GdbwbVZMg0 (дата обращения: 03.11.2025)

9.

Zootopia 2: How Disney Animates with Autodesk Maya (фрагменты из видео) // YouTube URL: https://www.youtube.com/watch?v=b3kcbNeDZiw (дата обращения: 08.11.2025)

10.

Making Of Hotel Transylvania 2 (фрагменты из видео) // Dailymotion URL: https://www.dailymotion.com/video/x38z80c (дата обращения: 08.11.2025)

11.

Making of Hotel Transylvania (фрагменты из видео) // Dailymotion URL: https://www.dailymotion.com/video/x14v0dx (дата обращения: 08.11.2025)

Chapter:
1
2
3
4
5
We use cookies to improve the operation of the HSE website and to enhance its usability. More detailed information on the use of cookies can be fou...
Show more