Эффект печатного текста в After Effects с мигающим курсором как на компьютере +проект

Ссылки, описания, дополнительная информация для моих уроков на YouTube
Аватара пользователя

Автор темы
aeplug
Санта
Санта
Сообщения: 2802
Зарегистрирован: 18 мар 2016, 23:20
Откуда: С Ютуба
Благодарил (а): 18 раз
Поблагодарили: 274 раза
Контактная информация:

Эффект печатного текста в After Effects с мигающим курсором как на компьютере +проект


Теги:

Сообщение #1 aeplug » 26 фев 2021, 18:48

text terminal animation.gif
text terminal animation.gif (232.36 КБ) 23603 просмотра
text terminal animation.gif
text terminal animation.gif (232.36 КБ) 23603 просмотра

Как сделать эффект печати текста для видео, словно он набирается на клавиатуре компьютера. Такая анимация текста имеет мигающий компьютерный курсор в конце, именно это отличает ее от известного стандартного эффекта печатающей машинки Typewriter. Вы можете бесплатно скачать мой проект с готовым пресетом текстовой анимации для After Effects и свободно использовать его по своему усмотрению.
https://www.youtube.com/watch?v=9B1HiLkj4Ow

Скачать проект урока для After Effects CC 2020

Содержание с временными метками
00:32 Выражения для печатаемого текста
01:27 Создание композиции
01:49 Создание слайдера
02:25 Создание маркеров слоя
03:01 Анимация появления текста
03:26 Замена курсора
04:07 Работа с частотой мигания курсора
05:08 Отключение мигания на вводе текста
06:19 Замена процентов на номер буквы / индекс


Чтобы сделать такое появление текста в After Effects, я использовал JavaScript выражение, найденное на просторах интернета, с небольшими доработками. Благодаря этому полученный мигающий курсор позволяет настраивать свою частоту мигания и форму по вашему вкусу через переменные в коде. Такой печатный текст в After Effects хорошо подходит для графики в компьютерном стиле и прочих хакерских дизайнах, если вам хочется сделать компьютерный терминал, или нужна командная строка. Эффект набора текста можно заменить на обычный эффект печатной машинки, если использовать пустой курсор, в таком случае буквы будут появляться резко, без анимации прозрачности, как и при печати на бумаге в реальности.

Оригинальное выражение взято отсюда: Reveal text TypeOn + blinking cursor.

Код: Выделить всё

txt = value;
timeIn = thisLayer.inPoint; //seconds
txtSize = text.sourceText.length;
cursor="|";
cursorBlink = 1; //seconds
txtComplete = 100; //percents - add a slider 'txtComplete' on your layer to animate this value
animateText = true;
showCursor = true;
//check if required markers exists
try{
  txtComplete = effect("txtComplete")("Slider");
}catch(e){
  AnimateText = false;
}
//check if required markers exists
try{
  cursorStart = marker.key('cursorStart').time;
  cursorStop = marker.key('cursorStop').time;
}catch(e){
  showCursor = false;
}
if (animateText){
  txtIdx = txtSize / 100 * txtComplete;
  txt = substr(0,txtIdx)
}
if (showCursor){
  F = Math.round( (time + cursorStart) % cursorBlink );
  if ( (time > cursorStart) && (time < cursorStop) &&  (F==1) ) {
    txt += cursor;
  }
}
txt;

Я решил кое-что поменять в оригинальном выражении, чтобы сделать эффект набора текста еще лучше. Для этого я заменил курсор на сплошной блок псевдографики "█", добавил возможность сделать скорость мигания курсора меньше единицы, и еще курсор теперь не будет исчезать/мигать в тот момент, когда текст набирается на экране. Мой вариант кода:

Код: Выделить всё

txt = value;
timeIn = thisLayer.inPoint; //seconds
txtSize = text.sourceText.length;
cursor="█";
cursorBlink = 0.75; //seconds
txtComplete = 100; //percents - add a slider 'txtComplete' on your layer to animate this value
animateText = true;
showCursor = true;
//check if required markers exists
try{
  txtComplete = effect("txtComplete")("Slider");
}catch(e){
  AnimateText = false;
}
//check if required markers exists
try{
  cursorStart = marker.key('cursorStart').time;
  cursorStop = marker.key('cursorStop').time;
}catch(e){
  showCursor = false;
}
if (animateText){
  txt = substr(0,txtComplete)
}
if (showCursor){
  F = (time + cursorStart) % cursorBlink;
  dif = txtComplete.valueAtTime(time)-txtComplete.valueAtTime(time-thisComp.frameDuration*2);
  if ( (time > cursorStart) && (time < cursorStop) &&  (F>cursorBlink/2 || dif != 0))  {
    txt += cursor;
  }
}
txt;





Видео уроки для After Effects http://www.youtube.com/AEPlug
Платные консультации по работе в программах

Теги:


Аватара пользователя

Автор темы
aeplug
Санта
Санта
Сообщения: 2802
Зарегистрирован: 18 мар 2016, 23:20
Откуда: С Ютуба
Благодарил (а): 18 раз
Поблагодарили: 274 раза
Контактная информация:

Кому мало

Сообщение #2 aeplug » 28 фев 2021, 22:33

Подписчики поделились еще несколькими методам создания подобного компьютерного эффекта печатания текста в After Effects с мигающим курсором.
Изображение
Red Giant Type On
https://www.redgiant.com/products/universe/type-on
Плагин от Red Giant из набора Universe. Quickly create computer terminal-style type reveals. Includes tons of options for customization and randomization.
https://www.youtube.com/watch?v=Y-K1iCF1RFE


AM Typewrite Text
https://aescripts.com/am-typewrite-text/
Бесплатный скрипт. Create a typewriter effect for text layers with optional and customizable cursor. It can create new text layers or apply the effect for existing text layers with a single click.
https://www.youtube.com/watch?v=ulgnnwdJ7h0

Видео уроки для After Effects http://www.youtube.com/AEPlug
Платные консультации по работе в программах


Borrris
Нуб
Нуб
Сообщения: 1
Зарегистрирован: 01 мар 2021, 19:05

Ошибка в 31-й строчке.

Сообщение #3 Borrris » 02 мар 2021, 00:59

Доброго времени суток! Это вопрос из комментария на YouTube:
"Сорян за вопрос от "чайника". В 31-й строчке ( dif = txtComplete.valueAtTime(time)-txtComplete.valueAtTime(time-thisComp.frameDuration*2); ) даёт ошибку: valueAtTime is not a function. Что делать?" YouTube не пропускает сторонние ссылки в комментах.
Вот скрин: https://ibb.co/ygX7tpj
Заранее благодарю за помощь!

Аватара пользователя

Автор темы
aeplug
Санта
Санта
Сообщения: 2802
Зарегистрирован: 18 мар 2016, 23:20
Откуда: С Ютуба
Благодарил (а): 18 раз
Поблагодарили: 274 раза
Контактная информация:

Сообщение #4 aeplug » 03 мар 2021, 00:19

У тебя русская версия After Effects, пересоздай слайдер в строке 12, там скорее всего должно быть по русски тогда. Или вот я попробовал прогнать через ExpressionUniversalizer, должно работать на любом языке:
txtComplete = effect("txtComplete")("ADBE Slider Control-0001");

Код: Выделить всё

txt = value;
timeIn = thisLayer.inPoint; //seconds
txtSize = text.sourceText.length;
cursor="█";
cursorBlink = 0.75; //seconds
txtComplete = 100; //percents - add a slider 'txtComplete' on your layer to animate this value
animateText = true;
showCursor = true;

//check if required markers exists
try{
  txtComplete = effect("txtComplete")("ADBE Slider Control-0001");
}catch(e){
  AnimateText = false;
}

//check if required markers exists
try{
  cursorStart = marker.key('cursorStart').time;
  cursorStop = marker.key('cursorStop').time;
}catch(e){
  showCursor = false;
}

if(animateText){
  txt = substr(0,txtComplete)
}

if(showCursor){
  F =(time + cursorStart) % cursorBlink;
  dif = txtComplete.valueAtTime(time)-txtComplete.valueAtTime(time-thisComp.frameDuration*2);
   
  if((time > cursorStart) &&(time < cursorStop) &&(F>cursorBlink/2 || dif != 0))  {
    txt += cursor;
  }
}
txt;
Видео уроки для After Effects http://www.youtube.com/AEPlug
Платные консультации по работе в программах


Вернуться в «Мои уроки»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей