Render.ru

Ускоряя Maya, послесловие. Скрипты для ускорения работы в Maya.

#1
Всем привет!

После недавнего CG Эвента, на котором я читал мастеркласс «Ускоряя Maya», со мной связался администратор этого форума Dark™ с предложением выложить тут свои скрипты. Предложение это я принял, потому что рад возможности поделиться с вами своими наработками и с удовольствием ответить на вопросы, которые неизбежно возникают, когда художники начинают задумываться о скорости работы в Maya.

Еще интересно? Тогда немного о себе:

  • шестой год в игровой индустрии, специализируюсь на 3d, преимущественно в Maya
  • долгий опыт работы в Creat Studio, в которой прошел путь от новичка-моделера до 3d эксперта. Отличная школа и участие во многих консольных и PC проектах
  • с сентября 2008 года работаю в Nival Network ведущим 3d-художником

Еще читаете? Тогда перейдем к сути: как показывает практика, выкладывание большого количества скриптов в виде законченного пака обычно приводит к тому, что его мало кто решается попробовать: переучиваться всему и сразу долго, да и незачем. Поэтому я хочу попробовать выкладывать скрипты по одному или по два с максимально понятными описаниями. Периодичность обновлений будет зависеть от вашей активности, моей загрузки на работе и количества скриптов – их число конечно и не столь велико. Посмотрим, что из этого получится.

Сегодняшний дебют будет посвящен скрипту natHUD.mel, который был показан на мастерклассе. Он добавляет в майский HUD следующие возможности:

  • вывод информации о выделении, которая помогает понять, в каком порядке было сделано выделение и сколько объектов всего выделено
  • универсальный измеритель расстояний: работает на ребрах, вертексах и кривых, а так же умеет показывать угол нормали в мировых координатах
  • вывод информации о проектном пути
  • вывод информации об относительном пути до сцены

Данный скрипт интегрирован в Maya – после запуска вы найдете в меню Display->Heads Up Display четыре новых пункта. Гарантированно работает в Maya 2008, 2009. Прочитать историю создания скрипта: тут.

Небольшое видео (без звука):


Установка стандартная: скопируйте скрипт в папку \maya\Номер версии\scripts\ и перезапустите Maya.

Запуск тоже простой: наберите natHUD в Script Editor и запустите скрипт. Если хотите, чтобы это скрипт запускался с Maya по умолчанию, найдите в той же папке файл userSetup.mel и добавьте туда строку natHUD;

PS nat в начале имени скрипта – это аббревиатура Nival Artist Tool. Так я помечаю скрипты, которые входят в «официальную» сборку Nival Network. Этакий показатель качества и указание на то, что скрипт был написан уже в Нивале

Обновление сообщения автором
31.08.2011 в 14:16
попробовал поставить данные скрипты и есть некоторые вопросы
1. у меня изменилась менюха при нажатии на объекте правой кнопкой. Как вернуть обратно вид данной менюхи? раньше я в данной менюхи очень удобно назначал объектам разные, сущ. материалы, а сейчас ентого пункта нет :(

2. имеет место какой-то глюк. при работе с объектом, в какой-то момент я не могу переместить объект, простым нажатием "W". Объект находится в каком-то универсальном режиме редактирования ребер и вертиксов и весь объект полностью можно выделить только через аутлайнер. раньше по нажатию RMB был пункт "Object", но его сейчас нет :(((
 

Skif

Администратор 3D галереи
Команда форума
Рейтинг
1 544
#2
приветствую Дмитрий! отличный скрипт.. спасибо.. установил.. тестирую..
 

Jozz

Пользователь сайта
Рейтинг
2
#4
спасибо за скрипт, потестю, выкладывай еще. Жаль небыл на последнем евенте. по отзывам неплохо получилось.
 

Jozz

Пользователь сайта
Рейтинг
2
#5
сразу потестил. в моей практике полезно расстояние между точками и длина кривых. все остальное удалил но и за это спасибо большое :)
 
#6
Всем привет!

Большое спасибо за благодарности. Они есть, а это значит, что есть смысл продолжать данную тему.

Сегодня я хочу показать вам несколько очень простых и коротких скриптов. Попробую сыграть на контрасте, так сказать. Основная цель – показать всем, насколько быстро и понятно можно улучшать процесс работы в Maya, особо не вдаваясь в сложности программирования и скриптования.

Итак, первый мини-скрипт: Deselect.
Зачем нужен: быстро снимает как highlight (зеленое выделение), так и hilite (синее выделение). Актуален при моделировании, когда хочется быстро посмотреть на результат подвижки вертексов и т.д. без синей сетки, которая сильно сбивает с толку.
Как написать: подумать, что вы делаете, чтобы добиться результата, а именно – переходите в объектный режим (f8), после чего пытаетесь выделить ничто. Еще вариант: выделить что-то, что не бывает в режиме компонентов, например, камеру, и выделить ничто. Проделав второй трюк, можно посмотреть, что напишет Script Editor, а напишет он примерно следующее:

select top;
select –cl;

В данном случае я выбрал камеру top – ортографическая камера, которая всегда есть в любой сцене. Вторая команда – это выделение ничто. Если почитать хелп, то можно узнать, что флаг –cl – это сокращение от –clear.
Полученный скрипт можно легко назначить на сочетание кнопок, у меня живет на alt+d


Второй скрипт: перемещение uv по тайлам.
Зачем нужен: всегда приятно видеть все uv shell собранными в одном тайле. Так принято сдавать работу, так понятнее разбираться, что и где. Но так реально неудобно править мапинг, потому что постоянно выделяешь что-то лишнее.
Решение: сдвигать нужный shell на целое количество тайлов, чтобы пиксели были те же, но соседних шеллов рядом уже не было.
Как написать: создать полигональный объект и подвигать у него uv. Script Editor напишет что-то вроде:

polyEditUV -u 0.0563565 -v 0.219494 ;

Несложно догадаться, что если подвинуть на 1 по u, и не двигать по v, то переместимся ровно на один тайл по горизонтали вправо. Аналогичным образом можно научиться двигать uv влево, верх и вниз на один тайл, команды будут выглядеть так:

polyEditUV -u -1.0 -v 0; // влево
polyEditUV -u 1.0 -v 0; // вправо
polyEditUV -u 0 -v 1; // вверх
polyEditUV -u -1.0 -v -1; // вниз

Данные команды живут у меня на ctrl+стрелки.

В Maya есть еще один способ двигать uv: команда polyMoveUV. Отличие ее от предыдущей команды заключается в том, что она создает ноду в Input объекта, в которой можно ввести значения перемещения, поворота, скалирования и некоторые другие параметры:



После появления ноды у вас автоматически появляется возможность анимировать ее каналы, причем данная анимация будет влиять только на выделенные uv.
Итак, сама команда:

polyMoveUV -tu 0.0 -tv -0.0;

Нули стоят неслучайно – мне нужна только нода, в которую можно вбить параметры. Данная команда у меня живет на alt+стрелки.


Заключительная часть сегодняшнего поста: форсированное создание новой сцены и закрытие Maya.
Зачем нужно: не знаю, как вас, а меня всегда сильно раздражает вопрос о сохранении сцены, если я нажал ctrl+n или ctrl+q. Особенно раздражает то, что сцена была только что сохранена, о чем есть соответствующая надпись в Script Editor: // Result: C:/Temp/_.mb
Как написать: тут есть небольшая хитрость. Если выбрать в основном меню File->New scene, то нас ни о чем спрашивать не будут, такая вот майская странность. Если же посмотреть в Script Editor, то там будет написано:

file -f -new;

Если посмотреть в хелпе, что означает сокращение –f, то мы выясним следующее:
-force (-f)
Force an action to take place. (new, open, save)

Force в данном случае означает, что пользователя ни о чем спрашивать не будут, чего, собственно, и хотелось добиться. Полученный скрипт в одну строчку можно смело назначать на сочетание ctrl+n.

C закрытием Maya все несколько сложнее: после выхода посмотреть в Script Editor нельзя, да и не пишется туда команда про закрытие. Тем, кто хочет проверить последнее удтверждение, могу посоветовать после запуска Maya выполнить команду:

scriptEditorInfo -ch -clearHistoryFile -historyFilename "c:\\temp\\mayaScriptEditorLog.txt" -writeHistory true;

После выполнения можно потыкать в несколько любых кнопочек и идти смотреть на файл, путь до которого указан в команде. Данная команда живет у меня в userSetup.mel и иногда помогает понять, отчего все упало. Для совсем любопытных будет нелишним ознакомиться со всеми флагами данной команды.

Но вернемся к выходу: есть Maya команда quit, у которой тоже есть флаг –force, поэтому команда для назначение на ctrl+q выглядит так:

quit –force


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

Nevajno

Знаток
Рейтинг
26
#9
К сожалению, я не присутствовал на CG Эвенте, и в частности на Вашем семинаре (о чем очень сожалею). Я думал, вы будете выкладывать все по порядку, как на Вашем мастер-классе...
Лично для меня - все интересно и важно, если там есть способ или скрипт укоряющий рутинную работу или просто более удобный способ реализации :)
Так что, если про работу с камерой делаете, продолжайте... Интересно и это... ;)
 

Jozz

Пользователь сайта
Рейтинг
2
#11
еще раз спасибо, про UV пошло в работу.... как говорится, автор пиши..
 
#15
Всем привет!

Cегодняшний пост будет посвящен работе с камерой. Начну с небольшого лирического вступления, которое погрузит вас в данный вопрос.

Если спросить любого майщика, что он чаще всего делает в Maya, то он назовет любую операцию, кроме вращения камеры и перехода в разные виды. Это очень странно, потому что сразу после открытия сцены мы начинаем ее изучать, летая повсюду и переключаясь между разными камерами. У майских моделеров со временем вырабатывается отличное и очень круто выглядящее движение: быстрый удар по пробелу, молниеносный перевод мышки на панель с другой камерой и совсем уже неуловимый по скорости повторный удар по пробелу. Выглядит завораживающее и, пожалуй, даже более стильно, чем метание правой руки с мышки на кнопки f8-f12, которое заслуживает отдельного небольшого рассказа.

Но давайте на время отвлечемся и задумаемся: что на самом деле хочет сделать юзер, когда меняет перспективную камеру на ортографическую и наоборот? Вы не поверите, но он хочет увидеть в текущем viewport все ту же модель, только с другой камеры, например, для выравнивания или сравнения с референсом. При этом он хочет это сделать максимально быстро и просто. Что же ему мешает в этом мешает?

1. ортографических камер всего три, а видов реально шесть: (лево/право, вверх/низ, фронт/бэк). Это автоматически означает, что использовать быстрое и отточенное комбо «пробел-мышка-пробел» не всегда возможно – надо переключатся либо в дополнительные камеры, либо пользоваться View Cube и View Compass, что автоматически означает дополнительное движение мышкой через весь экран, и не совсем реальную смену камеры. Можно отдельно поговорить про View Cube и View Compass и сравнить степени их недодуманности и недоделанности, но это уже совсем лирика, которая мало кому интересна.

2. ортографические камеры стоят где-то в бесконечности, из которой они видят всю геометрию сцены. Поэтому нередко для работы приходится прятать другие объекты, а потом показывать их назад. Т.е. опять возникают лишние движения

3. переход в дополнительные камеры возможен только через меню панели, причем камеры зачем-то разделены на два разных пункта: ортографические и перспективные.

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


Основная идея скрипта Views и большая часть кода принадлежит Денисычу 0-1. Видео демонстрирует измененную и дополненную в результате совместной работы версии. Сам скрипт состоит из двух глобальных частей:

1. переход из перспективной камеры в ортографические и назад по нажатию одной кнопки
2.построение умного меню с полезными функциями при удержании этой же кнопки

Поскольку функций две, то используется два хоткея: у меня это `(тильда) press и ` (тильда) release. По этой же причине возникает необходимость добавить строчку source "views.mel"; в файл userSetup.mel, если вы хотите, чтобы этот скрипт работал сразу после запуска Maya

Приятные особенности, которых не было в видео, или они не очевидны:

- пользователю предлагается либо разлочить, либо залочить камеру, т.е. пункт всегда один в зависимости от состояний каналов

- дефолтные камеры лочить через меню нельзя – соответствующая проверка делает вызов этой команды невозможным

- если дефолтная камера залочена (например, вашим коллегой), но вы хотите в нее перейти, скрипт предложит сдеалать unlock & switch, т.е. разлочить и перейти в нужную вам камеру

- после перехода в перспективный вид, ортографическая камера выставляется в положение по умолчанию, чтобы сцена оставалась в привычном для всех состоянии

PS Для жаждущих Xumi - основная проблема заключается в создании описания, которое будет достаточным и относительно простым. Его нельзя сразу вылить в массы, так как массы не поймут: мне потребовался не один месяц, чтобы разобраться в деталях. Поэтому я с одной стороны готовлю вас к восприятию Xumi, a с другой стороны сам учусь писать просто и красиво на этих полезных примерах. Надеюсь на понимание.
 

Slavenin

Активный участник
Рейтинг
12
#16
хм.., почему-то, не получается сказать "Спасибо", есть только одно небольшое пожелание, если не сложно делать небольшие комменты в скриптах у переменных и функций, типа эта функция отвечает за то-то, в переменной хранится такая-то информация :)
 

Slavenin

Активный участник
Рейтинг
12
#17
да и вот еще что, у меня после загрузки камерно скрипта напрочь перестает работать выделение, то есть при зажимании левой кнопки мыши всегда открывается менюшка с выбором камер, версия майки 2009 sp1, может это только у меня такой глюк? о_О
 

Slavenin

Активный участник
Рейтинг
12
#19
назначил, результат тот же что и при простом запуске скрипта, может я чего-то неправильно делаю? открыл хоткейэдитор, скопировал туда, команду "views();" поставил переключатель на relase назначил кнопку, при активации, появляется менюшка выбора камер и все, выделение больше не работает... всегда при нажатии на кнопку открывается менюшка выбора камер.
 
#20
звезда в шоке, что еще сказать =)

буду завтра тестировать в 2009, уточняю в последний раз: на кнопка Press висит команда views, на та же кнопка release висит команда viewsRelease?
 
Сверху