Render.ru

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

Paul_Winex

Знаток
Рейтинг
20
Приветствую всех любителей данной ветки :) У меня вопрос назрел тоже.
Имеется: окошка, написанная на PyQt. В своем состае имеет древовидный список, то есть является классом QTreeWidget.
Задача: организовать адекватный drag&drop элементов списка на майские виджеты (в Атрибут эдиторе).
Варианты:
- получить базовый виджет атрибутЭдитора, и переопределить у него функцию dropEvent. Результат не удачный. Либо совсем не сработало, либо чего то не хватает. Фитбек нулевой.
- получив виджет АЕ, добавить на него eventFilter на эвент drop. Результат так же нулевой, из-за того что Во время дропЭвента виджеты под курсором считывают дату из перетаскиваемого элемента, и при не соответствии типов отвергают эвент (типа нельзя, курсор соответственный), евент drop вообще не заводится. В общем не срабатывает.
- переопределить у моего QTreeWidget'а функцию mouseReleaseEvent и в момент отпускания мыши тупо считывать виджет под курсором, и после делать с ним что угодно. Изврат полный но работает. Тем не менее после переопределения mouseReleaseEvent процесс перетаскивания перестал работать. Хоть и релиз срабатывает, но захвата нет. Отпускается ничто.

В общем я в тупике пока. есть ли у кого идейки как такое реализовать???
 

Paul_Winex

Знаток
Рейтинг
20
Еще вариант вспомнил. Узнать какие данные принимает виджет интерфейса и сделать точно такие же данные у себя чтобы виджеты принимали их. Это можно сделать?
 
о сколько нам открытий чудных...

расскажи про первый вариант, он кажется наиболее правильным и странно, что результат совсем нулевой. Как делал?
третий отъезжает на уровне Maya, судя по всему, скорее всего нелечибельно

про переопредение своих данных - хорошая идея, надо покопаться в скриптах на тему AE: все темплейты доступны. Хотя не факт, что выковыряешь тип данных оттуда.
 

Paul_Winex

Знаток
Рейтинг
20
Из темплейтов точно не достать. Это прописано в кутишных классах. Про первый рассказываю:
Если есть PyQt то можете затестить код
сначала процедуры выцарапывания виджетов из майских в пайкутишные и вс такое:
Конвертировать майский объект в кутишный по имени

Код:
def qControl(mayaName):
	ptr = omui.MQtUtil.findControl(mayaName)
	if ptr is None:
		ptr = omui.MQtUtil.findLayout(mayaName)
	if ptr is None:
		ptr = omui.MQtUtil.findMenuItem(mayaName)
	return wrapinstance(long(ptr), qtc.QObject)


достаю АЕ из интерфейса как класс и помещаю в переменную

Код:
ae = ui.qControl('AEbaseFormLayout')
определяю новую процедуру для эвента drop

Код:
def nEvent(obj, event):
    QWidget.drtopEvent(obj, event) #сначала то что он должен делать по дефолту
    print 'DropEvent'  #потом мои дела, в данном случае хотя бы принт
Переопределяю функцию
Код:
ae.dropEvent = nEvent
Таскаю айтемы из своего виджета - реакции ноль. Если проинсталить эвентфильтр на ae с принтами эвентов:

Код:
class eventFilterClass(QObject):
    def eventFilter(self, obj, ev):
        print ev.type()
        return False
evFilter = eventFilterClass()
ae.installEventFilter(evFilter)
то отображаются эвенты в следающем порядке:

при входе курсора в зону виджета эвентов нет вообще
при отпускании кнопки срабатывает эвент Enter (курсор вошел в зону)

больше никаких

Следовательно отбрасывается дроп эвент как не соответствующий чему-то там, оно и понятно, я ж перетаскиваю не те данные.
 
Рейтинг
137
Дим, я еще один вопрос по скрипту «Views» хочу задать. Ситуация такая: устанавдиваю image planes (к примеру на камеру top), все настроил, а когда переключаюсь по хоткею на вид "сверху" и потом возвращаюсь в perspective, то image plane камеры top поворачивается по оси Y, как захочет. То он смотрел строго "на восток", теперь бац, и смотрит "на север". Т.е. rotateY меняется. Этого можно как-то избежать? Пока временно поставил плейны из геометрии, но тогда, если переключаться в wireframe, то и чертежи пропадают. А прозрачность у ламберта или x-ray влючать все время не очень-то удобно...
 
Рейтинг
137
Вот, я тут по-быстренькому сварганил сценку с плейнами и закинул текстурки: https://dl.dropbox.com/u/49584647/damat.rar. Плейны расставлены так, как надо по идее, если нажмешь тильду в позиции top, а потом обратно в перспективу, то плейн top повернется пушкой в боковой плейн. (Там просто танк изображен :)
 
я тут, но пока очень занят по работе, совсем руки до сюда не доходят =(

свои обещания посмотреть/показать помню

в качестве извинения могу предложить вот такой ролик на посмотреть:

 

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

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

P.S.: Отличный вброс. На пару страниц народ забыл о том, что ты там обещал. :)
 
Рейтинг
137
:) Хороший видос. Только на какой карточке они все это показывают — вопрос. Damat, как освободишься, так освободишься. Это не горит и не критично. *смайл «кружка пива»*
 

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

Активный участник
Рейтинг
14
Если мне не изменяет память, поддержка GLSL-шейдеров появилась ещё в 2008 версии. Помню, сам брал из примеров шейдеры фейковых преломлений и игрался с ними во вьюпорте.
Вот и не знаю, как к такому "нововведению" относиться.
 
Нововведение в том, что это - честный, вроде как, Direct X, а не OpenGl. До этого директовые шейдера работали через довольно странный hlsl шейдер. Я писал на нем чекер из ранних постов этой ветки, помню, что очень удивился, когда в конце концов оно нормально заработало.
Т.е., если все действительно работает, можно подключать в Maya те же шейдера, которые реально есть в игре, без всяких конвертов и прочего. Раньше этим мог похвастаться только Макс.
 

Strahovid

Активный участник
Рейтинг
11
Приветствую. Вот такая небольшая идейка у меня. Может не новая, но я по крайней мере сам до неё додумался.
Если кто пользуется кнопками на шельфах, лично я постоянно всё на полки складываю, знаете в общем, стандартный шельф Poligons, там есть кнопки комбайн, сепарейт и экстракт. Так вот, когда их применяешь, например комбайн, то пивот у полученного меша получается в центре мира, приходится лесть во вкладку модифи и делать центр_пивот. Я немного модифицировал эти кнопки:
Комбайн
Код:
//CombinePolygons
string $list[] = `CombinePolygons`;
xform -cp $list;
Сепарейт
Код:
//SeparatePolygon
string $list[] = `SeparatePolygon`;
xform -cp $list;
Экстракт
Код:
//ExtractFace
string $list[] = `ExtractFace`;
xform -cp $list;
Вот, такой вот наглядный пример модификации стандартных команд и ускорения работы. Теперь пивоты сразу центрируются.
То-же можно и с Group провернуть.
 

Лексей

Активный участник
Рейтинг
8
Кто сможет сделать такой сложный тогглер?

Если находишься в окне Майя, то при нажатии хоткея тогглица варфрейм сетка, а если в текстурЭдиторе, то при нажатии той же кнопки тогглица Shade UVs.
 

Лексей

Активный участник
Рейтинг
8
Щас прочитал, что написал, звучит, как вызов, на самом деле у меня не получилось это сделать, т.е., написать такой тогглер, поэтому прошу помощи.
 
Сверху