1. Пользоваться форумом на планшетах и телефонах стало удобнее благодаря Tapatalk

Проблема с назначением на клавишу MEL-сценария!

Тема в разделе "Maya", создана пользователем Артур Тертерян 79136, 14 окт 2008.

Модераторы: Dark™, Skif
  1. Артур Тертерян 79136

    Артур Тертерян 79136 Активный участник

    С нами с:
    02.09.2008
    Сообщения:
    34
    Симпатии:
    0
    Баллы:
    5
    Вот какая штука, назначаю скрипт (с ним все в порядке) на клавишу "\", но он не работает. Скрипт с видео-урока The Gnomon Workshop - Automotive Modeling Techniques - zzToggleSubDee.mel. Может быть кто-то тренировался по этому видео? Собственно он, скрипт, отвечает за конвертацию полиг. в сабди. Порядок моих действий прост: назначаю клавишу, копирую скрипт из блокнота (смотрел все внимательно, никакие фрагменты коды упущены не были) в Command, подтверждаю действие и сохраняюсь. Результата отсутствует. Пользуюсь Maya 2008, на эту версию жалоб особых нет.
    Относительно недавно стал пользоваться Maya. Сталкивался ли кто-либо с подобной ситуацией? Подскажите, пожалуйста, на какие моменты надо обратить внимание?
     
  2. Миша Ершов

    Миша Ершов Мастер

    С нами с:
    02.11.2003
    Сообщения:
    1.415
    Симпатии:
    2
    Баллы:
    325
    А что на нажатие клавиши говорит script editor со включенным Echo All Commands? Появляется текст скрипта? Если да то проблема в нём.
     
  3. Артур Тертерян 79136

    Артур Тертерян 79136 Активный участник

    С нами с:
    02.09.2008
    Сообщения:
    34
    Симпатии:
    0
    Баллы:
    5
    Да, текст скрипта появляется в script editor. Если я правильно вас понял, то проблема в скрипте? В идеале он не должен там появляться? В таком случае, еще пара вопросов: можно ли вставить в Maya скрипт на клавишу не прибегая к copy-paste? Второй вопрос (он не связан с данной темой): почему каждый раз, когда я загружаю программу, в ее интерфейсе не сохраняются мои настройки, в частности, постоянно исчезает раздел MJPolyTool?
    Заранее спасибо за ответы.
     
  4. fm4

    fm4 Знаток

    С нами с:
    04.01.2008
    Сообщения:
    572
    Симпатии:
    0
    Баллы:
    29
    Надо добавить его в userSetup.mel. Если не ошибаюсь в доках на MJPolyTool это описано.
    Гугль на это выдает первой ссылкой http://forums.cgsociety.org/archive/index.php/t-428067.html
     
  5. Артур Тертерян 79136

    Артур Тертерян 79136 Активный участник

    С нами с:
    02.09.2008
    Сообщения:
    34
    Симпатии:
    0
    Баллы:
    5
    fm4, спасибо за помощь.
     
  6. Артур Тертерян 79136

    Артур Тертерян 79136 Активный участник

    С нами с:
    02.09.2008
    Сообщения:
    34
    Симпатии:
    0
    Баллы:
    5
    А можно ли в этом форуме выложить интересующий меня скрипт, с тем чтобы опытные пользователи Maya проверили его работоспособность? Программа для меня новая, вполне допускаю, что все таки я делаю что-то не так.
     
  7. Миша Ершов

    Миша Ершов Мастер

    С нами с:
    02.11.2003
    Сообщения:
    1.415
    Симпатии:
    2
    Баллы:
    325
    Нет, если текст скрипта появляется, значит он выполняется, но сам скрипт не работает. Выкладывайте скрипт посмотрим!
     
  8. Артур Тертерян 79136

    Артур Тертерян 79136 Активный участник

    С нами с:
    02.09.2008
    Сообщения:
    34
    Симпатии:
    0
    Баллы:
    5
    Вот этот скрипт:


    /* This file downloaded from Highend3d.com
    ''
    '' Highend3d.com File Information:
    ''
    '' Script Name: toggle subdivision surfaces v1.5
    '' Author: Hamish McKenzie
    '' Last Updated: July 28, 2001
    '' Update/Change this file at:
    '' http://www.highend3d.com/maya/mel/?section=modeling#1131
    ''
    '' History:
    '' toggle subdivision surfaces v1.0 on July 4, 2001 by Hamish McKenzie
    ''
    '' Please do not alter any information above this line
    '' it is generated dynamically by Highend3d.com and will
    '' be changed automatically on any updates.
    */



    //
    // toggle subdivision surfaces
    //
    // Created by Hamish McKenzie www.emissionpossible.com
    // Created : 4 July 2001
    // Amended : 9 April 2003**
    //
    // Description:
    // a simple little script that will hopefully make lightwave users
    // a little more comfortable with their modelling. it will toggle
    // an object between subdiv and poly. it will also convert a nurbs
    // surface to subdiv.
    //
    // 13/12/01:Fixed it, so hopefully it now works. The original version
    // of this script was one of my first. And it showed. So I've
    // re-written it, so its a lot cleaner, and it should work properly
    // now. Plus it now works with multiple selections, as well as when
    // you've got components selected instead of objects.
    //
    // 26/03/03simple change. it now works on hilite selections if either
    // an object or component isn't selected.
    //
    // **it now checks to see if there are any "intermediate" objects
    // that share the same transform, and deletes them. It also
    // automatically deletes history on the object. It seems to be very
    // reliable now. It also no longer relies on external scripts.
    //
    // Hamish McKenzie ©2003...


    global proc zzToggleSubDee() {
    string $selObjs[] = `ls -sl -o`;
    if ( `size $selObjs` == 0 ) $selObjs = `ls -hl`;

    for ( $obj in $selObjs ) {
    int $isShape = `zzIsType shape $obj`;
    int $isTransform = `zzIsType transform $obj`;

    //delete history on the object
    delete -ch $obj;

    //now check to see if there are any "intermediate" objects in the transform
    string $shapes[] = `listRelatives`;

    //SHAPES
    if ( $isShape ) {
    string $objTransform[] = `listRelatives -p $obj`;
    string $children[] = `listRelatives -c $objTransform`;

    for ( $child in $children ) { //discover any intermediate objects that are children of the transform in question
    if ( `getAttr ( $child + ".intermediateObject" )` ) { delete $child; }
    }

    string $objType = `nodeType $obj`;
    if ( $objType == "subdiv" ) {
    string $newObject[] = `subdToPoly -ch 0 -aut 1 -format 0 -depth 0 -sampleCount 1 -maxPolys 15000 -epp 1 -suv 1 -subdNormals 0 $obj`;
    delete $obj;
    rename $newObject[0] $obj;
    }
    if ( $objType == "mesh" ) {
    string $newObject[] = `polyToSubdiv -ch 0 -aut 1 -ap 0 -mpc 100000 -me 255 $obj`;
    delete $obj;
    rename $newObject[0] $obj;
    }
    if ( $objType == "nurbsSurface" ) {
    string $newObject[] = `nurbsToSubdiv -ch 0 -aut 1 -rn 0 -mpc 100000 -mp 1 $obj`;
    delete $obj;
    rename $newObject[0] $obj;
    }
    }

    //TRANSFORMS
    if ( $isTransform ) {
    string $children[] = `listRelatives -c $obj`;
    for ( $child in $children ) { //discover any intermediate objects that are children of the transform in question
    if ( `getAttr ( $child + ".intermediateObject" )` ) { delete $child; }
    }

    string $objShape[] = `listRelatives -s $obj`;
    string $objType = `nodeType $objShape`;
    if ( $objType == "subdiv" ) {
    string $newObject[] = `subdToPoly -ch 0 -aut 1 -format 0 -depth 0 -sampleCount 1 -maxPolys 15000 -epp 1 -suv 1 -subdNormals 0 $objShape[0]`;
    delete $objShape[0];
    rename $newObject[0] $objShape[0];
    }
    if ( $objType == "mesh" ) {
    string $newObject[] = `polyToSubdiv -ch 0 -aut 1 -ap 0 -mpc 100000 -me 255 $objShape[0]`;
    delete $objShape[0];
    rename $newObject[0] $objShape[0];
    }
    if ( $objType == "nurbsSurface" ) {
    string $newObject[] = `nurbsToSubdiv -ch 0 -aut 1 -rn 0 -mpc 100000 -mp 1 $objShape[0]`;
    delete $objShape[0];
    rename $newObject[0] $objShape[0];
    }
    }
    }
    //RESTORE SELECTION
    select $selObjs;
    }


    global proc int zzIsType ( string $type, string $obj ) {
    $selType = `nodeType $obj`;
    $isType = 0;
    if ( $type == "transform" ) {
    if ( $selType == "transform" ) {
    $isType = 1;
    }
    }

    if ( $type == "shape" ) {
    if ( $selType == "mesh" || $selType == "subdiv" || $selType == "nurbsSurface" ) {
    $isType = 1;
    }
    }
    return $isType;
    }
     
  9. Helicooper

    Helicooper Пользователь сайта

    С нами с:
    25.10.2006
    Сообщения:
    10
    Симпатии:
    1
    Баллы:
    2
    или я не внимательно вчитался, или этот скрипт сам по себе ничего не делает, а процедуры в нем надо вызвать.
    Хоть и кривой метод, но можно дописать в конце такую строку:
    zzToggleSubDee;
     
  10. Артур Тертерян 79136

    Артур Тертерян 79136 Активный участник

    С нами с:
    02.09.2008
    Сообщения:
    34
    Симпатии:
    0
    Баллы:
    5
    Я не владею этим языком, однако видел результат его (скрипта) действия. Я даже убеждён, что он рабочий. Думаю, я делаю что-то не так как нужно, хотя вроде бы все проверял не раз. Если кому-либо из читающих эту ветку форума не сложно написать порядок действий при назначении скрипта на клавишу, буду очень признателен.
     
  11. Fabis

    Fabis Активный участник

    С нами с:
    26.10.2006
    Сообщения:
    454
    Симпатии:
    0
    Баллы:
    16
    Проверил - работает в Майа 2009. По-моему у вас ошибка - вы в поле Command ввели весь скрипт, хотя нужно вводить команду вызова скрипта, то есть, как и сказал Helicooper, команду zzToggleSubDee;
     
  12. Артур Тертерян 79136

    Артур Тертерян 79136 Активный участник

    С нами с:
    02.09.2008
    Сообщения:
    34
    Симпатии:
    0
    Баллы:
    5
    Fabis, Helicooper - СПАСИБО! Все работает.
     
  13. Артур Тертерян 79136

    Артур Тертерян 79136 Активный участник

    С нами с:
    02.09.2008
    Сообщения:
    34
    Симпатии:
    0
    Баллы:
    5
    Такой вот появился вопрос. Прошу прощение у модераторов за расспрос в пределах одной темы. Прочитал, что для того чтобы сохранить настройки в maya, в частности, меня интересует раздел MJPollyTool, надо его mel прописать в userSetup.mel, но по указанным расположениям этого скрипта, я его его не обнаружил. Как вариант предлагалось создать этот файл самому, но в maya 2008 есть две директории scripts. Первая находится в ...\maya\scripts, а вторая ...\maya\2008\scripts. Вопрос таков: в какой из них надо создавать этот mel? Нужно ли в него просто вставить весь скрипт MJPollyTool.mel или есть какие-либо особенности? Надо ли вобще создавать этот mel-файл? Возможно в этой версии maya он называется как-то по другому? Во всех топиках, где обсуждался этот вопрос, рассматривались более ранние версии программы.
     
  14. Fabis

    Fabis Активный участник

    С нами с:
    26.10.2006
    Сообщения:
    454
    Симпатии:
    0
    Баллы:
    16
    Не зависимо от версии метод один и тот же: в директории ...\maya\{MAYA_VERSION}\scripts создаете или находите userSetup.mel, затем в нем пишете либо MJPollyTool.mel; либо source MJPolyTool;
     
  15. Артур Тертерян 79136

    Артур Тертерян 79136 Активный участник

    С нами с:
    02.09.2008
    Сообщения:
    34
    Симпатии:
    0
    Баллы:
    5
    Увы, MJPolyTools все равно при запуске опять исчезают.
     
Модераторы: Dark™, Skif

Поделиться этой страницей