Render.ru

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

volodyaRenderberg

Активный участник
Рейтинг
14
#1
дело в том, что при вставке reference объектов, к имени каждого объекта приписывается имя файла или произвольная строка, в лучшем случае через двоеточие.... Если это персонаж ... и с ним идет какая-нибудь панелька управления на mel.... то скрипт этих панелек управления не узнает измененных имен объектов .... не ужели нет способа, кроме ручного переписывания имен объектов в скрипте? Должен же быть какой-то способ автоматического определения имен....... во всяком случае я надеюсь на это.....
 
Рейтинг
23
#2
Это называется пространством имен или неймспейсом.
А решается это просто: сам скрипт должен уметь обрабатывать неймспейсы,
Скажем:
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";
}

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

volodyaRenderberg

Активный участник
Рейтинг
14
#3
Спасибо огромное, все-таки скрипт ... я надеялся, что будет галочка ..))) ну теперь осталось мне только понять структуру взаимоотношний ...остался маленький вопросик: вычленение неймспейса - это строковая операция, или какая-то спец процедура?
 

Skif

Администратор 3D галереи
Команда форума
Рейтинг
584
#4
маленькая подсказка... все что до двоеточия называется Префикс.. и следовательно идем в модифи и видим префикс хиерархи нейм.. пишем сам префикс выбираем персонажа и ок...
 

xeash

Активный участник
Рейтинг
12
#5
маленькая подсказка... все что до двоеточия называется Префикс.. и следовательно идем в модифи и видим префикс хиерархи нейм.. пишем сам префикс выбираем персонажа и ок...
о_О а разве это команда не просто добавляет к имени префикс в выделенной иерархии?(От неймпейса таким образом не избавишься)


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

Skif

Администратор 3D галереи
Команда форума
Рейтинг
584
#6
опс... что то я прокосячил... блин спасть надо больше.. сорри был не прав.
 

Dark™

Модератор форума
Команда форума
Рейтинг
431
#7
Если скрипт работает только с именами из reference, то можно назначить текущий namespace и включить относительную выборку имен:
Код:
namespace -rel 1;
namespace -set "имя референса";
Тогда не придется удалять имя namespace из строки.

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

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

volodyaRenderberg

Активный участник
Рейтинг
14
#9
в данную конструкцию нужно заключать каждую процедуру ... или весь скрипт целиком: например скрипт панельки управления с кучей бегунков и кнопочек? и что означает флаг -rel ... и существует ли где литература на данную тему? мне бы тока название и автора .. плиз ..
 

Dark™

Модератор форума
Команда форума
Рейтинг
431
#10
в данную конструкцию нужно заключать каждую процедуру ... или весь скрипт целиком
Всю часть скрипта, где используются только имена из референса.
Я ж написал, это запускает относительную выборку, т.е. полные имена не содержат название текущего namespace, заданного через -set.
Лучшая литература по этому вопросу - это MEL Commands Reference, про книги ничего сказать не могу.
 
Сверху