воскресенье, 22 сентября 2019 г.

Конфигурация Sublime Text для работы с Maya и OSL

Система компьютерной графики, анимации и визуализации Autodesk Maya является одним из лидирующих решений, используемым тысячами художников, дизайнеров, аниматоров и технических специалистов, создающих высококачественную компьютерную графику. Одним из ключевых преимуществ Maya является её открытый формат данных и многофункциональный язык сценариев MEL, и поддержка Python.
В своей работе я часто обращаюсь к созданию и редактированию файлов сцен и сценариев MEL или Python. Но стандартного функционала Script Editor недостаточно, когда приходится работать с большим количеством файлов сценариев, внесением правок и вообще, при работе с GitHub и другими сервисами коллективной разработки.
В свое время, мой старый друг порекомендовал мне попробовать редактор Sublime Text. Тогда это была вторая версия данного редактора. Он условно бесплатный, но его ограничение в виде предложения купить лицензию после каждого 20-го сохранения, по своей сути ничтожна, да и цена в $80 тоже достаточно низкая, а вот обширнейшая база расширений и различных функций, позволяет решать большое количество задач. Sublime Text превосходно зарекомендовал себя среди разработчиков в индустрии анимации и визуальных эффектов.
Отправка выделенного блока текста в Maya напрямую из Sublime Text с помощью SublimeMaya
Что позволило создать свою аудиторию среди профессионалов в индустрии CG. В данной небольшой статье я расскажу как можно настроить Sublime Text 3 и Maya для совместной работы посредством командных портов. Вы узнаете о том, как установить расширения для Sublime Text и сконфигурировать их. Порядок действий выстроен следующим образом:
  • Установка Package Control
  • Установка и конфигурация MayaSublime
  • Установка и конфигурация Sublime OSL
Мы осуществим установку и базовую конфигурацию пакетов в Sublime Text и создадим небольшой сценарий в Maya, а также определим глобальные настройки программы.

Установка Package Control

Менеджер пакетов Package Control для Sublime Text очень прост для осуществления поиска, установки и обновления пакетов. Менеджер может быть установлен с помощью специального набора команд, доступных на официальном сайте https://packagecontrol.io/ для получения блока команд, пройдите в раздел Installation и выберите версию Sublime Text 3. Скопируйте блок и введите скопированный блок в консоль Sublime Text ([Ctrl] + [`] или View => Show Console).

Редактор Sublime Text 3 с введенным в консоль блоком команд для установки Package Control.
После того, как менеджер пакетов будет установлен, перезапустите ST3. Когда ST3 будет запущен вновь, доступ к возможностям Package Control можно осуществить с помощью клавиатурной комбинации [Ctrl] + [Shift] + [P], после выполнения которой будет открыта командная строка с возможностью поиска и выполнения команды.
Все установленные пакеты доступны в специальной директории, находящейся в директории пользователя, от имени которого выполняется запуск ST3:
Linux: /home/USER_NAME/.config/sublime-text-3
macOS: /Users/
USER_NAME/Library/Application Support/Sublime Text 3/Packages
Windows: SUBLIME_INSTALL_DIR/Data/Packages

Мы еще обратимся к данным директориям для установки и конфигурации пакета OSL, помимо этого, используйте их для установки и развертывания других расширений.

Установка и конфигурация MayaSublime

За счет своей гибкой расширяемости и удобной модели лицензирования Sublime Text получил хорошее распространение среди технических специалистов в области CG, занимающихся разработкой расширений, сценариев, шейдеров и в процессе работы с сопутствующими данными. Пакет MayaSublime был разработан специально для упрощения работы с текстовыми данными, формируемыми в процессе работы с Maya.
Основные возможности MayaSublime:
  • Дополнительный поток всех данных выводимых редактором Script Editor обратно в консоль Sublime
  • Поддержки команды Undo в Maya
  • Включает подсветку синтаксиса языка MEL в редакторе Sublime
  • Простая отправка сценария или блока выделенного кода с помощью ПКМ и функции Send to Maya
Для установки MayaSublime используйте командную строку Sublime, вызываемую с помощью клавиш [Ctrl] + [Shift] + [P], далее введите команду package control и в списке выберите Package Control: Install Package.
Выбор команды Package Control в списке команд Sublime Text
После того, как будет открыт раздел поиска пакетов, введите команду MayaSublime, или просто Maya. После щелчка по клавише ввода, будет установлен пакет MayaSublime.

Ввод команды MayaSublime для установки одноименного пакета из Package Control
В строке статуса (в нижней области окна Sublime Text 3) в процессе установки будет отображён символ подключения и загрузки пакета. После установки необходимо перезапустить ST3 и сконфигурировать MayaSublime и Maya. Конфигурацию MayaSublime можно выполнить с помощью глобальных настроек пакета, доступ которым вы можете получить с помощью меню Preferences => Package Settings => MayaSublime => Settings — Default.

Вкладка с открытым файлом настроек MayaSublime
Давайте рассмотрим основные параметры пакета MayaSublime. Благо их не много и пакет может быть сконфигурирован достаточно быстро.
Параметр "maya_hostname": "127.0.0.1", определяет имя хост-системы или адрес, по умолчанию это IP-адрес — 127.0.0.1.
Командный порт (commandPort) является очень важным элементом любого профессионального приложения. С его помощью вы можете передавать данные между приложениями, что существенно облегчает удаленную работу или предоставляет возможность использовать дополнительные функции, не реализованные в одном приложении.
Если вы планируете использовать Python, то настройте параметр "python_command_port" : 7002,. Если же вы используете MEL, то введите желаемый порт в параметр "mel_command_port" : 7001,.
При отправке выделенного в ST3 кода в Maya будут исключены комментарии в одну строку, чтобы уменьшить объем отправляемых данных, что в итоге оставит больше места для отправки большего количества кода, используйте параметр "strip_sending_comments": true,. Где true — параметр активен, а falsh — параметр отключен. Причина отключения этой функции заключается в том, что вы полагаетесь на точные номера строк из ошибок в своем коде, сообщаемых редактором сценариев. При отправке целых файлов (ничего не выбрано) комментарии никогда не удаляются.
Параметр "no_collisions": true, позволяет выполнить обертывание кода Python в собственное пространство имен, чтобы избежать конфликтов с основной средой Maya. (Это безопаснее, но если вы объединяете этот модуль с кодом из редактора сценариев, установите для параметра значение false.)
Если параметру "create_undo": присвоено значение false, пакет создает возможность отмены вокруг всего кода, который будет отправлен и выполнен в Maya.
Если параметру "receive_maya_output": присвоено значение true, MayaSublime автоматически подключит редактор Script Editor, чтобы также выводить информацию в консоли Sublime. После изменения этого значения может потребоваться перезапуск Sublime Text. Независимо от этого параметра, вывод из Maya можно включать и выключать с помощью доступных команд в палитре команд. По умолчанию, данному атрибуту присвоено значение false (отключен).
Выполнить конфигурацию commandPort в Maya можно с помощью глобальных параметров программы. Для этого, перейдите в диалоговое окно Preferences (Window => Settings/Preferences => Preferences => Applications).

Диалоговое окно Preferences в Maya. В разделе Applications может быть задан командный порт
Активируйте атрибут Default command port, а в текстовом поле Name, введите номер порта, который вы указали для связи приложений.
Также вы можете воспользоваться командами на языке MEL. Например, если вы хотите открыть commandPort на порт 7002 для Python (порт по умолчанию в конфигурации), вы можете сделать следующее:
# если он уже был открыт под другой конфигурацией
cmds.commandPort(name=":7002", close=True)
# теперь откройте новый порт
cmds.commandPort(name=":7002", sourceType="python")
# или для MEL откройте какой-нибудь случайный порт (убедитесь, что вы также изменили этот порт в файле конфигураций пакета MayaSublime)
cmds.commandPort(name=":10000", sourceType="mel")

Я обычно использую стандартный порт 7001.
Перезапустите Maya, а затем запустите Sublime Text 3 и откройте сценарий. При щелчке ПКМ в области сценария вы можете воспользоваться командой Send to Maya. В Maya должен быть выполнен сценарий, если этого не произойдет, в Command Line отобразится предупреждение о том, что сценарий на выполнен и причина.

Установка и конфигурация Sublime OSL

Язык разработки шейдеров Open Shading Language создан для специалистов Look Development и визуализации. Он позволяет разрабатывать шейдеры материалов, процедурных текстурных карт, освещения и другие. Пакет Sublime OSL можно найти как в Package Control, так и на GitHub. Здесь я сделаю некоторое замечание, просто так, через Pacakge Control, пакет Subline OSL для ST3 не установить. Напрямую через Package Control он недоступен, доступна версия только для ST2. Но пройдя по ссылке на GitHub, перейдите в ветку (Brunch) с именем SublimeText3.

Выбор ветки SublimeText3 для Sublime OSL
Пройдя к ветке для ST3, просто загрузите архив ветки. Для этого в правой области списка файлов  щелкните зеленую кнопку Clone or Download и выберите Download ZIP.

Выбор функции загрузки ZIP-архива в GitHub
Загруженный архив вы можете распаковать в директорию расположения пакетов ST3, описанную выше в разделе Установка Package Control.
Когда вы распакуете архив в директорию пакетов, при запуске ST3 у вас появится ряд новых возможностей. В меню Tools => Build System будут добавлены пункты которые позволяют выполнять сборку и отладку шейдеров OSL.
Добавленные в меню Tools конфигурации для компиляции и сборки шейдеров OSL
Если по какой-то причине, приложение выдает ошибку о том, что сборка шейдера или его проверка не удались, проверьте наличие в переменной среде $PATH пути к директории с компилятором OSL. Обычно, данный путь определен к установленной вами системе визуализации.
Например путь к файлу компилятора OSL (./oslc) реализованного в 3delight, я использовал путь:
/usr/3delight-1.2.8/Linux-x86_64/bin
Также может быть задан путь для Arnold for Maya (MtoA)
/opt/solidangle/mtoa/2018/bin
Компилятор будет выполнять код написанный на языке OSL и сохранять его в файле в формате *.oso, который впоследствии будет импортирован для визуализации в Maya или любой другой редактор и систему визуализации, поддерживающую Open Shading Language.
Процесс компиляции вы можете отслеживать в консоли Sublime Text, а при отладке, сообщения об ошибках и места с ошибками в коде будут отмечены красным выделением.
Пример вывода сообщения об ошибке и информация о ходе компиляции шейдера в консоли Sublime Text 3
Применение сторонних редакторов, но напрямую использующих концепцию командных портов для связи с другими приложениями, позволяет выделить процесс написания программного кода в отдельный процесс, что существенно минимизирует привязку к конкретному приложению. Помимо этого, Sublime Text позволяет организовать проект, применить соответствующий формат файла для каждого из выбранных языков программирования и данных.
Если же Maya преждевременно останавливает свою работу и с ошибкой завершается, то Sublime Text как текстовый редактор может сохранить данные проекта и файлов и быстро их восстановить при перезапуске.

Прямые ссылки на пакеты:

Пакет MayaSublime https://packagecontrol.io/packages/MayaSublime
Пакет Sublime OSL для ST3 https://github.com/roesti77/Sublime-Open-Shading-Language/tree/SublimeText3