Render.ru

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

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

Активный участник
Рейтинг
14
Меня терзают смутные сомнения, что проблемный drInit.mel сорсится именно что самим плагином при старте. А находит он папку, в которой должен быть этот drInit.mel - по записи в реестре.
Т.е., всё. Занавес.

А по поводу лицензии - в папке с НЕКСом есть подпапка licenses. Так что это как раз не проблема в данном конкретном случае. Не была бы, если б все эти пути плаг задавал по-человечески: файлами модулей, env-var'ами или на худой конец параметром в майском userPrefs.
 

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

Активный участник
Рейтинг
14
VFXi поднялся, так что предлагаю обсуждение темы про файлы префов и иже с ними перенести туда. Во всяком случае, до следующего падения (если таковое будет).

А тут хотелось бы развить тему предложенного мной MEL-потомка ксуми. Интересно узнать, кто что считает по этому поводу. Особенно, сам Дмитрий - как человек, разбиравшийся в потрохах ксуми.
 

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

Активный участник
Рейтинг
14
Можно сделать по-всякому.
Но такой мел-аналог, каким его вижу я, предположительно будет работать быстрее и стабильнее, чем ксуми. Потому что не нужно подгружать иконки и использовать сторонний (довольно бажный) плагин.
А ещё мне думается реализовать механизм кэширования менюшек в оперативу - тогда он будет работать даже быстрее, чем майские встроенные ММ. Потому что читать файлы с диска не надо будет вообще.

Но я пока эту свою инициативу отложил, т.к. единомышленников не обнаружилось, а для себя писать в данный момент не вижу смысла: серьёзно подумываю пересесть на Гудини. Отпишусь на эту тему уже после ЦГивента.
 
Рейтинг
137
О, я вот недавно тоже о Гудини стал много думать. Сразу же выкачал все туторы с рутрекера и (к моему удивлению) всего 2 стареньких (но наверняка все еще полезных) книжки. Думаю начать с литературы. Пятая точка мне подсказывает, что Майя+Гудини+Nuke в личном пайплайне - это хорошо как для души, так и для тела. :)
 

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

Активный участник
Рейтинг
14
Что угодно + Nuke - это всегда хорошо. Особенно если это "что угодно" рендерится нормальным рендером вроде RenderMan'а.
Ну да оффтоп это.
 
DRL прошу прощения что так долго не отвечал. В один из дней, велась достаточно бурная переписка. Быстренько просматривал, понял что речь идет о преференсах (меня это в данный момент мало волнует), и не заметил сообщения 393, 394.

Объединение усилий для написания аналога Xumi
Толку с меня не будет, я в MELе полнейший дундук. Развиваться в этом направлении планирую не раньше лета 2012. Возможно сам факт определение даты выглядит странно, но я придерживаюсь некого плана.
Решивши перейти с Макса на Майю я сразу понял, что хоткеи жутко неудобные и их нужно будет переделывать под себя (в максе у меня тоже все перелопачено и реализованы интерективные кнопки). Поэтому первый месяц просматривал видеоуроки и пользовался только иконками инструментов и верхним меню (что бы понять что, куда, где, и не привыкать к стандартным клавишам). После чего немного базового Мела и вопросом на форуме. Сварганил код , который не соответствует ни каким стандартам. Сам понимаю что он у меня жутко не корректный и корявый. Но в принципе, работает. В сообщении 390, я дал его основную часть (выполнения разных действий, в разных панелях (окнах)). На самом деле у меня реализована на семи кнопках возможность совершать разные действия в зависимости от выбранного режима в левом верхнем углу экрана. На всех остальных большинство действий зависть от выбранных компонентов и типов объектов. Но выглядит это жутко.

Кнопка Alt_X_Release

Код:
Pivot_Release;
global float $startTimer;
if (`timerX -startTime $startTimer` < 0.5)
{
//modelPane
string $currentPanel = `getPanel -withFocus`; 
string $panelType = `getPanel -typeOf $currentPanel`; 
if ($panelType == "modelPanel") 
{
// Modeking_Menu_Set
if ((`setMenuMode` == "polygonsMenuSet") || (`setMenuMode` == "surfacesMenuSet") == true)
{
// Poly
// Obj_Mode
if (size(`filterExpand -sm 12`) > 0) 
;
// Vertex, Edge, Face
if (size(`filterExpand -sm 31 -sm 32 -sm 34`) > 0) 
dR_DoCmd("bevelPress");
// UVs
if (size(`filterExpand -sm 35`) > 0) 
;
// Nurbs Surfaces
// Obj_Mode
if (size(`filterExpand -sm 10`) > 0) 
RoundTool; 
// Curves On Surface
if (size(`filterExpand -sm 11`) > 0)
; 
// Surface Points
if (size(`filterExpand -sm 41`) > 0)
; 
// Trim Surface Edge
if (size(`filterExpand -sm 44`) > 0)
; 
// Isoparms
if (size(`filterExpand -sm 45`) > 0) 
RoundTool; 
// Patch
if (size(`filterExpand -sm 72`) > 0)
; 
// Nurbs Curves
// Obj_Mode
if (size(`filterExpand -sm 9`) > 0) 
;
// Control Vertices
if (size(`filterExpand -sm 28`) > 0) 
; 
// Edit Points
if (size(`filterExpand -sm 30`) > 0) 
; 
// Curve Points
if (size(`filterExpand -sm 39`) > 0) 
; 
// Subdivision Surface
// Obj_Mode
if (size(`filterExpand -sm 68`) > 0) 
;
// Mesh Vertex
if (size(`filterExpand -sm 36`) > 0) 
; 
// Mesh Edges
if (size(`filterExpand -sm 37`) > 0) 
; 
// Mesh Faces
if (size(`filterExpand -sm 38`) > 0) 
;
// UVs
if (size(`filterExpand -sm 73`) > 0) 
; 
}
// Animation_Menu_Set
if (`setMenuMode` == "animationMenuSet")
{ 
playButtonStepBackward;
} 
}
//HyperShade
if (`getPanel -wf` == "hyperShadePanel1") 
{ 
}
//UV Texture Editor
if (`getPanel -wf` == "polyTexturePlacementPanel1") 
{ 
}
}
У меня не то что в глобальной переменной $StartTimer буковка g не добавлена, у меня эта одна переменная указывается во всех кодах. Как я уже писал, полнейший бардак, но в принципе, не учитывая маленьких ограничений, работает.
Продумал и настроил кнопки для моделирования, отображения объектов и т.д. Сейчас по плану материалы, свет, рендер (я все это знаю но на плотном базовом уровне). Когда я смогу создавать более менее качественные статические работы (которые не стыдно будет показывать людям), вот тогда возьмусь за глубинное понимание Мела. После этого, анимация, система частиц и т.д.

По поводу реализации (маркинг-менюха при нажатии, иначе выполнить команду) без timerX'а (сообщение 393)
Очень интересно, а главное, корректно и правильно. Я уже собирался переделывать код для хоткеев, но к своему разочарованию обнаружил, что код работает только на (чистых) кнопках. При добавлении альта и т.д., срабатывает только Release, действие source "menu_Display_viewPanel.mel"; игнорируется. Попробовал со скриптом views, там тоже самое. Так что остаюсь на своем нерадивом коде.

Необходимость вручную указывать условия для каждой менюхи в каждом окне на каждый режим работы с каждым типом объектов.
Это да. Это ЖЕСТЯК! Я этим потихоньку занимаюсь уже в течении полутора месяцев. И если вдруг окажется, что код из сообщения 393 можно использовать вместе с Альтом и т.д., придется мне некоторые кнопки переделывать. Но это уже будет не слишком сложно, так как менюхи сделаны и коды из скрипт эдитора на определенные действия получены. Нужно будет только по вставлять.
 

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

Активный участник
Рейтинг
14
Прочитал твой пост в тот же день. Сначала подумал, что отвечать нечего.
А сейчас внимательнее прочитал - есть чего:
  • В блоках //HyperShade и //UV Texture Editor лучше сравнивать с уже полученной $panelType, как я и писал выше. И в этом сравнении, имхо, лучше использовать switch-case, а не if.
  • Код:
    (`setMenuMode` == "surfacesMenuSet") == true
    == true здесь лишнее. Иначе таким же макаром можно писать (((`setMenuMode` == "surfacesMenuSet") == true) == true) == true ... и т.д.
Ну это если хочешь сейчас код подправить, а не отложить всё разбирательство до 2012 года.
А в целом - код рабочий. Не очень хорошо читаемый, но рабочий.
 

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

Активный участник
Рейтинг
14
На минувшем ивенте, в выступлении про пайплайн в связке maya => unity, упоминался очень удобный нивальский скрипт для экспорта клипов в отдельные fbx-файлы.

Дим, есть ли надежда, что ты сможешь им поделиться с общественностью, или это совсем закрытая внутристудийная разработка?
Я как раз сейчас работаю с юнити, и проблема эта актуальна. Сам сейчас экспортирую точно так же, но мой скриптик довольно простой и рассчитан на определённые сценки.
 
привет!

а чего не подошел поговорить? или я что-то пропустил? =(

со скриптом есть небольшая проблема: он завязан на работу с переменными среды, которые используются в NAT. Могу выложить в личку скрипт на самостоятельную допилку. Идет?
 

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

Активный участник
Рейтинг
14
Не подошёл - потому что убежал на мастеркласс по блендеру. Там была заявлена злободневная для меня на данный момент тема бюджетного мокапа (хотя на деле то, о чём там рассказывали, бюджетным мокапом не назовёшь).
Потом весь первый день носился с доклада на доклад. А в воскресенье тебя я вообще не видел. Не получилось вживую познакомиться, такие дела :(

Если выложишь в личку - будет замечательно! :)
 

Petro111

Активный участник
Рейтинг
7
В Maya 2012x64 поставил этот пак. Появились пара глюков. (в 2011x32 их не было).
Покопался. Делюсь опытом (вдруг кому пригодится).
1.Установив все скрипты, майя перестаёт при выходе сохранять настройки (тот же куб при каждом запуске отсутствует)
-----------вылечил тем что в userSetup.mel вырубил всё кроме строчки tumbleAroundComponents; глюк исчез.
2. Команда Scripts/material/Create plane with texture - пункт работает только в untitled-сцене (несохранённой-свежей). Стоит сцену сохранить и скрипт уже не работает: // Error: The directory "C:/Users/username/Documents/maya/projects/default/scenes/test.mb" is not valid.
Путь менять бесполезно.
----------исправил тем, что в файле filePicker.mel вырубил строчку global string $gDefaultFileBrowserDir;

P.S. Ещё раз спасибо за пак.
 
Чертовы майские разрабы!..

Покопался, нашел причину, даже не смешно стало: в скрипте, уже после того, как вычисляется, в какую камеру надо перейти, вызывается дефолтная скриптовая команда switchModelView, которую можно найти в майских скриптах по пути типа такого c:\Program Files (x86)\Autodesk\Maya2010\scripts\startup\HotboxCenterMenu.mel. Так вот в ней есть вот такой чудо кусок кода:


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