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

Обработка объектов сцены основываясь на Dummy

Тема в разделе "MAXScript", создана пользователем Castello, 1 янв 2013.

Модераторы: Savin Denis
  1. Castello

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

    С нами с:
    06.01.2012
    Сообщения:
    47
    Симпатии:
    0
    Баллы:
    5
    Имеется сцена с такой структурой:

    [​IMG]

    Надо реализовать следующее (основываясь на Dummy)
    Есть один и только один Dummy с именем dev_col, к нему присоединен Dummy с определенным именем, к примеру как на скриншоте - nj_liberty_1 (запоминаем его). Далее к нему присоединения еще один дамми с именем unnamed, и вот тут уже главное - к дамми unnamed, присоединяются уже объекты их несколько и как видно на скрине имеют имена от null (0) до 4, т.е. всего пять объектов. Мне необходимо переименовать эти вот объекты таким образом, чтобы первый имел имя в формате - имя даммиса присоединенного к dev_col, в этом случае это nj_liberty_1 + _ + 0, т.е. объект с именем null должен переименоваться в nj_liberty_1_0,
    второй объект (с именем 1) согласно алгоритму должен стать nj_liberty_1_1 и т.д. для всех объектов (nj_liberty_1_2, nj_liberty_1_3...)
    Важно что объекты должны быть переименованы в соответствии с их исходными именами, а не просто так (чтоб объект 4, не стал nj_liberty_1_6).
    Помогите пожалуйста это реализовать, код не большой должен получится, просто я не знаю как с даммисами работать и получать от них то, что надо
     
  2. Castello

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

    С нами с:
    06.01.2012
    Сообщения:
    47
    Симпатии:
    0
    Баллы:
    5
    Вот так вот должна выглядеть иерархия после обработки скриптом:

    [​IMG]
     
  3. igorznag

    igorznag Знаток

    С нами с:
    23.04.2010
    Сообщения:
    1.256
    Симпатии:
    173
    Баллы:
    65
    Код:
    temp=GetNodeByName "dev_col" all:true; d=undefined
    for i=1 to temp.count do
    (if classof temp[i]==Dummy then d=temp[i];exit)
    if(d!=undefined)then (c=d.children[1].children[1].children
    for i=1 to c.count do
    (if(c[i].name=="null")then c[i].name=d.children[1].name+"_0"
    else c[i].name=d.children[1].name+"_"+c[i].name))
     
  4. Castello

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

    С нами с:
    06.01.2012
    Сообщения:
    47
    Симпатии:
    0
    Баллы:
    5

    Спасибо большое, разобрался
     
Модераторы: Savin Denis

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