Render.ru

Вопрос по random()

ИСИТ

Пользователь сайта
Рейтинг
2
#1
Добрый вечер!
Стоит такая задача: в момент времени А слой имеет координаты (random(), random() , -1000), в момент времени Б - (random(), random() , 1000)
Проблема в том, что слоев таких много и у каждого координаты начала и конца должны различаться. Если просто копировать написанное мной выражение, выходит, что все слои имеют одинаковые координаты начала и конца. Как мне это исправить?

Код:
t =(thisComp.layer("Null 3").effect("Slider Control")("Slider"));
this_layer.position =[random() + (t)*50, random() + (t)*50, -1000 + t*400]
Null 3 меняет значение от 0 до 5 за необходимое мне время.
 

Aspel

Активный участник
Рейтинг
15
#2
Я правильно понимаю, проблема только в том, чтоб в НАЧАЛЬНЫЙ момент каждый слой имел РАЗЛИЧНЫЕ, но СЛУЧАЙНЫМ ОБРАЗОМ сгенерированные координаты?
Я только что набросал такую схему - решаем вашу задачу в два этапа:

1 - с помощью скрипта "разбрасываем" все слои в пространстве (скрипт тут удобен тем, что одним нажатием разбросает и 300 и 400 слоев)
пример основного тела скрипта:

for (i=2;i<=8;i=i+1)
{
x=Math.random();
y=Math.random();
activeItem.layer(i).property("position").setValue([ x,y, -1000]);

}

В этом цикле мы перебираем все слои с 2-го по 8-й (у меня 8, вместо 8-ми ставь свое количество)
Первым слоем в самом верху ставишь свой "Нуль 3". При активной композиции в прожект менеджере запускаешь скрипт, и вуаля - слои разбросаны как надо.

2 - Потом на каждый слой вешаешь свой экспрешн, но с небольшими изменениями, а именно:

t =(thisComp.layer("Null 3").effect("Slider Control")("Slider"));

this_layer.position =[this_layer.position[0] + (t)*50, this_layer.position[1]+ (t)*50, -1000 + t*400];

ЗЫ: Я не спец в скриптах и экспрешенах, но ятолько что потестил - у меня такой алгоритм сработал.
 
Сверху