Ну во первых, по тексту сразу видно что он как слой не деформируется, в МАХе это бы выглядело на много совершеннее.
Во вторых, в уроке есть проект, почему бы тебе его не скачать. Если скачал , то идем дальше.
Движение текстового слоя по спирали описывается математически, это не путь-маска в 3Д пространстве как мы бы это делали в МАХе.
Это движение и математическая формула наглядно показана в композиции helix.
Основная композиция textstream_final, может ты не заметил, огда проясняю:
Самый верхний текстовый слой title, присмотрись к параметрам слоя, почти в каждом параметре экспрешен.
Sourse Text:
n=index;
seedRandom(n, timeless = true);
myText = ["After Effects",
"Encore DVD",
"Photoshop",
"Premiere Pro",
"Final Cut Pro",
"Motion",
"Broadcast",
"Commotion",
"Cinema 4D",
"particle Illusion"];
myIndex = Math.floor(random(myText.length));
myText[myIndex]
представлен текстовый массив(myText), myIndex случайным образом(random) присваивается величина от 0 до длины текстового массива(myText.length), так как результат функции random() это не всегда целое число, то математической функцией Math.floor() его округляют до целого, это необходимо для того чтобы получить корректный индекс текстового массива.
Fill Color:
n=index;
seedRandom(n, timeless = true);
r=random(0,1);
g=random(0,1);
b=random(0,1);
[r,g,b,1]
здесь все просто, генерится цвет случайным образом.
Position:
n=index; //make different layers have different seed
seedRandom(n, timeless = true); //random value will not be affacted by time
timeratefactor=thisComp.layer("control").effect("timeratefactor")("Slider");
timerate=random(1/timeratefactor, timeratefactor); //control the random speed
looptime=thisComp.layer("guide").position.key(thisComp.layer("guide").position.numKeys).time //get the length of a loop
latetimemin=0;
latetimemax=looptime;
latetime=random(latetimemin,latetimemax); //random start time
xreplace=random(-thisComp.layer("control").effect("replace")("Slider"), thisComp.layer("control").effect("replace")("Slider"));
yreplace=random(-thisComp.layer("control").effect("replace")("Slider"), thisComp.layer("control").effect("replace")("Slider"));
zreplace=random(-thisComp.layer("control").effect("replace")("Slider"), thisComp.layer("control").effect("replace")("Slider")); //the thickness of the stream
when=(time-latetime)*timerate;
p=thisComp.layer("guide").position.valueAtTime(when); //get the expression of position
freq=thisComp.layer("control").effect("freq")("Slider");
ampmax=thisComp.layer("control").effect("ampmax")("Slider")
amp=random(0,(ampmax)/looptime); //how many times do you want the wiggle expression to affect the motion in every loop
a=p[0];
b=p[1]; //i only want wiggle affect z-axis
c=thisComp.layer("guide").position.wiggle(amp, freq, 1, .5, when)[2]; //wiggle the path
[a+xreplace,b+yreplace,c+zreplace] //out put the position
Следует обратить внимание откуда беруться настройки, для этого были введены Null слои на которые наложили эффекты-слайдеры
это контрольный слой
thisComp.layer("control").effect("timeratefactor")("Slider");
и
Слой откуда берутся данные ключей position
thisComp.layer("guide").position.key(thisComp.layer("guide").position.numKeys).time //get the length of a loop
Scale:
n=index;
seedRandom(n, timeless = true);
scalemin=thisComp.layer("control").effect("scalemin")("Slider")
scalemax=thisComp.layer("control").effect("scalemax")("Slider")
temp=random(scalemin, scalemax);
[temp,temp,temp]
Здесь создается видимость перспективы
Orientation:
lookAt(position.valueAtTime(time), position.valueAtTime(time+1/25))
Здесь осуществляется разворот текстового слоя.
Остальные слои, камера и свет создают только коппозицию, то что мы видим на экране.
ЗЫ
Урок конечно хороший для тех кто хорошо в школе учил матаматику, но таких как правило оказывается меньшинство, а большинство предпочитают 3D МАХ, проще и быстрее.