MEL для начинающих, знатаки атвечают |
Home· Статьи · Вакансии · Чертежи · 3D Галерея · 2D Галерея · Форум · Форум Realtime | Реклама |  Конкурсы | RAR Award | Правила |
Здравствуйте, гость ( Вход | Регистрация )
MEL для начинающих, знатаки атвечают |
18/04/2006, 17:59
Сообщение
#1
|
|
MaxMan Группа: Пользователи Сообщений: 178 Регистрация: 05/08/2002 Из: Київ Пользователь №: 507 |
Значит так , сдеся знатаки будут держать ответ перед начинающими...
Вапрос намба ван : Нужно написать скрипт : прятать оптом определенные каналы у множества выделенных обьектов. Конечно это можно проделать и вручную, но очень хоцца сделать это скриптом. Вот к примеру такой скрипт работает на уря (добавляет каналы 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 ставится еще "труба" | Ставлю эту трубу перед $curentObject.rotateX, $curentObject.rotateY, $curentObject.rotateZ все равно вылазит ошибка: Syntax error . Пожалуйста, помогите. |
|
|
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") ; ...... теперь все работает. |
|
|
05/06/2006, 16:49
Сообщение
#3
|
|
Уважаемый Группа: Модераторы Сообщений: 1 879 Регистрация: 12/07/2004 Из: Saint-Petersburg Пользователь №: 6 551 |
// Error: Syntax error //
// Error: пишет что : No attribute was specified. |
|
|
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 |
|
|
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" ; ну и так далее... |
|
|
07/06/2011, 23:24
Сообщение
#6
|
|
Бывалый Группа: Пользователи Сообщений: 104 Регистрация: 25/09/2010 Из: Могилёв Пользователь №: 80 693 |
svv3d согласен насчет невнимательности . Сам когда неправильно писал что то на MEL , находил всякие глупые ошибки . Но здесь боюсь не в этом дело . Пробовал переписать первый скриптик как ты подсказал ( с побелами и.т.д. ) , всё равно невыходит . Ошибка таже . Пробовал не указывать путь сохранения отренденых кадров , чтобы хоть куда нить их сохранить ... один чёрт .
Второй скрипт вообще непонятно . Взял рабочий скрипт с диска от книги ... и опять таже фигня . // Warning: line 39: fopen: unable to open file "" for mode "w". // Или я мож чёго не понял , или какой глюк майки ... в общем не знаю . svv3d или кто нить ещё кому не лень , снизу архив с двумя скриптами и сценка в которой скрипт номер два должен работать . Посмотрите в чём там проблема . http://www.fayloobmennik.net/693033 |
|
|
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-й нет подрукой |
|
|
21/06/2011, 18:58
Сообщение
#8
|
|
Бывалый Группа: Пользователи Сообщений: 104 Регистрация: 25/09/2010 Из: Могилёв Пользователь №: 80 693 |
Пробую впихнуть своё созданное окно в майское меню . Пишу :
menuItem -l "Minimize All Windows" -c "minAllWin" -p mainWindowMenu MINALLWIN ; Менюшка добавилась , а исчезли стандартные пункты меню . Теперь после выполнения команды в стандартном меню Window имееться только мой добавленный пункт меню . На другом форуме подсказали добавить флаг -insertAfter . Но вот как указать после какого пункта меню добавлять свой пункт я сам не понял , и в документации не нашёл . Или может есть другой способ . |
|
|
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 |
|
|
22/06/2011, 07:27
Сообщение
#10
|
|
Бывалый Группа: Пользователи Сообщений: 104 Регистрация: 25/09/2010 Из: Могилёв Пользователь №: 80 693 |
svv3d за скрипт конечно спасибо , но твой скрипт создаёт менюшку которая появляеться в основном меню майки . Такое меню я пробовал создать ... всё работает без проблем .
А если я пытаюсь всунуть строчку в любое основное майское меню ( например window ), пункты основного меню пропадают и остаёться только мой вставленный пункт меню . |
|
|
22/06/2011, 11:53
Сообщение
#11
|
|
Рыцарь форума Группа: Пользователи Сообщений: 2 473 Регистрация: 12/07/2002 Из: Днепропетровск Пользователь №: 326 |
у тебя какой-то глюк.. запустил твой код и в конце списка появился новый пункт... и ничего не пропало...
|
|
|
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 |
|
|
01/09/2011, 13:06
Сообщение
#13
|
|
Русскоговорящий жидо-бандеровец Группа: Пользователи Сообщений: 1 336 Регистрация: 16/07/2004 Из: Украина-Одесса Пользователь №: 6 600 |
// 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? Спасибо за сылку. |
|
|
02/09/2011, 17:35
Сообщение
#14
|
|
Русскоговорящий жидо-бандеровец Группа: Пользователи Сообщений: 1 336 Регистрация: 16/07/2004 Из: Украина-Одесса Пользователь №: 6 600 |
Можно ли повесить команду на закрытие окна скрипта?
|
|
|
07/10/2011, 22:18
Сообщение
#15
|
|
Бывалый Группа: Пользователи Сообщений: 104 Регистрация: 25/09/2010 Из: Могилёв Пользователь №: 80 693 |
Как заставить майку искать скрипты в не стандартных папках . В книге Гоулда по MEL автор ( как я понял ) создаёт переменную окружения добавляя в пустой фаил 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 ! |
|
|
Bots |
Системное сообщение
|
|
|
|
|
Текстовая версия | Сейчас: 19/04/2024 - 22:52 |