Render.ru

Проверка и исполнение цикла при анимации.

Виталий Мартынов

Активный участник
Рейтинг
11
#1
Всем привет. Возникла такая задача. Нужно осуществить исполнение цикла на каждом фрейме анимации. Поясню на примере. Есть бокс разбитай на фрагменты, которые объединены в группу. Группа двигается по оси х. Нужно осуществить скрывание фрагментов при анимации, если их положение больше определенного значения. Составляю скрипт.


s = $*frag* -- создаю коллекцию из фрагментов
a = (s as array) -- создаю массив из коллекции
g = $Group001 -- определяю группу фрагментов
animate on
( at time 0 g.pos = [0, 0, 0]
at time 100 g.pos = [150, 0, 0] -- двигаю группу
for i = 1 to a.count do
(
if a.pos.x > 50 do hide a -- задаю скрытие фрагментов по положению
)
)

При исполнении происходит скрытие только в начальном кадре, и не происходит в остальных. А нужно чтоб куски скрывались последовательно на протяжении всей анимации, если их положение по х становится больше 50. Голову изломал - так и не получилось. Может знающие подскажут.
 

igorznag

Мастер
Рейтинг
103
#2
А нужно чтоб куски скрывались последовательно на протяжении всей анимации, если их положение по х становится больше 50.
Пример: Кусок это чайник. Скрываем материал кусков.
1. В новой сцене запускаем скрипт.
2. Визуализируем сцену.
Код:
for i=1 to 5 do
(
t=Teapot();t.name="igorznag_frag"+(i as string);
m=standardMaterial();m.name="igorznag_frag_mat"+(i as string);
m.diffuse=color (random 0 255) (random 0 255) (random 0 255)
t.radius=10;t.pos.x=i*25;t.material=m
)
group $igorznag_frag* name:"igorznag_Group001"
---------------------------------------------
s=$igorznag_frag*
a = (s as array)
g = $igorznag_Group001
animate on 
(
at time 0 g.pos = [0, 0, 0] 
at time 100 g.pos = [150, 0, 0]
for i = 1 to a.count do 
( 
for j=0 to 100 do
(
at time j 
if a[i].pos.x > 50 then a[i].material.opacity=0
else a[i].material.opacity=100
)--for j=0 to 100 do
)--for i = 1 to a.count do
)--animate on
 

Виталий Мартынов

Активный участник
Рейтинг
11
#3
Спасибо за ответ. Понял свою ошибку. Нужно было создавать дополнительный цикл для animate для создания ключей
и анимировать visibility (это если не юзать материал).
 
Сверху