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

как сделать так, что бы при reference персонажа, скрипт узнавал имена объектов?

Тема в разделе "Maya", создана пользователем ClinicalFilm, 30 май 2010.

Модераторы: Dark™, Skif
  1. volodyaRenderberg

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

    С нами с:
    25.12.2008
    Сообщения:
    200
    Симпатии:
    7
    Баллы:
    14
    дело в том, что при вставке reference объектов, к имени каждого объекта приписывается имя файла или произвольная строка, в лучшем случае через двоеточие.... Если это персонаж ... и с ним идет какая-нибудь панелька управления на mel.... то скрипт этих панелек управления не узнает измененных имен объектов .... не ужели нет способа, кроме ручного переписывания имен объектов в скрипте? Должен же быть какой-то способ автоматического определения имен....... во всяком случае я надеюсь на это.....
     
  2. minstrel

    minstrel Знаток

    С нами с:
    10.01.2009
    Сообщения:
    120
    Симпатии:
    1
    Баллы:
    26
    Это называется пространством имен или неймспейсом.
    А решается это просто: сам скрипт должен уметь обрабатывать неймспейсы,
    Скажем:
    1. У тебя есть контрол leg
    2. Ты импортнул перса в сцену
    3. Теперь у тебя имя объекта my_pers:leg

    Реально в сцене может быть сколько угодно таких персонажей и твоя панелька должна работать с каждым из них. Единственное,что меняется у таких персонажей - неймспейс.
    Возьмем такую процедуру (она определяет выделена ли нога персонажа):

    proc isLegSelected(){
    string $ls [] = `ls -sl`; // список выделенных объектов

    string $buffer[];
    int $size = `tokenize $ls[0] ":" $buffer`; // разбить строку на части

    if ($buffer[$size-1]=="leg") print "Leg is selected";
    }

    Суть такова - берешь имя объекта, вычленяешь неймспейс и работаешь с конкретным именем.
     
  3. volodyaRenderberg

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

    С нами с:
    25.12.2008
    Сообщения:
    200
    Симпатии:
    7
    Баллы:
    14
    Спасибо огромное, все-таки скрипт ... я надеялся, что будет галочка ..))) ну теперь осталось мне только понять структуру взаимоотношний ...остался маленький вопросик: вычленение неймспейса - это строковая операция, или какая-то спец процедура?
     
  4. Skif vip

    Skif Administrator Команда форума

    С нами с:
    26.03.2004
    Сообщения:
    6.823
    Симпатии:
    417
    Баллы:
    2.787
    маленькая подсказка... все что до двоеточия называется Префикс.. и следовательно идем в модифи и видим префикс хиерархи нейм.. пишем сам префикс выбираем персонажа и ок...
     
  5. xeash

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

    С нами с:
    26.04.2007
    Сообщения:
    208
    Симпатии:
    0
    Баллы:
    12
    о_О а разве это команда не просто добавляет к имени префикс в выделенной иерархии?(От неймпейса таким образом не избавишься)


    не путаем неймспейс(namespace) (" char: obj" ) и префикс ("char_obj"). префикс является частью имени объекта, неймспейс же в имя объекта не входит. Но как показал minstrel можно получать string неймпейс+имяобъекта и работать с ним. Как сделать это не через строку, слету не скажу, посмотри в доках. Кстати в 2011 майке добавили возможность создавать неймпейсы вручную( и скорей всего добавили команды по работе с ними)
     
  6. Skif vip

    Skif Administrator Команда форума

    С нами с:
    26.03.2004
    Сообщения:
    6.823
    Симпатии:
    417
    Баллы:
    2.787
    опс... что то я прокосячил... блин спасть надо больше.. сорри был не прав.
     
  7. Dark™ vip

    Dark™ Administrator Команда форума

    С нами с:
    28.10.2001
    Сообщения:
    3.110
    Симпатии:
    217
    Баллы:
    1.520
    Если скрипт работает только с именами из reference, то можно назначить текущий namespace и включить относительную выборку имен:
    Код:
    namespace -rel 1;
    namespace -set "имя референса";
    
    Тогда не придется удалять имя namespace из строки.

    Если надо вернуться в root:
    Код:
    namespace -set ":";
    То есть эти строки надо соответственно вставить в начало и в конец скрипта.

    Не понимаю, как ты в своем состоянии еще способен ответы писать, а еще спишь мало. Беречь себя надо ;)
     
  8. volodyaRenderberg

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

    С нами с:
    25.12.2008
    Сообщения:
    200
    Симпатии:
    7
    Баллы:
    14
    посоветуй пожалуйста, где можно побольше узнать про эту тему: namespace?
     
  9. volodyaRenderberg

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

    С нами с:
    25.12.2008
    Сообщения:
    200
    Симпатии:
    7
    Баллы:
    14
    в данную конструкцию нужно заключать каждую процедуру ... или весь скрипт целиком: например скрипт панельки управления с кучей бегунков и кнопочек? и что означает флаг -rel ... и существует ли где литература на данную тему? мне бы тока название и автора .. плиз ..
     
  10. Dark™ vip

    Dark™ Administrator Команда форума

    С нами с:
    28.10.2001
    Сообщения:
    3.110
    Симпатии:
    217
    Баллы:
    1.520
    Всю часть скрипта, где используются только имена из референса.
    Я ж написал, это запускает относительную выборку, т.е. полные имена не содержат название текущего namespace, заданного через -set.
    Лучшая литература по этому вопросу - это MEL Commands Reference, про книги ничего сказать не могу.
     
  11. volodyaRenderberg

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

    С нами с:
    25.12.2008
    Сообщения:
    200
    Симпатии:
    7
    Баллы:
    14
    ок спасибо ...))
     
Модераторы: Dark™, Skif

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