Render.ru

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

Castello

Активный участник
Рейтинг
5
#1
Имеется сцена с такой структурой:



Надо реализовать следующее (основываясь на 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).
Помогите пожалуйста это реализовать, код не большой должен получится, просто я не знаю как с даммисами работать и получать от них то, что надо
 

Castello

Активный участник
Рейтинг
5
#2
Вот так вот должна выглядеть иерархия после обработки скриптом:

 

igorznag

Мастер
Рейтинг
103
#3
Код:
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))
 

Castello

Активный участник
Рейтинг
5
#4
temp=GetNodeByName "dev_col" all:true; d=undefined
for i=1 to temp.count do
(if classof temp==Dummy then d=temp;exit)
if(d!=undefined)then (c=d.children[1].children[1].children
for i=1 to c.count do
(if(c.name=="null")then c.name=d.children[1].name+"_0"
else c.name=d.children[1].name+"_"+c.name))

Спасибо большое, разобрался
 
Сверху