Render.ru

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

Рейтинг
22
какой код для смены текущей панели (на которой курсор наведен) на панель render view?
хочется на хоткей повесить, надоело ползать по меню.
Запрашивается командой "ГетПанел". С флагом "ВитхФокус"

Вообще, в этом процессе много тонкостей. Можно делать запрос, потом проверять варианты через case (если ничего не путаю).

Я в МЕЛе, "тулил" запрос напрямую. И с этим, возникали некоторые проблемы. Встроенное окно и плавающие, имели разные числители после имени.

Но в случае с "рендер окном", проблем вроде бы быть не должно.

Код:
//modelPane
    string $currentPanel = `getPanel -withFocus`;
    string $panelType = `getPanel -typeOf $currentPanel`;
    if ($panelType == "modelPanel")
        {
            команда, которая будет выполнена в окнах моделирования;
        }


//Render View
    if (`getPanel -wf` == "renderView")
        {
            действие, выполняемое при активном окне рендер;
        }
 

RoN43

Активный участник
Рейтинг
11
сделал эхо команд
scriptedPanel -e -rp modelPanel4 renderView;
это помогло.
Александ, я только изучаю Майку, пока сложно такие манипуляции. Не понял как использовать ваш код.
Переключение на нужную панель сделал, как сейчас по этой же кнопке возвращать предыдущий вид?
Всем СПАСИБО за помощь.
 

Lemieux

Знаток
Рейтинг
58
сделал эхо команд
scriptedPanel -e -rp modelPanel4 renderView;
это помогло.
Александ, я только изучаю Майку, пока сложно такие манипуляции. Не понял как использовать ваш код.
Переключение на нужную панель сделал, как сейчас по этой же кнопке возвращать предыдущий вид?
Всем СПАСИБО за помощь.
У тебя же включено эхо? - Так посмотри, что происходит когда переключаешься с помощью пробела.
 
Александ, я только изучаю Майку, пока сложно такие манипуляции. Не понял как использовать ваш код.
Да, я сейчас перечитал, и понял что не то написал. Это код на мультихоткей (при нажатии на оду и ту же клавишу, в разных окнах, совершаются разные действия).

Все верно, нужно просто смотреть с СкриптЭдитор.
Некоторые команды простые:
switchPanelToType RenderView;
switchModelView persp;
switchPanelToType SetEditor;
switchPanelToType GraphEditor;
switchPanelToType Hypershade;

С некоторыми по сложнее:
string $curPanel = `getPanel -withFocus`;
scriptedPanel -e -rp $curPanel nodeEditorPanel1;

string $curPanel = `getPanel -withFocus`;
scriptedPanel -e -rp $curPanel polyTexturePlacementPanel1;

Переключатель "туда-обратно", можно в принципе сделать с помощью дополнительной переменной. Но мне кажется, это будет не слишком удобно.

Я для себя, сделал так:
Space+LMB = МаркингМеню с прессетами (Panel Layout)
Space+MMB = Менюха с часто используемыми "плавающими" окнами.
Space+RMB = Команды которые я дал выше. Для замены одних окон, другими.
 

Frame_First

Мастер
Рейтинг
126
Кстати, товарищи. Немного не по теме последнего вопроса

Одной горячей клавишей Parent Unparent ( ведь неудобно делать shift P !!)

Просто назначить на горячую

///// Parent Unparent на одну кнопку


// делаем счётчик, если 1 объект выбран - то анпэрент, если нет то пэрент

int $i=0;
string $LIST[] = `ls -sl`;
for ($item in $LIST) {
$i=$i+1;
};

// условие

if ($i == 1) {

parent -w;
}

else {

parent;
}
 

Князь М

Активный участник
Рейтинг
14
Ребят, а нельзя сделать такой скрипт, чтобы управление камеры вьюпорта в Мае, было как в Zbrash? :)
 

Ken_Zin

Мастер
Рейтинг
108
Кстати, товарищи. Немного не по теме последнего вопроса

Одной горячей клавишей Parent Unparent ( ведь неудобно делать shift P !!)

Просто назначить на горячую

///// Parent Unparent на одну кнопку


// делаем счётчик, если 1 объект выбран - то анпэрент, если нет то пэрент
А если нужно отперентить сразу несколько объектов или приперентить несколько к одному?
 
Рейтинг
126
А если нужно отперентить сразу несколько объектов или приперентить несколько к одному?
припэрентить несколько к одному - работает, а отпэрентить - нужно улучшить код

У меня просто 99,99 % случаев когда тока один объект надо вытащить из группы в группе в группе в группе и т.п. кейсов... при моделинге дубликэйт иногда глючит
 
Последнее редактирование:
Рейтинг
126
Может кому то понадобится, Изолэйт селект на горячую клавишу - нашёл в инете и + дописал чтобы Image plane не хайдился при изолэйте!! ( как известно в 2016 майке или чуть раньше к имэйдж плэйнам добавили трансформ ноду и терь они скрываются при изолэйте тоже ! приходитсявыделять кусок меша и имэйдж плэйн )

///////////////////////// повесить на горячую, у меня - alt q

// запоминание выделеного

string $Firstselected[] = `ls -sl`;
string $item;
// добавление к выделеным объектам image plane
string $imageplane = "imagePlane";
for ($i=1; $i<20; $i=$i+1) // ну 20 - от фонаря, до 20 имэйдж плэйнов выделит
{
if( `objExists (($imageplane)+($i))` ) {
select -add (($imageplane)+($i));
}
;}
// код изолэйта
$currentPanel = `getPanel -withFocus`;
$state = `isolateSelect -q -state $currentPanel`;
if ($state == "0")
{
enableIsolateSelect $currentPanel 1;
}
else
{
enableIsolateSelect $currentPanel 0;
}
// в результате махинаций остаются выбраны имэйдж плэйны. Задача - выбрать тока объекты
select -cl ;
for ($item in $Firstselected)
{
select -add $item;
}
 
Рейтинг
126
Вопрос, если можно, увидел у тебя на странице красные зелёные кнопки. В майке 2016 я так понимаю сломаны старые способы создавать менюшки - типа gridLayout но зато работают formLayout в которых с самого начала вообще очень сложно разобраться конечно ( я разобрался как работают немного НО они блин очень сложные )

Цвет хз, у меня чёт не получилось в 2016 майке поменять на кнопках - хотя я не сильно долбался
 

2manoff

Активный участник
Рейтинг
14
Всем привет! При моделировании я пользуюсь камерами, импортироваными из ImageModeller, с имидж плэйнами. У камер залочиваю трансформ каналы, и навигация происходит при помощи ТоглПанЗум (горячая клавиша "\", что не очень удобно), хочу назначить на этот тогл сочетание клавиш Шифт+альт, но майка не хочет воспринимать это сочетание в ячейке хоткея. Вопрос: можно это как-то исправить? если да, то как?
 

Константин Пономарёв

Пользователь сайта
Рейтинг
4
Кто-нибудь знает как повесить команду на клавишу Tab? (Maya 2016 Ext 2). Пишет что нельзя использовать клавиши модификаторы. Что это за бред такой?
 

simon310

Мастер
Рейтинг
94
как повесить команду на клавишу Tab?
Навряд ли получится, да и не стоит этого делать (теоретически то много чего можно). Хотя бы потому что эта клавиша используется при работе с некоторыми инструментами (квад дроу например) . На пробел же не вешают команды, потому как маркин меню на нем.
Когда то давно я пытался переделать всю майку "под себя", с кучей хоткеев нелепых. По итогу сижу исключительно по дефолту + чуток дополнительных хоткеев на самые частые команды. И, конечно же пользовательские полки (шелф со скриптами, шелф с менее частыми инструментами и т.д)
 
Последнее редактирование:

RoN43

Активный участник
Рейтинг
11
Товарищи скриптоманы, помогите со скриптом. В кси есть такой удобный код

var oSel = GetValue( "SelectionList" );

oNum=(oSel.Count)-1;
oNuma=oNum-1;
for( var i = 1 ; i <oSel.Count-1 ; i++) {
SetExpr(oSel(i)+".kine.local.posx","((("+(((oSel(0)+".kine.local.posx")+")-("+(oSel(oNum)+".kine.local.posx"))+"))*("+(oNuma/oNum))+"))+("+(oSel(oNum)+".kine.local.posx")+")");
SetExpr(oSel(i)+".kine.local.posy","((("+(((oSel(0)+".kine.local.posy")+")-("+(oSel(oNum)+".kine.local.posy"))+"))*("+(oNuma/oNum))+"))+("+(oSel(oNum)+".kine.local.posy")+")")
SetExpr(oSel(i)+".kine.local.posz","((("+(((oSel(0)+".kine.local.posz")+")-("+(oSel(oNum)+".kine.local.posz"))+"))*("+(oNuma/oNum))+"))+("+(oSel(oNum)+".kine.local.posz")+")")
SetExpr(oSel(i)+".kine.local.rotx","((("+(((oSel(0)+".kine.local.rotx")+")-("+(oSel(oNum)+".kine.local.rotx"))+"))*("+(oNuma/oNum))+"))+("+(oSel(oNum)+".kine.local.rotx")+")")
SetExpr(oSel(i)+".kine.local.roty","((("+(((oSel(0)+".kine.local.roty")+")-("+(oSel(oNum)+".kine.local.roty"))+"))*("+(oNuma/oNum))+"))+("+(oSel(oNum)+".kine.local.roty")+")")
SetExpr(oSel(i)+".kine.local.rotz","((("+(((oSel(0)+".kine.local.rotz")+")-("+(oSel(oNum)+".kine.local.rotz"))+"))*("+(oNuma/oNum))+"))+("+(oSel(oNum)+".kine.local.rotz")+")")
SetExpr(oSel(i)+".kine.local.sclx","((("+(((oSel(0)+".kine.local.sclx")+")-("+(oSel(oNum)+".kine.local.sclx"))+"))*("+(oNuma/oNum))+"))+("+(oSel(oNum)+".kine.local.sclx")+")")
SetExpr(oSel(i)+".kine.local.scly","((("+(((oSel(0)+".kine.local.scly")+")-("+(oSel(oNum)+".kine.local.scly"))+"))*("+(oNuma/oNum))+"))+("+(oSel(oNum)+".kine.local.scly")+")")
SetExpr(oSel(i)+".kine.local.sclz","((("+(((oSel(0)+".kine.local.sclz")+")-("+(oSel(oNum)+".kine.local.sclz"))+"))*("+(oNuma/oNum))+"))+("+(oSel(oNum)+".kine.local.sclz")+")")

oNuma--;
}

Выделяем объекты - жмяк на скрипт, получаем зависимость всех объектов от первого и последнего. Т.е перемещаем первый или последний и остальные интеполируются между ними на одинаковое расстояние. Так с вращением и скейлом. Убираем зависимость командой удалить анимацию со всех параметров объекта.

Как будет в Майке?
 
Последнее редактирование:

RoN43

Активный участник
Рейтинг
11
еще вопросик
как будет выглядеть код при нажатии W вкл translate tool, а при повторном нажатии выкл (вкл select tool)
 

Александр Иванов

Активный участник
Рейтинг
7
Товарищи скриптоманы, помогите со скриптом. В кси есть такой удобный код

var oSel = GetValue( "SelectionList" );

oNum=(oSel.Count)-1;
oNuma=oNum-1;
for( var i = 1 ; i <oSel.Count-1 ; i++) {
SetExpr(oSel(i)+".kine.local.posx","((("+(((oSel(0)+".kine.local.posx")+")-("+(oSel(oNum)+".kine.local.posx"))+"))*("+(oNuma/oNum))+"))+("+(oSel(oNum)+".kine.local.posx")+")");
SetExpr(oSel(i)+".kine.local.posy","((("+(((oSel(0)+".kine.local.posy")+")-("+(oSel(oNum)+".kine.local.posy"))+"))*("+(oNuma/oNum))+"))+("+(oSel(oNum)+".kine.local.posy")+")")
SetExpr(oSel(i)+".kine.local.posz","((("+(((oSel(0)+".kine.local.posz")+")-("+(oSel(oNum)+".kine.local.posz"))+"))*("+(oNuma/oNum))+"))+("+(oSel(oNum)+".kine.local.posz")+")")
SetExpr(oSel(i)+".kine.local.rotx","((("+(((oSel(0)+".kine.local.rotx")+")-("+(oSel(oNum)+".kine.local.rotx"))+"))*("+(oNuma/oNum))+"))+("+(oSel(oNum)+".kine.local.rotx")+")")
SetExpr(oSel(i)+".kine.local.roty","((("+(((oSel(0)+".kine.local.roty")+")-("+(oSel(oNum)+".kine.local.roty"))+"))*("+(oNuma/oNum))+"))+("+(oSel(oNum)+".kine.local.roty")+")")
SetExpr(oSel(i)+".kine.local.rotz","((("+(((oSel(0)+".kine.local.rotz")+")-("+(oSel(oNum)+".kine.local.rotz"))+"))*("+(oNuma/oNum))+"))+("+(oSel(oNum)+".kine.local.rotz")+")")
SetExpr(oSel(i)+".kine.local.sclx","((("+(((oSel(0)+".kine.local.sclx")+")-("+(oSel(oNum)+".kine.local.sclx"))+"))*("+(oNuma/oNum))+"))+("+(oSel(oNum)+".kine.local.sclx")+")")
SetExpr(oSel(i)+".kine.local.scly","((("+(((oSel(0)+".kine.local.scly")+")-("+(oSel(oNum)+".kine.local.scly"))+"))*("+(oNuma/oNum))+"))+("+(oSel(oNum)+".kine.local.scly")+")")
SetExpr(oSel(i)+".kine.local.sclz","((("+(((oSel(0)+".kine.local.sclz")+")-("+(oSel(oNum)+".kine.local.sclz"))+"))*("+(oNuma/oNum))+"))+("+(oSel(oNum)+".kine.local.sclz")+")")

oNuma--;
}

Выделяем объекты - жмяк на скрипт, получаем зависимость всех объектов от первого и последнего. Т.е перемещаем первый или последний и остальные интеполируются между ними на одинаковое расстояние. Так с вращением и скейлом. Убираем зависимость командой удалить анимацию со всех параметров объекта.

Как будет в Майке?
Видимо, вам нужно это
 

Александр Иванов

Активный участник
Рейтинг
7
еще вопросик
как будет выглядеть код при нажатии W вкл translate tool, а при повторном нажатии выкл (вкл select tool)
Если включен Move tool:
включи мне select tool
Если включен select tool:
включи мне move tool
 

RoN43

Активный участник
Рейтинг
11
Т.е Вы думаете, что на одну кнопку повесится 2 команды разом? мув тул и селект тул. Нужно на один хоткей это повесить, чтоб проверяло какая функция сейчас активна и включать другую. Эхо команд вкл, но как записать проверку на активную. Селект тул активен, жмяк на W, вкл мув тул, еще раз на W и опять селект тул.
Иванов юморист.

Script pack немного не то. Там одинаковые объекты.
 
Сверху