1. Пользоваться форумом на планшетах и телефонах стало удобнее благодаря Tapatalk

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

Тема в разделе "Maya", создана пользователем Дмитрий damat Астапкович, 19 июл 2009.

Модераторы: Dark™, Skif
  1. Дмитрий damat Астапкович

    Дмитрий damat Астапкович Знаток

    С нами с:
    12.10.2006
    Сообщения:
    246
    Симпатии:
    4
    Баллы:
    71
    Всем привет!

    После недавнего 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", но его сейчас нет :(((
     
    Karlik-nos нравится это.
  2. Skif vip

    Skif Administrator Команда форума

    С нами с:
    26.03.2004
    Сообщения:
    6.827
    Симпатии:
    417
    Баллы:
    2.787
    приветствую Дмитрий! отличный скрипт.. спасибо.. установил.. тестирую..
     
  3. mazzza

    mazzza Знаток

    С нами с:
    08.02.2006
    Сообщения:
    870
    Симпатии:
    10
    Баллы:
    23
    привет, damat!
    skif! где же кнопка спасибо?
    Спасибо, damat!
     
  4. Jozz

    Jozz Пользователь сайта

    С нами с:
    08.03.2007
    Сообщения:
    3
    Симпатии:
    0
    Баллы:
    2
    спасибо за скрипт, потестю, выкладывай еще. Жаль небыл на последнем евенте. по отзывам неплохо получилось.
     
  5. Jozz

    Jozz Пользователь сайта

    С нами с:
    08.03.2007
    Сообщения:
    3
    Симпатии:
    0
    Баллы:
    2
    сразу потестил. в моей практике полезно расстояние между точками и длина кривых. все остальное удалил но и за это спасибо большое :)
     
  6. Дмитрий damat Астапкович

    Дмитрий damat Астапкович Знаток

    С нами с:
    12.10.2006
    Сообщения:
    246
    Симпатии:
    4
    Баллы:
    71
    Всем привет!

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

    Сегодня я хочу показать вам несколько очень простых и коротких скриптов. Попробую сыграть на контрасте, так сказать. Основная цель – показать всем, насколько быстро и понятно можно улучшать процесс работы в 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 объекта, в которой можно ввести значения перемещения, поворота, скалирования и некоторые другие параметры:

    [​IMG]

    После появления ноды у вас автоматически появляется возможность анимировать ее каналы, причем данная анимация будет влиять только на выделенные 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 и скрипты, постараюсь вам помочь.
     
  7. Nevajno

    Nevajno Активный участник

    С нами с:
    09.10.2005
    Сообщения:
    173
    Симпатии:
    4
    Баллы:
    13
    Спасибо! Ждем продолжения....
     
  8. Дмитрий damat Астапкович

    Дмитрий damat Астапкович Знаток

    С нами с:
    12.10.2006
    Сообщения:
    246
    Симпатии:
    4
    Баллы:
    71
    Nevajno, есть ли какие-либо пожелания по поводу продолжений? В это воскресенье планировал написать про работу с камерой, но все обсуждаемо.
     
  9. Nevajno

    Nevajno Активный участник

    С нами с:
    09.10.2005
    Сообщения:
    173
    Симпатии:
    4
    Баллы:
    13
    К сожалению, я не присутствовал на CG Эвенте, и в частности на Вашем семинаре (о чем очень сожалею). Я думал, вы будете выкладывать все по порядку, как на Вашем мастер-классе...
    Лично для меня - все интересно и важно, если там есть способ или скрипт укоряющий рутинную работу или просто более удобный способ реализации :)
    Так что, если про работу с камерой делаете, продолжайте... Интересно и это... ;)
     
  10. Дмитрий damat Астапкович

    Дмитрий damat Астапкович Знаток

    С нами с:
    12.10.2006
    Сообщения:
    246
    Симпатии:
    4
    Баллы:
    71
    Nevajno, все по порядку будет на dvd, который. я надеюсь, скоро появится в продаже =)

    Кстати, про камеры на мастерклассе было.
     
  11. Jozz

    Jozz Пользователь сайта

    С нами с:
    08.03.2007
    Сообщения:
    3
    Симпатии:
    0
    Баллы:
    2
    еще раз спасибо, про UV пошло в работу.... как говорится, автор пиши..
     
  12. Дмитрий damat Астапкович

    Дмитрий damat Астапкович Знаток

    С нами с:
    12.10.2006
    Сообщения:
    246
    Симпатии:
    4
    Баллы:
    71
    Jozz, рад, что помог. Нажми на кнопочку, если не лень - статистика
     
    nemezis124krs нравится это.
  13. Vfrcbv

    Vfrcbv Пользователь сайта

    С нами с:
    29.07.2006
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    2
    Все отлично, а когда же мы увидим Marking Menu???
     
  14. Dark™ vip

    Dark™ Administrator Команда форума

    С нами с:
    28.10.2001
    Сообщения:
    3.110
    Симпатии:
    217
    Баллы:
    1.520
    По Xumi готовится материал, терпение
     
  15. Дмитрий damat Астапкович

    Дмитрий damat Астапкович Знаток

    С нами с:
    12.10.2006
    Сообщения:
    246
    Симпатии:
    4
    Баллы:
    71
    Всем привет!

    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 с другой стороны сам учусь писать просто и красиво на этих полезных примерах. Надеюсь на понимание.
     
    nemezis124krs нравится это.
  16. Slavenin

    Slavenin Активный участник

    С нами с:
    22.06.2008
    Сообщения:
    264
    Симпатии:
    0
    Баллы:
    16
    хм.., почему-то, не получается сказать "Спасибо", есть только одно небольшое пожелание, если не сложно делать небольшие комменты в скриптах у переменных и функций, типа эта функция отвечает за то-то, в переменной хранится такая-то информация :)
     
  17. Slavenin

    Slavenin Активный участник

    С нами с:
    22.06.2008
    Сообщения:
    264
    Симпатии:
    0
    Баллы:
    16
    да и вот еще что, у меня после загрузки камерно скрипта напрочь перестает работать выделение, то есть при зажимании левой кнопки мыши всегда открывается менюшка с выбором камер, версия майки 2009 sp1, может это только у меня такой глюк? о_О
     
  18. Дмитрий damat Астапкович

    Дмитрий damat Астапкович Знаток

    С нами с:
    12.10.2006
    Сообщения:
    246
    Симпатии:
    4
    Баллы:
    71
    Slavenin, ты не забыл назначить viewsRelease на сочетание кнопка+release? Только сейчас понял, что не совсем понятно написал в самой статье.
     
  19. Slavenin

    Slavenin Активный участник

    С нами с:
    22.06.2008
    Сообщения:
    264
    Симпатии:
    0
    Баллы:
    16
    назначил, результат тот же что и при простом запуске скрипта, может я чего-то неправильно делаю? открыл хоткейэдитор, скопировал туда, команду "views();" поставил переключатель на relase назначил кнопку, при активации, появляется менюшка выбора камер и все, выделение больше не работает... всегда при нажатии на кнопку открывается менюшка выбора камер.
     
  20. Дмитрий damat Астапкович

    Дмитрий damat Астапкович Знаток

    С нами с:
    12.10.2006
    Сообщения:
    246
    Симпатии:
    4
    Баллы:
    71
    звезда в шоке, что еще сказать =)

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

Поделиться этой страницей