Render.ru

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

DRL,

2. как вариант, можно начать либо с книги "Понимая Maya" Сергея Цыпцина, либо с Sybex.Maya.Professional.Tips.and.Techniques. Второй вариант попроще, но на английском и надо бы диск еще. Можно найти сами-знаете-где, как оказалась у меня, уже не вспомню. В качестве примера привел потому, что наткнулся на нее у себя на винте буквально только что

про скрипт для открытия: перевыложил сюда http://dl.dropbox.com/u/4270675/OpenFileAndSetProject.mel

про оффтоп: да, больше мусора быть не должно.
 

Лекс Дарлог (DRL)

Активный участник
Рейтинг
14
За скриптик да и вообще спасибо.
Сейчас у меня тут всё ещё запарка. Отпишусь уже когда освобожусь более-менее и сяду разбираться (это про остальное).
 

Лекс Дарлог (DRL)

Активный участник
Рейтинг
14
Ещё по xumi. Один баг и... нечто среднее между багом и фича-реквестом.
1. Баг.
Как мы привыкли работать с маркинг меню? Зажимаем клавишу (пробел, например) и жмём мышь. Если после нажатия сообразили, что нажали не там или не той кнопкой, то, по-прежнему удерживая клавишу, отпускаем кнопку мыши и щёлкаем в другом месте/другой кнопкой.
А у xumi после отпускания кнопки мыши нажатие клавиши как бы сбрасывается. Скажем, если зажал я S+LMB, то после отпускания LMB майка ведёт себя так, словно S не нажата. Хотя я S держу. Поэтому приходится совершать бессмысленные "прерывания": после каждого отпускания LMB/MMB отпускать клавишу (Q/A/S/D) и тут же нажимать снова. Мелочь, но мешает.

2.
После установки xumi клавиши "Q"-release, "A"-release и "S"-release (которые обычно используются для select tool, frame all и set key), переназначаются xumi-шным процедуркам. А лично мне без них как без рук. Причём если без Q ещё можно прожить, без A в панелях моделирования ещё хоть как-то можно выкрутиться через Shift+a, то в остальных панелях (UV Tex Ed, Hyper*, Graph, Trax, Dope Sheet) вообще невозможно работать, т.к. Shift+a - не пашет. Не говоря уж про S.
Предлагаю добавить в эти процедурки ещё 1 условие: при отпускании клавиши (Q/A/S/D), если не было вызвано маркинг-меню, то используется дефолтное поведение (Select Tool, Frame All и т.п.).

P.S.: сорри за привиредство, просто лично мне реально неудобно. Minor/Major - решай сам. :)
 

Лекс Дарлог (DRL)

Активный участник
Рейтинг
14
Выдалось свободное время - сделал скрипт, добавляющий служебные сферки в качестве шейпов к выделенным объектам.
Оказалось, всё очень просто:
Код:
string $sel [ ] = `ls -sl`;
$res = "Spheres created for:";
for ($obj in $sel)
{
createNode renderSphere -n ($obj + "_Sphere") -p $obj;
	setAttr -k off ".v";
	setAttr ".rt" 1;
	setAttr ".csh" no;
	setAttr ".rcsh" no;
	setAttr ".vis" no;
	setAttr -k on ".rd";
$res = $res + " " + $obj;
}
print $res;
Maya 2008 x32
 
1. про Select Tool - он остается работать на q, понажимай внимательно.

2. про A и S: можно попробовать обойти скриптами, но получив Xumi на всего 4-х кнопках, я перенес их функции на другие кнопки.

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

Лекс Дарлог (DRL)

Активный участник
Рейтинг
14
1. Видать, чё-то у меня глючит.
2. В принципе, тоже об этом думал. Но, как ты правильно заметил, удобных кнопок мало.
3. Будем ждать, как вернёшься/освободишься. Я может к тому времени уже с window разберусь.
 

Лекс Дарлог (DRL)

Активный участник
Рейтинг
14
Хоть damat и в отпуске, я буду по ходу постить новые сообщения, чтоб не забыть. Итак,
Фидбэк по результатам обкатки скриптов "OpenFileAndSetProject" и "natHUD" в полевых условиях.
Maya 2008, Win XP x32 сильно разогнанная (очень многие службы/компоненты вырублены).
Оба скрипта работают прекрасно, ни одной ошибки за полторы недели тестирования не возникло. Проверялось на лёгких сценах и сценах средней тяжести (>3 000 объектов / 100 000 полигонов). Однако есть парочка небольших несовершенств.

OpenFileAndSetProject
По-видимому, скрипт не учитывает настройки открытия сцен (Open Scene > OptionBox). В частности, не работает галка Selective Preload (для тяжёлых референсов/проксей это критично) и не сохраняется последняя рабочая папка (каждый раз открывает корень диска C).

natHUD
После использования Save As в "Scene Path" по-прежнему отображается название старого файла (хотя по факту файл уже другой). Иногда через некоторое время обновляется, так и не понял почему.

Есть вероятность, что это глюки конкретно моей оси / моего железа. Желательно подтверждение других юзеров под XP x32 / Maya 2008.
 
отпуск закончился, КРИ прошла, я вернулся.

1. OpenFileAndSetProject - да, есть такой баг. Могу сказать, что сейчас на проекте мы перешли на систему script job'ов, которые срабатывают после открытия сцены дефолтными средствами. Работает очень стабильно, но вырвать из пайплайна непросто. Если прижился тул, дай знать, попробуем "отчудить", так сказать

2. natHUD - вряд ли можно пофиксить, так как он срабатывает по стандартным майским эвентам.
 

Лекс Дарлог (DRL)

Активный участник
Рейтинг
14
Тул OpenFileAndSetProject прижился, очень даже. Пофиксеный вариант хотелось бы, но не критично. Пока что спасают выпадающие списки "Current *" в диалоге открытия. Неудобно, но жить можно.

С window - сорри - еще даже не садился разбираться (был занят). Но непременно возьмусь, как возможность подвернётся.

P.S.: на днях из-за бага при закрытии слетели настройки. Бэкап делал давно, так что пришлось искать ошибки вручную через сравнение тоталом. Полдня убил на восстановление.
Так что бэкапим, господа, бэкапим!
 
Про бэкапы и Total Commander:

После мастеркласса "Тотальное ускорение" на минувшем CG Event мне написал некто sanctus с форума CG Talk. Он тоже использует Maya + Тотал в повседневной жизни и поделился вот таким хинтом:

батник "а ля CGRU", который повесил в тулбар, он выставляет рабочие директории мая относительно тоталовских переменных пред её запуском, и папку с настройками я поселил внутрь тотала, чтобы действительно майка стала переносной, со всеми любимыми скриптиками и настройками, разумеется в случае, когда она уже предустановлена на машинке.
Код:
set MAYA_APP_DIR=%COMMANDER_PATH%\MyMaya

set MY_TOOL_DIR=%MAYA_APP_DIR%\MyTools

set MAYA_SCRIPT_PATH=%MY_TOOL_DIR%\mel\AETemplates;%MY_TOOL_DIR%\mel;%MAYA_SCRIPT_PATH%
set MAYA_PLUG_IN_PATH=%MY_TOOL_DIR%\mll;%MAYA_PLUG_IN_PATH%
set XBMLANGPATH=%MY_TOOL_DIR%\icons
set MAYA_LOCATION=C:\Program Files\Autodesk\Maya2009

start maya.exe
После этого я нашел сервис Dropbox (https://www.dropbox.com/referrals/NTQyNzA2NzU5), который позволяет в фоне синхронизировать несколько компьютеров между собой и имеет встроенную систему версионирования файлов. Моя сборка тотала живет теперь в Dropbox, больше о проблемах с синхронизацией я не думаю.
 
открытие файла с установкой проекта, обновленный вариант: http://dl.dropbox.com/u/4270675/natAutoSetProjectByOpenedScene.mel
работает как script job после запуска одноименной процедуры natAutoSetProjectByOpenedScene
пробуем, тестируем, благодарим Дениса 0-1 за оперативность
 

Лекс Дарлог (DRL)

Активный участник
Рейтинг
14
Спасибо за обновление. Как и положено, фидбэк. Maya 2008 x32, WinXP sp3.
  • Первое, что бросается в глаза - при использовании natAutoSetProjectByOpenedScene в natHUD отображается старый путь для первой открытой сцены другого проекта. Если создать новую сцену или открыть другую в том же проекте - тогда отображается новый путь. Хотя собственно назначение нового проекта происходит в 1 раз (проверял через File > Project > Edit Current и импортом новой текстуры из SourceImages - пути выставляются какие надо).
  • При открытии сцены Майка почему-то стала сохранять все настройки. имхо странное поведение. Плюс к тому из-за сохранения префов сообщение о текущем проекте оказывается в скрипт эдиторе не последним, в строке результата не выводится, и глазами находится с большим напрягом.
  • Кроме того теперь в скрипт едиторе вылазит странный эррор "Invalid flag: -preserveSeam".
Лог из скрипт едитора
 

Лекс Дарлог (DRL)

Активный участник
Рейтинг
14
Второй и третий баги пропали, подтверждаю.

Новый natHUD я не смог запустить, т.к. сорц и "natHUD" не работают, а в самом скрипте многовато процедур. Угробить настройки, вызвав не ту - не хотелось бы.
Чем его запускать?
 

Лекс Дарлог (DRL)

Активный участник
Рейтинг
14
Протестил. Всё прекрасно работает.
Отдельное спасибо за добавленное отображение времени открытия сценки.
Единственное, что могу предложить на усовершенствование - вернуть в меню Display > HUD пункты для поштучного отключения элементов HUD'а. Но это совсем минорно, чисто из соображений юзер-френдли.
Сам скрипт функционирует безупречно.
 
Рад, что все хорошо. Про меню знаю, его пришлось принести в жертву стройности проектного инструментария: эти пункты сейчас заведены немного по-другому в общее проектное меню.

Если все же потребуется удалять отдельные элементы, для этого есть вот такие команды:
Код:
	headsUpDisplay -rem natHUDprojectName;

	headsUpDisplay -rem natHUDsceneName;

	headsUpDisplay -rem natHUDselection;

	headsUpDisplay -rem natHUDdistance;
 

Лекс Дарлог (DRL)

Активный участник
Рейтинг
14
Выявился весьма странный баг при включённом в автозапуск natHUD.
Если нажать на кнопку "Animation Preferences" (та, что с самого права в строке Range Slider) - то вылазит:
Код:
// Error: The following Heads Up Display object does not exist: HUDViewAxis //
Если после этого нажать на кнопку повторно, то окно сеттингс всё-таки откроется, но после нажатия на кнопку Close:
  • Оно не закрывается
  • Вырубается отображение сетки во вьюпорте (Grid).
  • Вырубаются все элементы UI, как при нажатии Ctrl+Пробел, а потом Shift+m и Ctrl+m.
Самое непонятное - так это то, что если убрать из файла userSetup.mel стоки:
Код:
source "natHUD.mel";
natHUDenableAll;
и после запуска вручную скормить их скрипт эдитору - то всё работает как надо.
 
Суть проблемы: userSetup.mel обрабатывается до того, как создаются HUD элементы в файле initAfter.mel.

Как порешать: либо запускать вручную после запуска Maya, либо запустить в userSetup через специальную команду evalDeferred, которая откладывает выполнение команды до ближайшего idle системы. Т.е. в userSetup.mel надо написать так:

Код:
evalDeferred "natHUDenableAll"
 

Лекс Дарлог (DRL)

Активный участник
Рейтинг
14
evalDeferred решил проблему.
имхо, имеет смысл в самое начало скрипта добавить коммент о том, как его установить и использовать.
 
Сверху