Переход от одного изображения к другому с плавным изменением цветов

09.12.2018 Photoshop 3D

Сейчас рассмотрим один из самых простых переходов от одного изображения к другому (предполагаем, что размеры изображений равны). Заключается он в плавном изменении цветов. Каждый пиксель одного изображения плавно изменяет цвет до тех пор, пока он не совпадёт с цветом соответствующего (т. е. имеющего те же координаты) пикселя второго.

Разумеется, необходимо, чтобы все пиксели первого изображения начинали изменять цвета одновременно и одновременно заканчивали. Тогда визуально трансформация будет представлять собой плавное появление второго изображения на фоне первого с одновременным плавным исчезновением первого.

Традиционно будем писать программу, реализующую трансформацию, на языке C99. Программа будет использовать графическую библиотеку pgraph . Будем предполагать, что читатель имеет о ней представление. Результатом работы программы будут графические файлы формата BMP. Из них мы сконструируем анимацию с помощью видеоредактора VirtualDub.

Перед тем, как перейти к созданию программы, рассмотрим метод, которым мы будем плавно изменять цвета пикселей.

Метод изменения цвета пикселя

Наша анимация будет состоять из начального кадра, содержащего первое (исходное) изображение и конечного кадра, содержащего второе (результирующее) изображение. Между начальным и конечным кадрами будут располагаться кадры, которые мы назовём "промежуточными". Пронумеруем все кадры нашей анимации, включая исходный и конечный, числами от 0 до n . Таким образом, наша анимация будет состоять из n + 1 кадров, n − 1 из которых будут промежуточными.

Теперь поговорим о преобразовании цветов фиксированного пикселя. Начнём с того, что мы будем работать по-отдельности с каждой из трёх цветовых компонент пикселя - красной, зеленой и синей. Яркость каждой из этих компонент в рамках 24-битовой модели, как мы знаем, задаётся целым числом от 0 до 255.

Итак, выберем пиксель в исходном изображении и фиксируем его цветовую компоненту (одну из трёх). Пусть яркость этой компоненты в пикселе равна c 0 , а яркость этой же компоненты в соответствующем пикселе конечного изображения равна c n . Наша задача - плавно перейти от яркости c 0 к яркости c n . Это означает, что мы должны научиться вычислять c m - яркость компоненты пикселя, соответствующего исходному, в кадре с номером m , для любого m , такого, что 0 < m < n , т. е. в промежуточном кадре.

Рассмотрим яркость компоненты пикселя c как функцию от номера кадра m . Поскольку с увеличением m яркость должна изменяться равномерно, данная функция будет линейной. Будем искать её в виде

с (m ) = k m + b ,

где k и b - параметры, подлежащие установлению. Находить их будем из условий c (0) = c 0 и c (n ) = c n . Подставляя каждое из этих условий в приведённое выше равенство, приходим к следующей системе 2-х линейных алгебраических уравнений относительно k и b :

0 k + b = c 0 , n k + b = c n .

Решая систему, получаем:

B = c 0 , k = c n - c 0 n .

Таким образом, искомая функция имеет вид:

C m = c n - c 0 n m + c 0 .

Ясно, что функция при целых значениях аргумента может принимать нецелые значения, но числа c m - целые, поэтому равенство между c m и c (m ), вообще говоря, не имеет места. Для получения c m будем округлять все значения функции c (m ) до ближайшего целого, т. е. положим:

c m = round(c (m )),

где round() - это функция, возвращающая свой аргумент, округлённый до ближайшего целого (если аргумент полуцелый, то округление происходит в большую сторону). Так как второе слагаемое в функции (c 0) - целое, то достаточно округлить только первое слагаемое. В итоге, получаем:

c m = round c n - c 0 n m + c 0 .

Итак, формула для вычисления c m получена. Можно переходить к программированию.

Программа

Создавая программу, мы немного изменим схему построения кадров, рассмотренную в предыдущем разделе. А именно: первые 25 кадров и последние 25 кадров сделаем совпадающими с начальным и конечным изображениями соответственно. Благодаря этому, при демонстрации анимации с частотой 25кадр./c. зритель сможет по одной секунде наблюдать каждое из данных изображений.

Ниже приведён полный код программы, выполняющей трансформацию изображений.

1. #include 2. #include 3. #include "pgraph.h" 4. #define m 100.0 5. 6. #define calc(col) img3->pixels[k].col = \ 7. round((img2->pixels[k].col - img1->pixels[k].col) / m * j) + \ 8. img1->pixels[k].col 9. 10. int main() 11. { 12. image *img1 = load_from_file("image1.bmp" ); 13. image *img2 = load_from_file("image2.bmp" ); 14. image *img3 = create_image(img1->width, img1->height); 15. char filename; 16. int wh = img1->width * img1->height; 17. int i, j = 0 ; 18. 19. for (i = 1 ; i <= 25 ; i++) 20. { 21. sprintf(filename, "results\\%03d.bmp" , i); 22. save_to_file(img1, filename); 23. } 24. //m - 1 промежуточных кадров 25. for (; ++j < m; i++) 26. { 27. for (int k = 0 ; k < wh; k++) 28. { 29. calc(red); 30. calc(green); 31. calc(blue); 32. } 33. sprintf(filename, "results\\%03d.bmp" , i); 34. save_to_file(img3, filename); 35. } 36. 37. for (int k = 1 ; k <= 25 ; k++) 38. { 39. sprintf(filename, "results\\%03d.bmp" , i++); 40. save_to_file(img2, filename); 41. } 42. free(img1); 43. free(img2); 44. free(img3); 45. return 0 ; 46. }

Как мы видим, программа состоит из единственной функции main() .

Считываем исходное и конечное изображения из графических файлов image1.bmp и image2.bmp и сохраняем их в объектах, адресуемых указателями img1 и img2 (стр. 12, 13). Размеры изображений должны совпадать, а содержащие их файлы к моменту выполнения программы должны находиться в директории исполняемого файла.

Создаём динамически пустое изображение тех же размеров, что и предыдущее и сохраняем его адрес в переменной img3 (стр. 14). Этот объект предназначен для хранения генерируемых промежуточных кадров. Кстати, все генерируемые кадры будут сохраняться в виде графических файлов в каталоге results, который должен располагаться в директории исполняемого файла. Называться эти файлы будут 001.bmp, 002.bmp, и т. д. Для хранения относительных имён сохраняемых файлов (включающих имя их корневой директории) предназначен символьный массив filename (см. стр. 15).

Вычисляем количество пикселей в каждом из файлов (стр. 16) и объявляем переменные будущих циклов (стр. 17). Приступаем к генерации кадров: создаём первые 25 кадров, каждый из которых содержит начальное изображение, и сохраняем их в графических файлах (стр. 19-23).

Далее генерируем и сохраняем в файлах m - 1 промежуточных кадров (стр. 25-35); значение макроса m в нашем случае равно 100.0 (см. стр. 4). Значения яркости цветовых компонент каждого пикселя каждого кадра вычисляются с помощью макроса calc() (см. стр. 29-31). Сам макрос определён в строках 6-8; легко заметить, что в макросе "зашита" формула , полученная в предыдущем разделе. Обратите внимание на то, что значение макроса m имеет тип double , а не int , благодаря чему, деление на m является вещественным, а не целочисленным (см. стр. 7).

И ещё одно замечание. Стандартная библиотечная функция round() , которую мы используем (см. стр. 7), выполняет округление немного не так, как математическая функция round() . Первая, в отличие от второй, округляет отрицательные полуцелые числа в меньшую сторону. Но для нас это несущественно.

Наконец, генерируем и записываем в файлы последние 25 кадров, совпадающие с конечным изображением (стр. 37-41). В итоге, получаем 25 начальных кадров, 99 промежуточных и 25 конечных.

Не забываем удалить уже ненужные нам изображения (стр. 42-44).

Результат работы программы

В качестве начального и конечного изображений я выбрал фотографии, уже использовавшиеся нами . На первой из них изображена Кунсткамера:

Кунсткамера

А на второй - подводная лодка:

Подводная лодка

Обе фотографии имеют разрешение 640 на 320 пикселей. Соответствующие файлы image1.bmp (Кунсткамера) и image2.bmp (подводная лодка) можно скачать по ссылке .

Как и положено, эти файлы были размещены в директории исполняемого файла; в ней же находился и каталог results. После выполнения программы в этом каталоге появились 149 графических файлов. Из них с помощью видеоредактора VirtualDub был создан видеоролик продолжительностью почти 6 секунд. Частота кадров ролика - 25 кадр./c, а использовавшийся видеокодек - Huffyuv, сжимающий без потерь. Подробности использования VirtualDub"а приведены в этой и в этой статьях.

Итоговый ролик был загружен на Ютьюб. Вы можете ознакомиться с ним прямо сейчас.

Вторая версия программы

Несложно заметить, что в нашей программе коэффициенты k вычисляются для каждого промежуточного кадра заново, хотя от номера промежуточного кадра они не зависят. Напрашивается сама собой идея оптимизации программы: предварительно, "раз и навсегда" высчитать коэффициенты k и использовать их при генерации промежуточных кадров.

Для хранения коэффициентов нам понадобятся 3 массива (по числу цветовых компонент) элементов типа double . Размер каждого массива должен совпадать с количеством пикселей в генерируемых кадрах.

Ниже приведена новая версия программы:

1. #include 2. #include 3. #include 4. #include "pgraph.h" 5. #define m 100.0 6. 7. int main() 8. { 9. image *img1 = load_from_file("image1.bmp" ); 10. image *img2 = load_from_file("image2.bmp" ); 11. image *img3 = create_image(img1->width, img1->height); 12. char filename; 13. int wh = img1->width * img1->height, size = wh * sizeof (double ); 14. double *kr = malloc(size); 15. double *kg = malloc(size); 16. double *kb = malloc(size); 17. for (int i = 0 ; i < wh; i++) 18. { 19. kr[i] = (img2->pixels[i].red - img1->pixels[i].red) / m; 20. kg[i] = (img2->pixels[i].green - img1->pixels[i].green) / m; 21. kb[i] = (img2->pixels[i].blue - img1->pixels[i].blue) / m; 22. } 23. int i, j = 0 ; 24. //25 кадров, совпадающих с начальным изображением 25. for (i = 1 ; i <= 25 ; i++) 26. { 27. sprintf(filename, "results\\%03d.bmp" , i); 28. save_to_file(img1, filename); 29. } 30. //m - 1 промежуточных кадров 31. for (; ++j < m; i++) 32. { 33. for (int k = 0 ; k < wh; k++) 34. { 35. img3->pixels[k].red = round(kr[k] * j) + img1->pixels[k].red; 36. img3->pixels[k].green = round(kg[k] * j) + img1->pixels[k].green; 37. img3->pixels[k].blue = round(kb[k] * j) + img1->pixels[k].blue; 38. } 39. sprintf(filename, "results\\%03d.bmp" , i); 40. save_to_file(img3, filename); 41. } 42. //25 кадров, совпадающих с конечным изображением 43. for (int k = 1 ; k <= 25 ; k++) 44. { 45. sprintf(filename, "results\\%03d.bmp" , i++); 46. save_to_file(img2, filename); 47. } 48. free(kr); 49. free(kg); 50. free(kb); 51. free(img1); 52. free(img2); 53. free(img3); 54. return 0 ; 55. }

Теперь нам уже потребуется библиотека, содержащая функции для работы с динамической памятью (см. стр. 2). В переменную size заносим количество памяти, требуемой для каждого массива (стр. 13), после чего динамически создаём массивы (стр. 14-16). Для краткости мы не обрабатываем ситуации, при которых память не может быть выделена, т. е. при которых вызовы malloc() возвращают нулевые адреса.

Массивы, адресуемые указателями kr , kg и kb , предназначены для хранения коэффициентов k , соответствующих красной, зелёной и синей компонентам соответственно. Как мы знаем, каждому пикселю изображения соответствует цвет, хранящийся в массиве pixels . Данный массив является полем объекта типа image . Номер элемента массива, содержащего цвет пикселя, будем считать номером этого пикселя. А номером коэффициента k будем считать номер элемента массива, в котором он содержится. Тогда номер коэффициента k равен номеру того пикселя, за изменение яркости соответствующей компоненты которого он отвечает.

Коэффициенты k вычисляются в строках 17-22. Теперь уже яркости компонент пикселей промежуточных кадров находятся с использованием элементов созданных нами массивов (см. стр. 35-37). По окончании работы программы не забываем освободить память, выделенную для массивов (стр. 48-50).

Результат выполнения данной версии программы полностью эквивалентен результату предыдущей. В то же самое время, вторая версия выигрывает у первой по производительности: на тех исходных данных, которые описаны в начале предыдущего раздела, первая выполняется примерно на 8% дольше, чем вторая. Нужно понимать, что достаточно большую часть времени выполнения обеих версий занимают операции записи файлов на диск. Если бы их не было, выигрыш второй версии был бы ещё более существенным.

Можно ли однозначно утверждать, что вторая версия лучше первой? Думаю, что нет. Ведь 2-я версия потребляет гораздо больше памяти, чем первая. Если мы будем исходить из того, что одна переменная типа double занимает 8 байтов памяти, то получим, что, если исходное изображение состоит из p пикселей, то каждый из трёх массивов, содержащих коэффициенты k , требует для своего хранения 8p байтов. А на все 3 массива придётся "потратить" уже 24p байтов.

В случае наших исходных данных для хранения трёх массивов потребуется примерно 5,27 МБ. А если бы исходное изображение имело бы размер 1920 на 1080 пикселей, то потребовалось бы уже примерно 47,46 МБ! При ещё больших размерах, памяти, выделяемой программе операционной системой, может уже и не хватить.

Заключение

Перед нами была поставлена достаточно простая задача, которая имеет весьма очевидное решение. Неудивительно, что мы его без проблем построили алгоритм генерации промежуточных кадров и успешно реализовали.

Вы узнаете:

  • Как изменить продолжительность анимации и сделать слайдшоу с переходами.
  • Как устроена Timeline (Временная шкала) и как расставлять ключевые кадры.
  • Как передвигать индикатор времени и включать секундомер.
  • Как подрезать один или несколько слоев. Как анимировать стили слоя.
  • Как добавить рисованную анимацию, мерцание и анимировать маску.
  • Как анимировать 3D объекты.
  • Как сохранить анимацию.

Урок состоит из следующих разделов:

1. Обучающее видео.
2. Переключение на временную шкалу.
3. Продолжительность и частота кадров анимации.
4. Параметры временной шкалы.
5. Анимация плавного перехода от одного изображения к другому.

9. Редактируем положение ключевых кадров.
10. Подрезка слоев.

12. Использование кальки.
13. Анимация маскирования.
14. Добавляем титры.

16. Анимация освещения.
17. Сохранение анимации.
18. Анимация 3D объектов.
19. Размеры баннеров.
20. Вопросы.
21. Домашнее задание.

Переключение на временную шкалу

Начиная с Photoshop CS3 к обычной покадровой анимации добавилась временная шкала. Это намного расширило возможности программы для создания анимации и видео. В этом режиме каждый слой палитры Layers (Слои) располагается на своей временной дорожке. Любые изменения палитры Layers (Слои) тут же отображаются в панели Анимации. Анимационная панель стала похожа на облегченную панель программы Adobe After Effects.

При создании нового документа в разделе Preset (Набор) выберите Film & Video (Фильмы и видео). Проследите, чтобы цветовой режим был RGB, разрешение 72 ppi, битовая глубина 8 бит/канал. Нажмите Advanced (Дополнительно) и выберите Pixel Aspect Ratio (Попиксельная пропорция) Square (Квадратные пикселы), если нет веских причин указать другой формат.

Для переключения между покадровой и временной шкалой служит кнопка или
(вид кнопки зависит от вида анимационной панели временная или покадровая). Или же, щелкнув по кнопке в панели анимации, выберите пункт Convert to Timeline (Преобразовать во временную шкалу). Следует иметь в виду: при переходе из анимации по временной шкале в покадровую анимацию существует вероятность потери ключевых кадров. Сама анимация при этом остается без изменений.

Для открытия меню щелкните по кнопке в правом верхнем углу панели анимации. Это меню отличается от того, которое мы открывали во время работы с покадровой анимацией.

Продолжительность и частота кадров анимации

После выбора пункта Document Settings (Параметры документа) открывается окно

настроек. Здесь вы можете изменить продолжительность анимации. Следует иметь в виду, что уменьшение продолжительности ранее созданного видео или анимации приведет к удалению кадров в конце документа. Ключевые кадры, попавшие в интервал уменьшения, тоже будут удалены.

При создании нового документа продолжительность временной шкалы по умолчанию устанавливается равной 10 секундам, а частота зависит от выбранного параметра Size (Размер) документа.

При выборе документа отличного от Film & Video (Фильмы и видео) – 30 кадров/сек.

Видео формата PAL - 25 кадров/ сек.

Видео формата NTSC - 29,97 кадров/ сек.

Кинофильм - 24 кадр/сек.

DVD-видео – может быть 25; 29,97 и 23,976.

Видео для Web (устанавливается самостоятельно)- от 10 до 15 кадр/сек.

Параметры временной шкалы

Предлагаю разобраться с временной шкалой на примере слайд-шоу. Для примера я выбрала несколько работ учеников к уроку «Инструменты выделения…». Предварительно я задала всем изображениям одинаковый размер 800х600 и разрешение 72.

Откройте файл слайд шоу.psd. В палитре Layers (Слои) находятся 8 слоев, включая фоновый слой. В панели Animation (Анимация) находится 7 слоев.

На Timeline (Временной шкале) в каждом слое есть анимируемые параметры:

Position (Позиция), Opacity (Непрозрачность), Style (Стиль) и Global Lighting (Глобальное освещение). Чтобы их увидеть, щелкните по стрелочке слева от слоя.

Вот так выглядит временная шкала анимации:

Ключевой кадр.

Enable Stopwatch (Включить секундомер).

Анимация плавного перехода от одного изображения к другому

Чтобы изменить любой из этих параметров установите индикатор времени на начальную точку и нажмите значок - появится ключевой кадр. Переместите индикатор времени на конечную точку и измените нужные параметры в палитре Layers (Слои) – появится второй ключевой кадр.

Откройте слой Ольга Ж . В нулевой точке времени нажмите на значок секундамера слева от Opacity (Непрозрачность) – появится ключевой кадр . Передвиньте индикатор времени на значение 01:00f. В палитре Layers (Слои) уменьшите значение непрозрачности до 0%. В месте пересечения индикатора текущего времени и слоя Opacity (Непрозрачность) появится второй ключевой кадр. Если сейчас нажать кнопку Play (Запуск анимации) или просто подвигать индикатор текущего времени, то вы заметите как первое изображение плавно откроет второй слой.

Перейдите к слою Надежда Д. Нажмите на значок секундомера слева от Position (Позиция). Передвиньте индикатор времени до значения 02:00.

Кстати,установить индикатор текущего времени можно более точным способом: Дважды кликните по строчке с цифрами, обозначающими время. Откроется окно Set Current Time (Задать точное время). Последние две цифры обозначают кадры в секунду. Предпоследние секунды. Если вам нужно точно рассположить индикатор времени на 2 секунды, то в этом поле должно быть написано: 0:00:02:00. Можете вручную исправить цифры, а можете ввести в это поле 60. Почему именно 60? Т.к. в данном документе по умолчанию стоит частота 30 кадров в сек, то две секунды составят 60 кадров. Если щелкнуть по значению текущего времени, удерживая нажатой клавишу Alt, то произойдет переключение между временным кодом и кадрами.

Итак, нужное время установлено. Выберите в панели инструментов Move (Перемещение). Сдвиньте слой Надежда Д по диагонали вправо и вниз за пределы изображения. Прокрутите анимацию.

Слой будет плавно уходить в правый нижний угол, открывая нижележащее изображение.

Переключитесь на слой Таня Р . Давайте сделаем модный переход через вспышку белого цвета. Этот эффект часто используется в рекламе для концентрации внимания.


Установите индикатор времени на 0:00:02:00. Нажмите на значок секундомера слева от Style (Стиль). Зайдите в меню и выберите пункт Cope Keyframe (Скопировать ключевой кадр). Переместите индикатор времени на отметку 2 секунды 15 кадров (0:00:02:15). В меню анимации выберите пункт Past Keyframe (Вставить ключевой кадр). Задайте время 0:00:02:20. Перейдите в палитру Layers (Слои). Откройте стили слоя двойным щелчком по слою Таня Р. Отметьте галочкой Color overlay (Наложение цвета). Зайдите в настроики и измените цвет на белый. Вернитесь в панель Анимации (время 0:00:02:20)и нажмите на значок секундомера слева от Opacity (Непрозрачность). Передвиньте индикатор времени до значения 03:00. В палитре слои снизьте непрозрачность до 0.

В следующем слое (Юля Б) изменим позицию так, чтобы изображение откатывалось направо. Поставьте индикатор времени на отметку 3 сек. Создайте ключевой кадр, нажав на значок слева от Position (Позиция). Перейдите на отметку 4 сек. Выберите в панели инструментов Move (Перемещение). Сдвиньте слой вправо за пределы холста, удерживая клавишу Shift. Появится новый ключевой кадр.

Редактируем положение ключевых кадров

Проиграйте анимацию. В слоях Надежда Д и Юля Б переход начинается слишком рано. Мы не успеваем рассмотреть изображение, а оно уже начинает двигаться. Чтобы задержать внимание на картинке сдвиньте первые ключевые кадры на 15 кадров вправо. Это можно сделать простым перетаскиванием. Нажмите на ключевой кадр, чтобы он стал желтым. Желтый цвет говорит о том, что он выделен. Сместите индикатор времени на 15 кадров вправо. Передвиньте ключевой кадр до пересечения с индикатором времени. Теперь движение начнется чуть позже.

Подрезка слоев

Следующий слой (Елена И) подрежьте. Сначала установите индикатор времени на 5 сек. Затем наведите курсор на конец слоя. Курсор изменит свой вид на двухстороннию стрелочку. Зажмите левую кнопку мыши и потяните край влево до пересечения с индикатором. Запустив анимацмю вы увидите, что слой резко исчезнет на 5 секунде, открыв нижележащий слой. Одновременно можно подрезать несколько слоев, если предварительно выделить их при помощи Shift или Ctrl.

К сведению: удерживая клавишу Shift при нажатии кнопок и происходит переход на следующее/предыдущее целое значение секунд или кадров временной шкалы. В нашем случае индикатор, стоящий на 0 сек, переместится на 1 сек. или на 30 кадр.

К следующему слою добавьте рисованную анимацию. Для этого Перейдите на слой

Олеся Т в панели анимация. Затем в меню Layers (Слои) – Video Layers (Слои видео) – (Создать пустой видео слой). Установите время на 05:00 сек. В панели инструментов выберите Blur (Размытие) . Интенсивность 100%, диаметр 1100 и отметьте галочкой (образцы со всех слоев). Сделайте около 15 круговых движений по изображению.

Передвиньте индикатор времени на 05:01. Размойте изображение инструментом Blur (Размытие) с теми же настройками, но движений мышкой сделайте поменьше: около 10 раз. Передвиньте индикатор времени на 05:02. Повторите вышеописанные действия (круговые движения мышкой уменьшите до 5 раз).

На отметке 05:03 аналогично размойте изображение за 2 круговых движения мышкой. Подрежьте слой до значения времени 06:00.


Использование кальки

Для удобства работы иногда можно использовать кальку. Для этого нажмите кнопку (Переключение кальки). Чтобы отключить кальку повторно нажмите на эту кнопку. Настроить кальку можно, выбрав пункт Параметры кальки в меню анимации .

Анимация маскирования

Остался последний слой Светана П . Примените к нему маску, нажав на значок внизу палитры Layers (Слои).


Если на слое имеется маска, то добавляются еще два параметра – Layer Mask Position (Положение слой маски) и Layer Mask Enable (Включить слой маску) . Установите время на 06:00. При анимации перемещения слоя с маской обязательно отметьте обе строчки: и Position (Позиция) и Layer Mask Position (Положение слой маски). В противном случае маска останется неподвижной, а слой сдвинется.

Создайте ключевые кадры в параметрах Layer Mask Position (Положение слой маски) и Layer Mask Enable(Включить слой маску).

Перейдите в палитру Layers (Слои). Добавьте маску к слою Светлана П, щелкнув по значку . Залейте маску черным цветом. Между миниатюрами слоя и маски уберите значок цепочки , чтобы разорвать связь между ними. Передвиньте индикатор времени на отметку 06:05. Выберите инструмент перемещение и сдвиньте маску вправо так, чтобы появилось изображение.

На отметке времени 07:00 обрежьте длину слоя Светлана П.

К фоновому слою примените фильтр Clouds (Облака). Предварительно установите цвета белый и голубой.

Добавьте стиль слоя Gradient Overlay (Наложение градиента).

Добавляем титры

Можете добавить титры в конце анимации. Возьмите инструмент Type (Текст). Напишите слово Конец. Растрируйте слой. Придайте ему стили слоя: тиснение, наложение цвета и обводку. Придется подрезать начало слоя до отметки 07:00, чтобы титры не вылезали перед началом работы слоя с маской.

Необходимо также укоротить продолжительность анимации. Для этого в меню анимации выберите пункт Document Settings (Параметры документа). Установите продолжительность 08:00.

Вернемся к видеослою. На Видеослое можно не только размывать изображение, но и размазывать инструментом smudge (палец), клонировать инструментом штамп, заливать, а также рисовать любыми кисточками.

Добавим мерцание. Выберите кисть № 70 белого цвета с настройками как на рисунке снизу. Начиная с 06:05, рисуйте на видеослое этой кистью. Пропустите один кадр и снова сделайте несколько штрихов. Продолжайте до конца слоя.

Теперь на видео слое есть участок с размытием и участок с мерцанием, но эффекты применены к разным изображениям.

Анимация освещения

Добавим анимацию Global Light (Глобального освещения).

Глобальное освещение можно настроить в стилях слоя: Drop Shadow (Тень), Inner Shadow (Внутренняя тень) и Bevel and Emboss (Тиснение).

Установите индикатор времени на отметку 07:00. Создайте ключевой кадр в слое Титры, нажав на значок

секундомера слева от Global Lighting (Глобальное освещение). Переместите индикатор на отметку 07:29. Перейдите в палитру Layres (Слои). Войдите в стили слоя Тиснение. Проверьте, чтобы стояла галочка напротив Use Global Light (Глобальное освещение). Измените значение параметра Угол (-90) и Высота (40).

Можете установить другие значения, передвигая отметку внутри круга. В результате получится красивый перелив по контуру букв. Этот анимационный эффект можно использовать для имитации быстрого изменения времени суток. Тень будет изменять свое положение относительно солнца.

Вот и все. Можно переходить к сохранению анимации. Но перед этим мне хотелось бы добавить пару слов. Не стоит для слайд-шоу применять так много разных эффектов, как это сделала я. Мне хотелось максимально познакомить вас с настройкам, из-за этого получился перебор с эффектами. Нельзя анимировать эффекты и фильтры. У корректирующих слоев нельзя анимировать настройки коррекции, например яркость, насыщенность, цвет и т.д.

Сохранение анимации


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

Cохранитe в формате PSD для последующей доработки или для импорта в Adobe After Effects.

Чтобы записать видео воспользуйтесь меню File (Файл) – Export (Экспортировать) –Render Video (Просмотреть видео…).

В этом окне введите имя файла, укажите путь и нажмите на кнопку Настройки…

Нажмите кнопку Параметры. Выбирите тип сжатия из выпадающего списка: Фото - JPEG. Затем ОК. И еще раз ОК. Render (Рендеринг).

Анимация 3D объектов.

В этом уроке мы только слегка затронем тему 3D объектов. Для более подробного изучения будет отдельный урок. Анимация 3D объектов стала возможна начиная с версии Photoshop CS4. Откройте файл Настя.jpg. Чтобы анимирывать обычный слой как 3D, выберите меню 3D - New 3D Postcard from Layer (Новая открытка из 3D слоя). Или меню 3D – New Figur from Layer (Новая фигура из слоя) – (Шляпа). Можно вместо шляпы выбрать любой другой объект из списка. Обратите внимание на то как изменилась миниатюра слоя.

Задайте продолжительность анимации 1 сек или 10 кадров. Для этого в меню выберите пункт Document Settings (Параметры документа).

Создайте еще один слой ниже 3D слоя. И залейте его каким-нибудь цветом при помощи инструмента Paint Bucket (Заливка / ведерко).

В панели анимация появятся дополнителтные пункты:

3D Object Position (Пложение 3D-объекта),

3D Camera Position(Положение 3D-камеры),

3D Render Settings(Настройки 3D-рендеринга),

3D Cross Section (3D поперечное сечение).


В строке 3D Object Position (Пложение 3D-объекта) нажмите на значок секундомера, появится первый ключевой кадр. Переместите индикатор на 9 кадр. Выберите в панели инструментов - Rotate the 3D Object (Поворот). Наведите на объект, зажмите левую кнопку мыши – шляпа начнет вращаться. Все! Можно сохранять анимацию.

Размеры баннеров:

300 x 250 прямоугольник средней величины

250 x 250 всплывающий квадрат

240 x 400 вертикальный прямоугольник

336 x 280 большой прямоугольник

180 x 150 прямоугольник

468 x 60 длинный баннер

234 x 60 половина длинного баннера

88 x 31 микро полоса

120 x 90 кнопка 1

120 x 60 кнопка 2

140 х 75 кнопка 3

120 x 240 вертикальный баннер

125 x 125 квадратная кнопка

728 x 90 ведущий стенд

160 x 600 широкий небоскреб

120 x 600 небоскреб

300 x 600 объявление на полстраницы

Вопросы:

  1. Какие параметры нельзя анимировать по временной шкале?

Style (Cтиль).

Global Lighting (Глобальное освещение).

Layer Mask Position (Положение слой маски).

3D Object Position (Пложение 3D-объекта).

Scale (Масштаб).

  1. Как установить индикатор времени с точностью до одного кадра.

Дважды кликнуть по строчке с цифрами, обозначающими время.

Нажать значок секундамера.

В меню панели анимация выбрать пункт Document Settings (Параметры документа).

Домашнее задание:

1) Запишите небольшое слайд-шоу с использованием временной шкалы. Картинки можете взять из урока или выбрать свои.

2) Придумайте любой баннер или видео-открытку. Проявите свою фантазию. Пусть это будет небольшая анимация, но своя.

Вам потребуется Photoshop 7 или выше.

1.Открываем изображения которые нам нужно соеденить ФАЙЛ - ОТКРЫТЬ. В нашем примере мы взяли картинку с собачкой и картинку с цветами.

2.При помощи инструмента "Перемещение" перетаскиваем изображение с собачкой в изображение с цветами (просто кликаем левой кнопкой мыши по изображению с собакой и удерживая кнопку тянем в изображение с цветами, как только указатель примет вид белой стрелки с пунктирным квадратиком и плюсиком отпускаем кнопку мыши и изображение с собакой появится в документе с цветами).

3.При помощи трансформации размещаем собаку там где нам нужно, в случае необходимости уменьшаем или увеличиваем картинку.

4.Теперь нажимаем на кнопку "Добавить слой-маску" в нижней части палитры СЛОИ.

5.устанавливаем основным черный, а фоновым белый цвет. Активируем инструмент"Градиент", выбираем РАДИАЛЬНЫЙ градиент "от основного к фоновому".

6.Проведите градиентом из середины изображения вправо. Длина прямой регулирует видимость изображений относительно друг друга. Экспериментируйте, пока не добьетесь нужного эффекта.

7.Вы можете для своих изображений выбрать другой градиент, или воспользоваться инструментом "Кисть", чтобы добавить или скрыть некоторые участки (черный цвет скрывает изображение, белый востанавливает видимость).