Ускоряя Maya, послесловие. Скрипты для ускорения работы в Maya.
- Автор темы Дмитрий damat Астапкович
- Дата создания
- Рейтинг
- 47
какой код для смены текущей панели (на которой курсор наведен) на панель render view?
хочется на хоткей повесить, надоело ползать по меню.
хочется на хоткей повесить, надоело ползать по меню.
Вообще, в этом процессе много тонкостей. Можно делать запрос, потом проверять варианты через case (если ничего не путаю).
Я в МЕЛе, "тулил" запрос напрямую. И с этим, возникали некоторые проблемы. Встроенное окно и плавающие, имели разные числители после имени.
Но в случае с "рендер окном", проблем вроде бы быть не должно.
Код:
//modelPane
string $currentPanel = `getPanel -withFocus`;
string $panelType = `getPanel -typeOf $currentPanel`;
if ($panelType == "modelPanel")
{
команда, которая будет выполнена в окнах моделирования;
}
//Render View
if (`getPanel -wf` == "renderView")
{
действие, выполняемое при активном окне рендер;
}
сделал эхо команд
scriptedPanel -e -rp modelPanel4 renderView;
это помогло.
Александ, я только изучаю Майку, пока сложно такие манипуляции. Не понял как использовать ваш код.
Переключение на нужную панель сделал, как сейчас по этой же кнопке возвращать предыдущий вид?
Всем СПАСИБО за помощь.
scriptedPanel -e -rp modelPanel4 renderView;
это помогло.
Александ, я только изучаю Майку, пока сложно такие манипуляции. Не понял как использовать ваш код.
Переключение на нужную панель сделал, как сейчас по этой же кнопке возвращать предыдущий вид?
Всем СПАСИБО за помощь.
- Рейтинг
- 47
Александ, я только изучаю Майку, пока сложно такие манипуляции. Не понял как использовать ваш код.
Все верно, нужно просто смотреть с СкриптЭдитор.
Некоторые команды простые:
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 = Команды которые я дал выше. Для замены одних окон, другими.
- Рейтинг
- 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;
}
Одной горячей клавишей 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;
}
Кстати, товарищи. Немного не по теме последнего вопроса
Одной горячей клавишей Parent Unparent ( ведь неудобно делать shift P !!)
Просто назначить на горячую
///// Parent Unparent на одну кнопку
// делаем счётчик, если 1 объект выбран - то анпэрент, если нет то пэрент
Одной горячей клавишей 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;
}
///////////////////////// повесить на горячую, у меня - 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 майке поменять на кнопках - хотя я не сильно долбался
Цвет хз, у меня чёт не получилось в 2016 майке поменять на кнопках - хотя я не сильно долбался
Всем привет! При моделировании я пользуюсь камерами, импортироваными из ImageModeller, с имидж плэйнами. У камер залочиваю трансформ каналы, и навигация происходит при помощи ТоглПанЗум (горячая клавиша "\", что не очень удобно), хочу назначить на этот тогл сочетание клавиш Шифт+альт, но майка не хочет воспринимать это сочетание в ячейке хоткея. Вопрос: можно это как-то исправить? если да, то как?
как повесить команду на клавишу Tab?
Когда то давно я пытался переделать всю майку "под себя", с кучей хоткеев нелепых. По итогу сижу исключительно по дефолту + чуток дополнительных хоткеев на самые частые команды. И, конечно же пользовательские полки (шелф со скриптами, шелф с менее частыми инструментами и т.д)
Последнее редактирование:
Товарищи скриптоманы, помогите со скриптом. В кси есть такой удобный код
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--;
}
Выделяем объекты - жмяк на скрипт, получаем зависимость всех объектов от первого и последнего. Т.е перемещаем первый или последний и остальные интеполируются между ними на одинаковое расстояние. Так с вращением и скейлом. Убираем зависимость командой удалить анимацию со всех параметров объекта.
Как будет в Майке?
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
Товарищи скриптоманы, помогите со скриптом. В кси есть такой удобный код
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--;
}
Выделяем объекты - жмяк на скрипт, получаем зависимость всех объектов от первого и последнего. Т.е перемещаем первый или последний и остальные интеполируются между ними на одинаковое расстояние. Так с вращением и скейлом. Убираем зависимость командой удалить анимацию со всех параметров объекта.
Как будет в Майке?
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--;
}
Выделяем объекты - жмяк на скрипт, получаем зависимость всех объектов от первого и последнего. Т.е перемещаем первый или последний и остальные интеполируются между ними на одинаковое расстояние. Так с вращением и скейлом. Убираем зависимость командой удалить анимацию со всех параметров объекта.
Как будет в Майке?
Т.е Вы думаете, что на одну кнопку повесится 2 команды разом? мув тул и селект тул. Нужно на один хоткей это повесить, чтоб проверяло какая функция сейчас активна и включать другую. Эхо команд вкл, но как записать проверку на активную. Селект тул активен, жмяк на W, вкл мув тул, еще раз на W и опять селект тул.
Иванов юморист.
Script pack немного не то. Там одинаковые объекты.
Иванов юморист.
Script pack немного не то. Там одинаковые объекты.