3DCenter.ru

Здравствуйте, гость ( Вход | Регистрация )

3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> MEL для начинающих, знатаки атвечают
Donald
сообщение 18/04/2006, 17:59
Сообщение #1


MaxMan
Иконка группы

Группа: Пользователи
Сообщений: 178
Регистрация: 05/08/2002
Из: Київ
Пользователь №: 507



Значит так , сдеся знатаки будут держать ответ перед начинающими... tomato.gif


Вапрос намба ван :

Нужно написать скрипт : прятать оптом определенные каналы у множества выделенных обьектов.
Конечно это можно проделать и вручную, но очень хоцца сделать это скриптом.
Вот к примеру такой скрипт работает на уря (добавляет каналы bounce, speed, revolve всем выделенным обьектам):

////////////
string $selectObjectsAll[] = `ls -selection`;

string $curentObject;

for ($curentObject in $selectObjectsAll)

{

addAttr -at "float" -ln "bounce" -dv 2 -h 0 -k 1 $curentObject ;
addAttr -at "float" -ln "speed" -dv 1 -h 0 -k 1 $curentObject ;
addAttr -at "float" -ln "revolve" -dv 3 -h 0 -k 1 $curentObject ;
}

///////

а вот если хочу убрать keyable с -rotate то скрипт сделанный по аналогии уже не работает :

///

string $selectObjectsAll[] = `ls -selection`;

string $curentObject;

for ($curentObject in $selectObjectsAll)

{

setAttr -k off $curentObject.rotateX;
setAttr -k off $curentObject.rotateY;
setAttr -k off $curentObject.rotateZ;

}

////

пишет что : No attribute was specified.

Если смотреть на записи в скриптэдиторе при выполнении аналогичного действия, то выводятся строки типа :

setAttr -k off |nurbsSphere1.rotateX;
setAttr -k off |nurbsSphere1.rotateY;
setAttr -k off |nurbsSphere1.rotateZ;

Тоисть перед nurbsSphere1 ставится еще "труба" | blink.gif

Ставлю эту трубу перед $curentObject.rotateX, $curentObject.rotateY, $curentObject.rotateZ
все равно вылазит ошибка: Syntax error .

Пожалуйста, помогите.
56[1].gif
Go to the top of the page
 
+Quote Post
Donald
сообщение 19/04/2006, 19:45
Сообщение #2


MaxMan
Иконка группы

Группа: Пользователи
Сообщений: 178
Регистрация: 05/08/2002
Из: Київ
Пользователь №: 507



Пока знатоки катют сюди телегу с ответами... я уже сам разобрался.

в строчках :
setAttr -k off $curentObject.rotateX;
...........

нужно было правильно писать так :

setAttr -k off ($curentObject + ".rotateX") ;
setAttr -k off ($curentObject + ".rotateY") ;
setAttr -k off ($curentObject + ".rotateZ") ;
......

теперь все работает.
Go to the top of the page
 
+Quote Post
donGUZZINI
сообщение 05/06/2006, 16:49
Сообщение #3


Уважаемый
Иконка группы

Группа: Модераторы
Сообщений: 1 879
Регистрация: 12/07/2004
Из: Saint-Petersburg
Пользователь №: 6 551



// Error: Syntax error //
// Error: пишет что : No attribute was specified.
Go to the top of the page
 
+Quote Post
__A.D.I.D.A.S.__
сообщение 07/06/2011, 00:12
Сообщение #4


Бывалый
Иконка группы

Группа: Пользователи
Сообщений: 104
Регистрация: 25/09/2010
Из: Могилёв
Пользователь №: 80 693



Народ такая проблемка . Пробую понять MEL . В книге Цыпцына есть пример скрипта который рендит нужное колличество кадров и сохраняет их в нужном каталоге . Путался понять что к чему , вроде понятно но скрипт не работает . Не хочет сохранять и пишет вот это :
( # Error: file: C:/Program Files/Autodesk/Maya2012/scripts/others/renderWindowPanel.mel line 684: AttributeError: file C:\Program Files\Autodesk\Maya2012\Python\lib\site-packages\maya\app\general\createImageFormats.py line 185: ImageFormats instance has no attribute 'oldOutf' # )
Где у меня косяк ?

int$i ;
int$N=10 ;
string$fname="Curve" ;
for( $i=0 ; $i<$N ; $i++ )
{
RenderIntoNewWindow ;
renderWindowSaveImageCallback "renderView"
"C:/Autodesk/( $fname+$i+".iff" )" "image" ; // Путь к файлу можно не писать .
playButtonStepForward ;
}

Скрипт номер два . Начало скрипта это созданное окошко , там вроде всё просто и всё работает . Проблемы начинаються когда при вызове процедуры которая висит на клавише "Save" . Как я понял ( прочитал ) данная процедура должна выбрать файлик на компе и жаписать в него данные . У меня же вроде начинаеться всё норм ... появляеться окошко в котором я должен выбрать нужный файлик , однако в окне отображаються только пустые папки а при закрытии окна Maya пишет это :
fileDialog2 -fm 1 -dir "c:/" -ff "Filtered Files (temp)";
// Warning: line 39: fopen: unable to open file "" for mode "w". //

if( `window -ex DROP_WINDOW`==1 ){ deleteUI DROP_WINDOW ; } ;
window -t "OkoshkO" DROP_WINDOW ;
columnLayout ;
attrFieldSliderGrp -at dropShape.conserve -min 0 -max 1 -w 400 ;
frameLayout -l "Push" -cll 1 ;
columnLayout ;
attrFieldSliderGrp -at pushField.mag -min -50 -max 50 -w 400 ;
attrFieldSliderGrp -at pushField.att -min 0 -max 4 -w 400 ;
attrFieldSliderGrp -at pushField.max -min 0 -max 10 -w 400 ;
setParent.. ;
setParent.. ;
frameLayout -l "Pull" -cll 1 ;
columnLayout ;
attrFieldSliderGrp -at pullField.mag -min -50 -max 50 -w 400 ;
attrFieldSliderGrp -at pullField.att -min 0 -max 4 -w 400 ;
attrFieldSliderGrp -at pullField.max -min 0 -max 10 -w 400 ;
setParent.. ;
setParent.. ;
separator -h 15 ;
gridLayout -nc 4 -cwh 98 32 ;
button -l "Reset" -w 94 -c "resetAll" ;
button -l "Save" -w 94 -c "saveAll" ;
button -l "Load" -w 94 ;
button -l "Close" -w 94 -c "deleteUI DROP_WINDOW" ;
showWindow DROP_WINDOW ;
global proc resetAll()
{
setAttr "pushField.mag" 39 ;
setAttr "pushField.att" 4 ;
setAttr "pushField.max" 2 ;
setAttr "pullField.mag" -6 ;
setAttr "pullField.att" 4 ;
setAttr "pullField.max" 5 ;
setAttr "dropShape.conserve" 0.9 ;
}
global proc saveAll() // Нерабочая процедура .
{
string $fileName = `fileDialog -dm "c:/temp/"` ;
int $fileNumber = `fopen $fileName "w"` ;
float $value;
$value = `getAttr "pushField.magnitude"` ;
fprint $fileNumber $value;
$value = `getAttr "pushField.attenuation"` ;
fprint $fileNumber $value;
$value = `getAttr "pushField.maxDistance"` ;
fprint $fileNumber $value;
$value = `getAttr "pullField.magnitude"` ;
fprint $fileNumber $value;
$value = `getAttr "pullField.attenuation"` ;
fprint $fileNumber $value;
$value = `getAttr "pullField.maxDistance"` ;
fprint $fileNumber $value;
$value = `getAttr "drop$hape.conserve"` ;
fprint $fileNumber $value;
fclose $fileNumber;
}



И ещё один вопрос . Какой командой задать вертикальное расположение элементов в окне ? Перепробовал вроде бы всё команды где есть намёк на Layout , но не нашёл .

Сообщение отредактировал __A.D.I.D.A.S.__ - 07/06/2011, 00:13
Go to the top of the page
 
+Quote Post
svv3d
сообщение 07/06/2011, 10:23
Сообщение #5


Рыцарь форума
Иконка группы

Группа: Пользователи
Сообщений: 2 473
Регистрация: 12/07/2002
Из: Днепропетровск
Пользователь №: 326



я всегда говорил... все проблемы (процентов эдак 98), не зависимо от пакета, от невнимательности

тут ты радостно прощёлкал пробелы

int$i ;
int$N=10 ;

должно быть

int $i ;
int $N=10 ;


тут ты запутался в сборке строки

renderWindowSaveImageCallback "renderView" "C:/Autodesk/( $fname+$i+".iff" )" "image" ;

должно быть

renderWindowSaveImageCallback "renderView" ("C:/Autodesk/" + $fname + $i+".iff") "image" ;


ну и так далее...
Go to the top of the page
 
+Quote Post
__A.D.I.D.A.S.__
сообщение 07/06/2011, 23:24
Сообщение #6


Бывалый
Иконка группы

Группа: Пользователи
Сообщений: 104
Регистрация: 25/09/2010
Из: Могилёв
Пользователь №: 80 693



svv3d согласен насчет невнимательности . Сам когда неправильно писал что то на MEL , находил всякие глупые ошибки . Но здесь боюсь не в этом дело . huh.gif Пробовал переписать первый скриптик как ты подсказал ( с побелами и.т.д. ) , всё равно невыходит . Ошибка таже . Пробовал не указывать путь сохранения отренденых кадров , чтобы хоть куда нить их сохранить ... один чёрт .
Второй скрипт вообще непонятно . Взял рабочий скрипт с диска от книги ... и опять таже фигня . // Warning: line 39: fopen: unable to open file "" for mode "w". //
Или я мож чёго не понял , или какой глюк майки ... в общем не знаю .
svv3d или кто нить ещё кому не лень , снизу архив с двумя скриптами и сценка в которой скрипт номер два должен работать . Посмотрите в чём там проблема .
http://www.fayloobmennik.net/693033
Go to the top of the page
 
+Quote Post
svv3d
сообщение 08/06/2011, 09:35
Сообщение #7


Рыцарь форума
Иконка группы

Группа: Пользователи
Сообщений: 2 473
Регистрация: 12/07/2002
Из: Днепропетровск
Пользователь №: 326



В таком виде это работает...
Код
{
int $i;
int $N=10;
string $fname="Curve";
for( $i=0; $i<$N; $i++ )
{
    RenderIntoNewWindow;
    renderWindowSaveImageCallback "renderView"( $fname+$i+".iff" ) "image"; // Путь к файлу можно не писать .
    playButtonStepForward;
}
}


Другой посмотрю позже.. щас 2012-й нет подрукой
Go to the top of the page
 
+Quote Post
__A.D.I.D.A.S.__
сообщение 21/06/2011, 18:58
Сообщение #8


Бывалый
Иконка группы

Группа: Пользователи
Сообщений: 104
Регистрация: 25/09/2010
Из: Могилёв
Пользователь №: 80 693



Пробую впихнуть своё созданное окно в майское меню . Пишу :
menuItem -l "Minimize All Windows" -c "minAllWin" -p mainWindowMenu MINALLWIN ;
Менюшка добавилась , а исчезли стандартные пункты меню . Теперь после выполнения команды в стандартном меню Window имееться только мой добавленный пункт меню .

На другом форуме подсказали добавить флаг -insertAfter . Но вот как указать после какого пункта меню добавлять свой пункт я сам не понял , и в документации не нашёл . Или может есть другой способ .
Go to the top of the page
 
+Quote Post
svv3d
сообщение 21/06/2011, 20:53
Сообщение #9


Рыцарь форума
Иконка группы

Группа: Пользователи
Сообщений: 2 473
Регистрация: 12/07/2002
Из: Днепропетровск
Пользователь №: 326



// This script is an example of how easy it is to add
// your own menu items to Maya's main Ui. The
// following procedure creates a menu item parented
// to the Main Maya Window, called "Custom Menu".
// The first menu item uses the mel command `sphere`
// to demonstrate using the -c switch in the menu
// command. The rest of the menu items are null
// placeholders, leaving the -c switch blank,
// simply as a demonstration of multiple menu items.
// Remember: any command can be placed in the -c
// switch: a custom procedure, or a built in Mel Command.

http://accad.osu.edu/~ywei/Help/MEL%20scri...UITEMINMAYA.MEL
Go to the top of the page
 
+Quote Post
__A.D.I.D.A.S.__
сообщение 22/06/2011, 07:27
Сообщение #10


Бывалый
Иконка группы

Группа: Пользователи
Сообщений: 104
Регистрация: 25/09/2010
Из: Могилёв
Пользователь №: 80 693



svv3d за скрипт конечно спасибо , но твой скрипт создаёт менюшку которая появляеться в основном меню майки . Такое меню я пробовал создать ... всё работает без проблем .

А если я пытаюсь всунуть строчку в любое основное майское меню ( например window ), пункты основного меню пропадают и остаёться только мой вставленный пункт меню .
Go to the top of the page
 
+Quote Post
svv3d
сообщение 22/06/2011, 11:53
Сообщение #11


Рыцарь форума
Иконка группы

Группа: Пользователи
Сообщений: 2 473
Регистрация: 12/07/2002
Из: Днепропетровск
Пользователь №: 326



у тебя какой-то глюк.. запустил твой код и в конце списка появился новый пункт... и ничего не пропало...
Go to the top of the page
 
+Quote Post
Track
сообщение 30/08/2011, 17:58
Сообщение #12


Русскоговорящий жидо-бандеровец
Иконка группы

Группа: Пользователи
Сообщений: 1 336
Регистрация: 16/07/2004
Из: Украина-Одесса
Пользователь №: 6 600



Как правильно получить строку
Код
string $st = window -q -title MayaWindow;

выдает ошибку, хотя если написать просто
Код
window -q -title MayaWindow;

то результат возвращает правильный.

Уже подсказали
Код
string $st = `window -q -title MayaWindow`;


Сообщение отредактировал Track - 30/08/2011, 18:52
Go to the top of the page
 
+Quote Post
Track
сообщение 01/09/2011, 13:06
Сообщение #13


Русскоговорящий жидо-бандеровец
Иконка группы

Группа: Пользователи
Сообщений: 1 336
Регистрация: 16/07/2004
Из: Украина-Одесса
Пользователь №: 6 600



Цитата(svv3d @ 21/06/2011, 20:53) *
// This script is an example of how easy it is to add
// your own menu items to Maya's main Ui. The
// following procedure creates a menu item parented
// to the Main Maya Window, called "Custom Menu".
// The first menu item uses the mel command `sphere`
// to demonstrate using the -c switch in the menu
// command. The rest of the menu items are null
// placeholders, leaving the -c switch blank,
// simply as a demonstration of multiple menu items.
// Remember: any command can be placed in the -c
// switch: a custom procedure, or a built in Mel Command.

http://accad.osu.edu/~ywei/Help/MEL%20scri...UITEMINMAYA.MEL

А как скрипт запихнуть в стартап?
Про UserSetup.mel знаю, но что туда прописать чтобы этот скрипт выполнялся?
И можно ли добавлять меню без использования UserSetup.mel?
Спасибо за сылку.
Go to the top of the page
 
+Quote Post
Track
сообщение 02/09/2011, 17:35
Сообщение #14


Русскоговорящий жидо-бандеровец
Иконка группы

Группа: Пользователи
Сообщений: 1 336
Регистрация: 16/07/2004
Из: Украина-Одесса
Пользователь №: 6 600



Можно ли повесить команду на закрытие окна скрипта?
Go to the top of the page
 
+Quote Post
__A.D.I.D.A.S.__
сообщение 07/10/2011, 22:18
Сообщение #15


Бывалый
Иконка группы

Группа: Пользователи
Сообщений: 104
Регистрация: 25/09/2010
Из: Могилёв
Пользователь №: 80 693



Как заставить майку искать скрипты в не стандартных папках . В книге Гоулда по MEL автор ( как я понял huh.gif ) создаёт переменную окружения добавляя в пустой фаил maya.env строку :
MAYA_SCRIPTS_PATH ; C:\Documents and Settings\Administrator\Desktop\Scripts
Cделал тоже самое у меня невыходит . Майка находит скрипты только в стандартных папках . Как сделать правильно ?
P.S. Автор ещё предлагал дабавить строку set MAYA_SCRIPTS_PATH = $MAYA_SCRIPTS_PATH ; C:\Documents and Settings\Administrator\Desktop\Scripts . Правда я не понял куда . Толи в скрипт едиторе выполнить , или в maya.env написать . Кароче HELP !
Go to the top of the page
 
+Quote Post
Bots
сообщение Системное сообщение






3 страниц V   1 2 3 >
Fast ReplyReply to this topicStart new topic

1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



RSS Текстовая версия Сейчас: 28/03/2024 - 22:33