Render.ru

Раскладка на 5 панелей (Panes Layout)

DemX86

Активный участник
Рейтинг
18
#1
Есть желание сделать раскладку из 5ти панелек, как на картинке. Это было бы удобно для работы на широкоформатных мониторах.
Дело в том, что в окошке Panels (Window -> Saved Layouts -> Edit Layouts... или Panels -> Panel Editor) можно найти раскладку только на четыре панельки максимум.
Есть какие-нибудь соображения как это сделать?
 

Вложения

xeash

Активный участник
Рейтинг
12
#2
Можно скрипт написать для интерфейса...на MEL, это не сложно=)
 

DemX86

Активный участник
Рейтинг
18
#3
Чтож, понятно направление дальнейших поисков )
Вопрос наперед -- если я допустим найду (или даже сам напишу) этот mel скрипт, тогда мне его нужно будет запускать каждый раз при запуске Maya? Можно ль сделать его раскладкой по дефолту? Или даже чтобы она цивильно расположилась среди других раскладок слева под ToolBox?
 

DemX86

Активный участник
Рейтинг
18
#5
fm4
Да тут все проще оказалось, команда panelConfiguration создает раскладку, которую вы опишите в параметрах этой команды. Т.е. эта созданная раскладка панелей будет цивильно создана и доступна в Panel Editor, а также внизу ToolBox наравне с остальными "4вида", "перспектива", "Outliner/Persp" и так далее. Осталось только разобраться с тем, как описать 5 окон в этой mel команде желаемым образом, потому как при виде скрипта из хелпа, создающего раскладку, я впадаю в ступор :)
 

fm4

Активный участник
Рейтинг
15
#6
команда panelConfiguration создает раскладку, которую вы опишите в параметрах этой команды
А вот фиг - судя по докам там можно только 4 панели. И возможные конфигурации жестко заданы.
Смотри paneLayout - там много чего об этом говорит. На пример конфигурафии задаются по имени, а не геометрией, параметров определяющих какой именно вид(перспектива итд) всего четыре.

Так что похоже что пока так сделать нельзя. Или есть другой путь.
 

Lakoske

Активный участник
Рейтинг
11
#7
а можно отцепить вью панель в отдельное окно (с целью развернуть на второй монитор например)?
 

DemX86

Активный участник
Рейтинг
18
#8
Lakoske
Жми в желаемом окошке Panels -> Tear Off Copy... (или просто Tear Off, если не хочешь двух одинаковых окошек с одинаковыми видами).
Ну а после этого в появившеся окошке ткни правой кнопкой по его заголовку и сними галку с Attach To Main Window и тащи его куда угодно.


fm4
Хмм, если это сделать нельзя в MEL, то наверное это вообще невозможно сделать, кроме как в C++ :)
Вот что говорят в хелпе про команду panelConfiguration:
This command creates a panel configuration object. Typically you would not call this method command directly. Instead use the Panel Editor. Once a panel configuration is created you can make it appear in the main Maya window by selecting it from any panel's "Panels->Saved Layouts" menu.
Что можно перевести как:
Эта команда создает объект конфигурации панелек (по сути -- раскладку). В общем-то нет необходимости запускать эту команду напрямую (то есть каждый раз, когда вы хотите увидеть эту новую раскладку). Вместо это используйте Panel Editor. Как только раскладка будет создана, вы можете ее включить в главном окне Maya, выбрав из любой панельки меню "Panels->Saved Layouts"

В флаг -configString этой команды можно воткнуть команду paneLayout, и уж в ней уже прописаны дефолтные раскладки по именам и с максимум 4мя окошками. В целом мне кажется, что здесь все гораздо гибче, чем кажется на первый взгляд.

Вот какой пример есть в хелпе по созданию своей собственно раскладки. Если его понять, то я думаю вопрос будет решен :)

// Create a custom panel configuration.
//
string $configName = `panelConfiguration -label "Custom Panel Layout"
-sceneConfig false
-configString "paneLayout -e -cn \"vertical2\" -ps 1 39 100 -ps 2 61 100 $gMainPane;"
-addPanel false
"Outliner"
"outlinerPanel"
("{global int $gUseMenusInPanels;\
$panelName = `outlinerPanel -mbv $gUseMenusInPanels -unParent -l \"Outliner\"`;\
outlinerEditor -e -highlightActive true $panelName;}")
"outlinerPanel -edit -l \"Outliner\" $panelName"
-addPanel true
"Persp View"
"modelPanel"
("{global int $gUseMenusInPanels;\
modelPanel -mbv $gUseMenusInPanels\
-unParent -l \"Persp View\" -cam persp;}" )
"modelPanel -edit -l \"Persp View\" -cam \"persp\" $panelName"`;

// Update the main Maya window to reflect the custom panel configuration.
// Note also that your custom configuration may be selected from any
// panel's "Panels->Saved Layouts" menu.
//
setNamedPanelLayout "Custom Panel Layout";


Что я тут не понимаю:
1. Зачем в начале скрипта объявлять переменную string $configName, которая все равно потом нигде не используется.
2. Что за $gMainPane? Откуда он взялся?
3. ("{global int $gUseMenusInPanels;\
$panelName = `outlinerPanel -mbv $gUseMenusInPanels -unParent -l \"Outliner\"`;\
outlinerEditor -e -highlightActive true $panelName;}")

Вот это вот вообще меня в ступор вводит :(
 

fm4

Активный участник
Рейтинг
15
#9
1. В эту переменную ты суешь результаты этой все длинючей команды. Теоретически ты можешь просто написать все что стоит в кавычках `panelConfiguration ` просто как команду.

2. Возможно это глобальная переменная. Майя ее где то проставляет.

3. Это типа скрипт, который сидит в скрипте, результат которого засовывается в переменную configName. Весело так.

В общем я почти уверен что пять панелей сделать не получится. В этом примере они создают новую конфигурацию. Панели на экране будут лежать по типу vertical2. И только так. addPanel сдесь ни при чем - один лэйаут может иметь больше дочерних pane чем он может использовать. Они просто будут не видны.

Вот если бы можно было создавать свои Config Names, то тогда оно было бы возможно. Чисто теоретически это можно сделать через OpenMayaAPI. Там есть класс для своих view, но ожидается слишком много мороки.

В общем проще всего отцепить один view и не парится.
 

Lakoske

Активный участник
Рейтинг
11
#10
спасибо да.
еще вопрос: как в мел узнать какая камера активна? в смысле вьюпорт какой камеры выделен. что-то не нахожу я. что-то не нахожу...
 

DemX86

Активный участник
Рейтинг
18
#11
fm4
Мдааа... Похоже придется оставить эту затею с такой раскладкой до лучших времен.
 
Сверху