Всем привет. Возникла такая задача. Нужно осуществить исполнение цикла на каждом фрейме анимации. Поясню на примере. Есть бокс разбитай на фрагменты, которые объединены в группу. Группа двигается по оси х. Нужно осуществить скрывание фрагментов при анимации, если их положение больше определенного значения. Составляю скрипт.
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. Голову изломал - так и не получилось. Может знающие подскажут.
А нужно чтоб куски скрывались последовательно на протяжении всей анимации, если их положение по х становится больше 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
Спасибо за ответ. Понял свою ошибку. Нужно было создавать дополнительный цикл для animate для создания ключей
и анимировать visibility (это если не юзать материал).
Доступ к резюме доступен только по пакетному доступу HR менеджерам зарегистрированных компаний. Узнать о вариантах корпоративных пакетов можно по ссылке.
Виталий Мартынов
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
1. В новой сцене запускаем скрипт.
2. Визуализируем сцену.
Виталий Мартынов
и анимировать visibility (это если не юзать материал).