1 added
1 removed
Original
2026-01-01
Modified
2026-02-21
1
<p><a>#статьи</a></p>
1
<p><a>#статьи</a></p>
2
<ul><li>8 фев 2022</li>
2
<ul><li>8 фев 2022</li>
3
<li>0</li>
3
<li>0</li>
4
</ul><p>Разбираемся в более продвинутых понятиях и инструментах.</p>
4
</ul><p>Разбираемся в более продвинутых понятиях и инструментах.</p>
5
<p>Иллюстрация: Busbus / Rawpixel / Image from Pngegg / Pngegg / Annie для Skillbox Media</p>
5
<p>Иллюстрация: Busbus / Rawpixel / Image from Pngegg / Pngegg / Annie для Skillbox Media</p>
6
<p>Считает игры произведениями искусства и старается донести эту идею до широких масс. В свободное время стримит, рисует и часами зависает в фоторежимах.</p>
6
<p>Считает игры произведениями искусства и старается донести эту идею до широких масс. В свободное время стримит, рисует и часами зависает в фоторежимах.</p>
7
<p>Специалист по компьютерной графике, оптимизации и автоматизации проектов. Автор серии уроков по Blender.</p>
7
<p>Специалист по компьютерной графике, оптимизации и автоматизации проектов. Автор серии уроков по Blender.</p>
8
<p>Год назад в рамках своего<a>YouTube-канала</a>Андрей записал подробный<a>курс</a>по Blender, в котором работает более семи лет. Обучение начинается с основ, рассчитанных в первую очередь на новичков, но последующие уроки могут быть интересны и для продвинутых пользователей - в них Андрей затрагивает скрытые возможности софта. Сам материал записывался в версии программы 2.90.1, но знания актуальны как для ранних версий (от 2.80), так и для последней (3.0.0).</p>
8
<p>Год назад в рамках своего<a>YouTube-канала</a>Андрей записал подробный<a>курс</a>по Blender, в котором работает более семи лет. Обучение начинается с основ, рассчитанных в первую очередь на новичков, но последующие уроки могут быть интересны и для продвинутых пользователей - в них Андрей затрагивает скрытые возможности софта. Сам материал записывался в версии программы 2.90.1, но знания актуальны как для ранних версий (от 2.80), так и для последней (3.0.0).</p>
9
<p>Делимся основными тезисами пятого видеоурока, в котором изложены основы анимации с помощью ключевых кадров, драйверов и модификаторов. С предыдущими уроками, посвящёнными структуре объектов, оптимизации и рандомизации через инструменты Blender и скрипты Python, можно ознакомиться по <a>ссылке</a>.</p>
9
<p>Делимся основными тезисами пятого видеоурока, в котором изложены основы анимации с помощью ключевых кадров, драйверов и модификаторов. С предыдущими уроками, посвящёнными структуре объектов, оптимизации и рандомизации через инструменты Blender и скрипты Python, можно ознакомиться по <a>ссылке</a>.</p>
10
Пятый урок по Blender от Андрея Соколова<p>В Blender существует несколько способов анимации. Самый очевидный - анимация при помощи ключевых кадров или кейфреймов (Keyframe). В нижнем окне программы по умолчанию открыт таймлайн - временная линия, на которой можно фиксировать различные параметры объектов в виде ключевых кадров.</p>
10
Пятый урок по Blender от Андрея Соколова<p>В Blender существует несколько способов анимации. Самый очевидный - анимация при помощи ключевых кадров или кейфреймов (Keyframe). В нижнем окне программы по умолчанию открыт таймлайн - временная линия, на которой можно фиксировать различные параметры объектов в виде ключевых кадров.</p>
11
Расположение таймлайна в Blender 3D. Скриншот: Леон Балбери для Skillbox Media<p>Попробуем зафиксировать положение куба на кадре 1. Выбираем объект, нажимаем<strong>I</strong> - горячую клавишу<strong>Меню вставки ключевых кадров</strong>(Insert Keyframe Menu) - и выбираем<strong>Положение</strong>(Location). На таймлайне добавится кейфрейм со значением "0, 0, 0".</p>
11
Расположение таймлайна в Blender 3D. Скриншот: Леон Балбери для Skillbox Media<p>Попробуем зафиксировать положение куба на кадре 1. Выбираем объект, нажимаем<strong>I</strong> - горячую клавишу<strong>Меню вставки ключевых кадров</strong>(Insert Keyframe Menu) - и выбираем<strong>Положение</strong>(Location). На таймлайне добавится кейфрейм со значением "0, 0, 0".</p>
12
Значение положения объекта отобразится на панели "Трансформация" (Transform). Скриншот: Леон Балбери для Skillbox Media<p>Переходим на 50-й кадр, перемещаем куб куда-нибудь в сторону, ещё раз нажимаем<strong>I</strong>и выбираем<strong>Положение</strong>(Location), фиксируя новые координаты. Запускаем воспроизведение анимации в таймлайне (<strong>Space</strong>) и видим передвижение объекта. Программа самостоятельно высчитывает, как он двигается между двумя заданными ключевыми кадрами.</p>
12
Значение положения объекта отобразится на панели "Трансформация" (Transform). Скриншот: Леон Балбери для Skillbox Media<p>Переходим на 50-й кадр, перемещаем куб куда-нибудь в сторону, ещё раз нажимаем<strong>I</strong>и выбираем<strong>Положение</strong>(Location), фиксируя новые координаты. Запускаем воспроизведение анимации в таймлайне (<strong>Space</strong>) и видим передвижение объекта. Программа самостоятельно высчитывает, как он двигается между двумя заданными ключевыми кадрами.</p>
13
Воспроизведение анимации с помощью ключевых кадров<p>Движение производится плавно, поскольку по умолчанию при добавлении кейфреймов интерполяция между ними представлена в виде кривой Безье. Это визуально отображено в <strong>Редакторе графов</strong>(Graph Editor).</p>
13
Воспроизведение анимации с помощью ключевых кадров<p>Движение производится плавно, поскольку по умолчанию при добавлении кейфреймов интерполяция между ними представлена в виде кривой Безье. Это визуально отображено в <strong>Редакторе графов</strong>(Graph Editor).</p>
14
Редактор графов во вкладке "Тип редактора". Скриншот: Леон Балбери для Skillbox Media<p>Редактор графов похож на таймлайн, но в нём отображена более детальная информация о ключевых кадрах и том, как они интерполированы - то есть как кривая отображается на графике.</p>
14
Редактор графов во вкладке "Тип редактора". Скриншот: Леон Балбери для Skillbox Media<p>Редактор графов похож на таймлайн, но в нём отображена более детальная информация о ключевых кадрах и том, как они интерполированы - то есть как кривая отображается на графике.</p>
15
Кривая Безье в редакторе графов. Чтобы масштабировать и перемещать рабочее пространство по своему усмотрению, используйте комбинации Ctrl + СКМ и Shift + СКМ. Скриншот: Леон Балбери для Skillbox Media<p>Как уже упоминалось ранее, в качестве режима интерполяции по умолчанию используется кривая Безье - это означает, что объект медленно начинает движение, разгоняется и постепенно замедляется к концу анимации. Для наглядности переведём<strong>Центр трансформации</strong>(Pivot Point) в режим<strong>Индивидуальные центры</strong>(Individual Centres) и сделаем кейфреймы чуть шире при помощи клавиши<strong>S</strong>. Это отразится на графике, и распределение скорости движения объекта между кейфреймами изменится. С этими настройками также можно экспериментировать.</p>
15
Кривая Безье в редакторе графов. Чтобы масштабировать и перемещать рабочее пространство по своему усмотрению, используйте комбинации Ctrl + СКМ и Shift + СКМ. Скриншот: Леон Балбери для Skillbox Media<p>Как уже упоминалось ранее, в качестве режима интерполяции по умолчанию используется кривая Безье - это означает, что объект медленно начинает движение, разгоняется и постепенно замедляется к концу анимации. Для наглядности переведём<strong>Центр трансформации</strong>(Pivot Point) в режим<strong>Индивидуальные центры</strong>(Individual Centres) и сделаем кейфреймы чуть шире при помощи клавиши<strong>S</strong>. Это отразится на графике, и распределение скорости движения объекта между кейфреймами изменится. С этими настройками также можно экспериментировать.</p>
16
Увеличение кейфреймов в редакторе графов<p>Рассмотрим другие режимы интерполяции. Полный список вызывается клавишей<strong>T</strong>.</p>
16
Увеличение кейфреймов в редакторе графов<p>Рассмотрим другие режимы интерполяции. Полный список вызывается клавишей<strong>T</strong>.</p>
17
<p><strong>Линейно</strong>(Linear) - объект движется равномерно, без замедлений и ускорений. Этот режим может оказаться удобным для таких задач, как, например, анимация вращения Земли вокруг своей оси.</p>
17
<p><strong>Линейно</strong>(Linear) - объект движется равномерно, без замедлений и ускорений. Этот режим может оказаться удобным для таких задач, как, например, анимация вращения Земли вокруг своей оси.</p>
18
Анимация в режиме интерполяции "Линейно"<p><strong>Постоянно</strong>(Constant) - промежуточное значение между кадрами отсутствует. Подойдёт для стоп-моушн-анимации.</p>
18
Анимация в режиме интерполяции "Линейно"<p><strong>Постоянно</strong>(Constant) - промежуточное значение между кадрами отсутствует. Подойдёт для стоп-моушн-анимации.</p>
19
Анимация в режиме интерполяции "Постоянно"<p>Рассмотрим режимы из списка<strong>Динамические эффекты</strong>(Dynamic Effects).</p>
19
Анимация в режиме интерполяции "Постоянно"<p>Рассмотрим режимы из списка<strong>Динамические эффекты</strong>(Dynamic Effects).</p>
20
<p><strong>Отскоки</strong>(Bounce) - эффект затухающего подпрыгивания объекта после его падения.</p>
20
<p><strong>Отскоки</strong>(Bounce) - эффект затухающего подпрыгивания объекта после его падения.</p>
21
Анимация в режиме интерполяции "Отскоки"<p><strong>Упругое</strong>(Elastic) - эффект струны, которую натянули, а затем отпустили.</p>
21
Анимация в режиме интерполяции "Отскоки"<p><strong>Упругое</strong>(Elastic) - эффект струны, которую натянули, а затем отпустили.</p>
22
Анимация в режиме интерполяции "Упругое"<p><strong>Сзади</strong>(Back) - объект перелетает чуть дальше заданной точки и возвращается к ней.</p>
22
Анимация в режиме интерполяции "Упругое"<p><strong>Сзади</strong>(Back) - объект перелетает чуть дальше заданной точки и возвращается к ней.</p>
23
Анимация в режиме интерполяции "Сзади"<p>Попробуем анимировать другие параметры, например вращение. Задаём для объекта исходный угол вращения, вызываем меню через горячую клавишу<strong>I</strong>, выбираем<strong>Вращение</strong>(Rotation). Затем повторяем то же самое для другого кадра.</p>
23
Анимация в режиме интерполяции "Сзади"<p>Попробуем анимировать другие параметры, например вращение. Задаём для объекта исходный угол вращения, вызываем меню через горячую клавишу<strong>I</strong>, выбираем<strong>Вращение</strong>(Rotation). Затем повторяем то же самое для другого кадра.</p>
24
<p><strong>примечание</strong></p>
24
<p><strong>примечание</strong></p>
25
<p><strong>Меню вставки ключевых кадров</strong>необязательно вызывать во вьюпорте. Можно навести курсор на нужный параметр во вкладке<strong>Трансформация</strong>(Transform), при необходимости изменить значение и нажать<strong>I</strong>. Параметр станет жёлтым, оповещая, что изменения зафиксировались в ключевом кадре.</p>
25
<p><strong>Меню вставки ключевых кадров</strong>необязательно вызывать во вьюпорте. Можно навести курсор на нужный параметр во вкладке<strong>Трансформация</strong>(Transform), при необходимости изменить значение и нажать<strong>I</strong>. Параметр станет жёлтым, оповещая, что изменения зафиксировались в ключевом кадре.</p>
26
Быстрая настройка вращения для ключевого кадра<p>Анимация с использованием ключевых кадров работает не только со стандартными параметрами объектов (положение, вращение, масштаб), но и с настройками материалов, модификаторов и прочих инструментов программы.</p>
26
Быстрая настройка вращения для ключевого кадра<p>Анимация с использованием ключевых кадров работает не только со стандартными параметрами объектов (положение, вращение, масштаб), но и с настройками материалов, модификаторов и прочих инструментов программы.</p>
27
<p>Изучаете Blender? Присмотритесь к курсу Skillbox "<a>3D-художник</a>". Проходя курс, вы научитесь работать с Autodesk Maya, Blender, Houdini, Substance Painter и Photoshop с нуля до профессионального уровня.</p>
27
<p>Изучаете Blender? Присмотритесь к курсу Skillbox "<a>3D-художник</a>". Проходя курс, вы научитесь работать с Autodesk Maya, Blender, Houdini, Substance Painter и Photoshop с нуля до профессионального уровня.</p>
28
<p>Драйверы в Blender дают возможность задавать зависимости каких-либо параметров одного объекта от определённых параметров другого. Рассмотрим это на практике.</p>
28
<p>Драйверы в Blender дают возможность задавать зависимости каких-либо параметров одного объекта от определённых параметров другого. Рассмотрим это на практике.</p>
29
<p>Удаляем прошлый объект, создаём новый куб и пустышку<strong>Оси</strong>(Plain Axes), с которой мы работали<a>во втором уроке</a>. Перемещаем её в сторону по оси X (<strong>G + X</strong>), выделяем куб и, кликнув правой кнопкой мыши по одному из трёх параметров<strong>Вращения</strong>(Rotation) на панели<strong>Трансформация</strong>(Transform), выбираем пункт<strong>Добавить драйвер</strong>(Add Driver).</p>
29
<p>Удаляем прошлый объект, создаём новый куб и пустышку<strong>Оси</strong>(Plain Axes), с которой мы работали<a>во втором уроке</a>. Перемещаем её в сторону по оси X (<strong>G + X</strong>), выделяем куб и, кликнув правой кнопкой мыши по одному из трёх параметров<strong>Вращения</strong>(Rotation) на панели<strong>Трансформация</strong>(Transform), выбираем пункт<strong>Добавить драйвер</strong>(Add Driver).</p>
30
Опция "Добавить драйвер" в открывшемся меню. Скриншот: Леон Балбери для Skillbox Media<p>Появится окно с настройками драйвера (всплывающее предупреждение игнорируем).<strong>Драйверы поддерживают однострочные выражения на языке Python, но по сравнению с полноценным скриптингом их функциональность сильно ограничена. В ряде случаев использование драйверов может привести к нестабильной работе</strong> - например, анимированные с их помощью объекты при рендере останутся статичными или будут двигаться не так, как при воспроизведении анимации во вьюпорте. Тем не менее драйверы удобны для совершения простых операций.</p>
30
Опция "Добавить драйвер" в открывшемся меню. Скриншот: Леон Балбери для Skillbox Media<p>Появится окно с настройками драйвера (всплывающее предупреждение игнорируем).<strong>Драйверы поддерживают однострочные выражения на языке Python, но по сравнению с полноценным скриптингом их функциональность сильно ограничена. В ряде случаев использование драйверов может привести к нестабильной работе</strong> - например, анимированные с их помощью объекты при рендере останутся статичными или будут двигаться не так, как при воспроизведении анимации во вьюпорте. Тем не менее драйверы удобны для совершения простых операций.</p>
31
<p><strong>примечание</strong></p>
31
<p><strong>примечание</strong></p>
32
<p>Функционал Python в драйверах ограничен встроенными методами языка Python и содержанием нескольких импортированных в пространство драйверов модулей:<strong>math</strong>,<strong>mathutils</strong>,<strong>bpy</strong>. Для тех, кто разбирается в Python, выражение, которое мы здесь пишем, - это, по сути, лямбда-функция, со всеми вытекающими последствиями. Полный список доступных классов и методов можно посмотреть в <strong>Консоли Python</strong>(Python Console) (см.<a>третий урок</a>) через автозаполнение в словаре<strong>bpy.app.driver_namespace</strong>. С помощью скриптов Python в этот словарь можно добавлять и другие функции.</p>
32
<p>Функционал Python в драйверах ограничен встроенными методами языка Python и содержанием нескольких импортированных в пространство драйверов модулей:<strong>math</strong>,<strong>mathutils</strong>,<strong>bpy</strong>. Для тех, кто разбирается в Python, выражение, которое мы здесь пишем, - это, по сути, лямбда-функция, со всеми вытекающими последствиями. Полный список доступных классов и методов можно посмотреть в <strong>Консоли Python</strong>(Python Console) (см.<a>третий урок</a>) через автозаполнение в словаре<strong>bpy.app.driver_namespace</strong>. С помощью скриптов Python в этот словарь можно добавлять и другие функции.</p>
33
<p>У драйверов есть параметр<strong>Тип</strong>(Type), то есть способ, с помощью которого драйвер вычисляет итоговое значение. В этом уроке мы рассмотрим тип<strong>Скриптовое выражение</strong>(Scripted Expression).</p>
33
<p>У драйверов есть параметр<strong>Тип</strong>(Type), то есть способ, с помощью которого драйвер вычисляет итоговое значение. В этом уроке мы рассмотрим тип<strong>Скриптовое выражение</strong>(Scripted Expression).</p>
34
Выбор объекта, от параметров которого будет зависеть куб. Скриншот: Леон Балбери для Skillbox Media<p>Зададим переменную для куба. В качестве<strong>Объекта</strong>(Object) выбираем<strong>Пустышку</strong>(Empty). Напротив пункта (x) изменяем название с <em>"переменной"</em>(в английской версии<em>var</em>) на <em>empty</em>. В <strong>Выражении</strong>(Expression) также заменяем<em>var</em>на <em>empty</em>.</p>
34
Выбор объекта, от параметров которого будет зависеть куб. Скриншот: Леон Балбери для Skillbox Media<p>Зададим переменную для куба. В качестве<strong>Объекта</strong>(Object) выбираем<strong>Пустышку</strong>(Empty). Напротив пункта (x) изменяем название с <em>"переменной"</em>(в английской версии<em>var</em>) на <em>empty</em>. В <strong>Выражении</strong>(Expression) также заменяем<em>var</em>на <em>empty</em>.</p>
35
Замена названия в выражении. Скриншот: Леон Балбери для Skillbox Media<p>Ниже, в пункте<strong>Тип</strong>(Type), определяем, какой именно параметр пустышки мы будем применять в качестве драйвера для вращения куба. Выберем<strong>Положение X</strong>(X Location) - это означает, что для вращения куба мы используем позицию<strong>Пустышки</strong>(Empty) по оси X. Теперь, если двигать пустышку по этой оси - куб начнёт вращаться.</p>
35
Замена названия в выражении. Скриншот: Леон Балбери для Skillbox Media<p>Ниже, в пункте<strong>Тип</strong>(Type), определяем, какой именно параметр пустышки мы будем применять в качестве драйвера для вращения куба. Выберем<strong>Положение X</strong>(X Location) - это означает, что для вращения куба мы используем позицию<strong>Пустышки</strong>(Empty) по оси X. Теперь, если двигать пустышку по этой оси - куб начнёт вращаться.</p>
36
Вращение объекта с помощью пустышки<p>Для анимаций можно писать небольшие формулы. В драйверах они называются выражениями. Возвращаемся в меню, нажав на модифицированный параметр<strong>ПКМ</strong>и выбрав<strong>Редактировать драйвер</strong>(Edit Driver). В <strong>Выражении</strong>(Expression) умножаем переменную empty на 2 и нажимаем<strong>Enter</strong>.</p>
36
Вращение объекта с помощью пустышки<p>Для анимаций можно писать небольшие формулы. В драйверах они называются выражениями. Возвращаемся в меню, нажав на модифицированный параметр<strong>ПКМ</strong>и выбрав<strong>Редактировать драйвер</strong>(Edit Driver). В <strong>Выражении</strong>(Expression) умножаем переменную empty на 2 и нажимаем<strong>Enter</strong>.</p>
37
empty * 2<p>Знак звёздочки (<strong>*</strong>) означает умножение. Нажимаем<strong>Enter</strong>. Теперь, если перемещать пустышку по оси X - куб вращается в два раза быстрее.</p>
37
empty * 2<p>Знак звёздочки (<strong>*</strong>) означает умножение. Нажимаем<strong>Enter</strong>. Теперь, если перемещать пустышку по оси X - куб вращается в два раза быстрее.</p>
38
Вращение объекта с помощью пустышки при удвоенном значении<p>Продолжаем эксперимент: дублируем куб (<strong>Shift + D</strong>), выделяем его и чуть сдвигаем в сторону. Заходим в <strong>Редактировать драйвер</strong>(Edit Driver) и в строке<strong>Выражение</strong>(Expression) пишем:</p>
38
Вращение объекта с помощью пустышки при удвоенном значении<p>Продолжаем эксперимент: дублируем куб (<strong>Shift + D</strong>), выделяем его и чуть сдвигаем в сторону. Заходим в <strong>Редактировать драйвер</strong>(Edit Driver) и в строке<strong>Выражение</strong>(Expression) пишем:</p>
39
empty * 4<p>Так второй куб будет вращаться уже в четыре раза быстрее, что хорошо заметно в сравнении с первым.</p>
39
empty * 4<p>Так второй куб будет вращаться уже в четыре раза быстрее, что хорошо заметно в сравнении с первым.</p>
40
-
Пример вращения двух объектов, имеющих разное скриптовое выражение, с помощью пустышки<p>Этим методом удо��но анимировать механизмы, шестерёнки и различные конструкции, зависимые друг от друга. Во время работы всегда проверяйте, отобразится ли итоговый результат в рендере и при экспорте.<strong>Рекомендуется воздержаться от сложных систем анимаций - использование драйверов не даёт стопроцентной гарантии корректного воспроизведения анимации даже при простых операциях.</strong></p>
40
+
Пример вращения двух объектов, имеющих разное скриптовое выражение, с помощью пустышки<p>Этим методом удобно анимировать механизмы, шестерёнки и различные конструкции, зависимые друг от друга. Во время работы всегда проверяйте, отобразится ли итоговый результат в рендере и при экспорте.<strong>Рекомендуется воздержаться от сложных систем анимаций - использование драйверов не даёт стопроцентной гарантии корректного воспроизведения анимации даже при простых операциях.</strong></p>
41
<p><strong>примечание</strong></p>
41
<p><strong>примечание</strong></p>
42
<p><strong>Важно знать, что в Выражении (</strong>Expression<strong>) нельзя импортировать модули Python.</strong>Например, в теории можно было бы установить случайное число для вращения множества кубов, как в <a>третьем уроке</a>, написав для первого куба выражение<strong>empty *2 *random.randint (0,100)</strong>.<strong>К сожалению, драйвер "не знает" ни о модуле random, ни о методе randint</strong>, поэтому случайные числа можно использовать только непосредственно в Python.</p>
42
<p><strong>Важно знать, что в Выражении (</strong>Expression<strong>) нельзя импортировать модули Python.</strong>Например, в теории можно было бы установить случайное число для вращения множества кубов, как в <a>третьем уроке</a>, написав для первого куба выражение<strong>empty *2 *random.randint (0,100)</strong>.<strong>К сожалению, драйвер "не знает" ни о модуле random, ни о методе randint</strong>, поэтому случайные числа можно использовать только непосредственно в Python.</p>
43
<p>Существуют выражения, которые позволяют анимировать объекты без участия других объектов. Удалим данные из первого куба - его переменную и само выражение. Анимация - это изменение параметра во времени, и на каждом кадре у него может быть своё значение. Если написать в <strong>Выражении</strong>(Expression) слово<strong>frame</strong> - драйвер на каждом кадре будет выставлять значение параметра, равное текущему кадру. Так происходит потому, что<strong>frame</strong>в Blender - ключевое слово, обозначающее номер текущего кадра.</p>
43
<p>Существуют выражения, которые позволяют анимировать объекты без участия других объектов. Удалим данные из первого куба - его переменную и само выражение. Анимация - это изменение параметра во времени, и на каждом кадре у него может быть своё значение. Если написать в <strong>Выражении</strong>(Expression) слово<strong>frame</strong> - драйвер на каждом кадре будет выставлять значение параметра, равное текущему кадру. Так происходит потому, что<strong>frame</strong>в Blender - ключевое слово, обозначающее номер текущего кадра.</p>
44
Вращение объекта по оси X при использовании frame в качестве значения параметра<p><strong>примечание</strong></p>
44
Вращение объекта по оси X при использовании frame в качестве значения параметра<p><strong>примечание</strong></p>
45
<p>При подключённом драйвере необязательно переходить в меню<strong>Редактировать драйвер</strong>(Edit driver), чтобы поменять выражение. Достаточно щёлкнуть<strong>ЛКМ</strong>по параметру, который нужно изменить, прямо во вкладке<strong>Трансформация</strong>(Transform) и набрать выражение там.</p>
45
<p>При подключённом драйвере необязательно переходить в меню<strong>Редактировать драйвер</strong>(Edit driver), чтобы поменять выражение. Достаточно щёлкнуть<strong>ЛКМ</strong>по параметру, который нужно изменить, прямо во вкладке<strong>Трансформация</strong>(Transform) и набрать выражение там.</p>
46
<p>Сейчас куб вращается с огромной скоростью - на кадре 9 он поворачивается на 516°. Это объясняется тем, что для параметра вращения счёт идёт в радианах, а не в градусах. Чтобы перевести значение в градусы, напишем выражение.</p>
46
<p>Сейчас куб вращается с огромной скоростью - на кадре 9 он поворачивается на 516°. Это объясняется тем, что для параметра вращения счёт идёт в радианах, а не в градусах. Чтобы перевести значение в градусы, напишем выражение.</p>
47
frame/180*pi<p>В данном случае<strong>pi</strong> - тоже ключевое слово, которое обозначает математическое число π (3,14159…). Нажимаем<strong>Enter</strong>и видим, что на кадре 9 куб поворачивается на 9°. Если анимацию нужно ускорить - умножаем формулу на нужное число (для наглядности возьмём первую часть выражения в скобки), например 20:</p>
47
frame/180*pi<p>В данном случае<strong>pi</strong> - тоже ключевое слово, которое обозначает математическое число π (3,14159…). Нажимаем<strong>Enter</strong>и видим, что на кадре 9 куб поворачивается на 9°. Если анимацию нужно ускорить - умножаем формулу на нужное число (для наглядности возьмём первую часть выражения в скобки), например 20:</p>
48
(frame/180*pi) * 20<p>Теперь куб начнёт вращаться со скоростью 20° в кадр, и на кадре 9 он повернётся на 180°. Чтобы замедлить вращение, уменьшите число.</p>
48
(frame/180*pi) * 20<p>Теперь куб начнёт вращаться со скоростью 20° в кадр, и на кадре 9 он повернётся на 180°. Чтобы замедлить вращение, уменьшите число.</p>
49
Скорость вращения куба при умножении выражения (frame/180*pi) на 20, 10 и 3<p>Ещё можно написать выражения с использованием синусов (sin), косинусов (cos), тангенсов (tan), арктангенсов (atan) и других функций. Рассмотрим следующий пример:</p>
49
Скорость вращения куба при умножении выражения (frame/180*pi) на 20, 10 и 3<p>Ещё можно написать выражения с использованием синусов (sin), косинусов (cos), тангенсов (tan), арктангенсов (atan) и других функций. Рассмотрим следующий пример:</p>
50
sin (frame/180*pi*20)<p>Если вы помните из уроков математики, на графике синус отображается в виде волны. При таком выражении куб начнёт вращаться из стороны в сторону.</p>
50
sin (frame/180*pi*20)<p>Если вы помните из уроков математики, на графике синус отображается в виде волны. При таком выражении куб начнёт вращаться из стороны в сторону.</p>
51
Покачивание куба при выражении sin (frame/180*pi*20)<p>Для уменьшения амплитуды можно поделить значение - например опять на 20:</p>
51
Покачивание куба при выражении sin (frame/180*pi*20)<p>Для уменьшения амплитуды можно поделить значение - например опять на 20:</p>
52
sin (frame/180*pi*20)/20<p>В этом случае куб будет слабо покачиваться.</p>
52
sin (frame/180*pi*20)/20<p>В этом случае куб будет слабо покачиваться.</p>
53
<p>Такие базовые операции очень удобны для реализации каких-то фоновых событий, например полёта облаков по небу или колыхания травы, - нужно всего лишь "повесить" драйвер на объект, и тот будет двигаться сам по себе. При этом никакие ключевые кадры не нужны.</p>
53
<p>Такие базовые операции очень удобны для реализации каких-то фоновых событий, например полёта облаков по небу или колыхания травы, - нужно всего лишь "повесить" драйвер на объект, и тот будет двигаться сам по себе. При этом никакие ключевые кадры не нужны.</p>
54
<p>Чтобы удалить драйвер с объекта, кликните<strong>ПКМ</strong>по модифицированному параметру и нажмите<strong>Удалить драйверы</strong>(Delete Drivers).</p>
54
<p>Чтобы удалить драйвер с объекта, кликните<strong>ПКМ</strong>по модифицированному параметру и нажмите<strong>Удалить драйверы</strong>(Delete Drivers).</p>
55
<p>Здесь мы напомним про курс Skillbox "<a>3D-художник</a>". За год обучения вы научитесь 3D‑моделированию, добавите более 20 практических работ в портфолио и освоите профессию, востребованную в кино- и игровой индустрии.</p>
55
<p>Здесь мы напомним про курс Skillbox "<a>3D-художник</a>". За год обучения вы научитесь 3D‑моделированию, добавите более 20 практических работ в портфолио и освоите профессию, востребованную в кино- и игровой индустрии.</p>
56
<p>Ещё один инструмент для анимации - модификаторы в <strong>Редакторе графов</strong>(Graph Editor). Рассмотрим, как они работают.</p>
56
<p>Ещё один инструмент для анимации - модификаторы в <strong>Редакторе графов</strong>(Graph Editor). Рассмотрим, как они работают.</p>
57
<p>Переходим в начало таймлайна, затем на панели<strong>Трансформация</strong>(Transform) кликаем правой кнопкой мыши на <strong>Положении</strong>(Location) объекта по оси X и выбираем<strong>Вставить ключевые кадры</strong>(Insert Keyframes).</p>
57
<p>Переходим в начало таймлайна, затем на панели<strong>Трансформация</strong>(Transform) кликаем правой кнопкой мыши на <strong>Положении</strong>(Location) объекта по оси X и выбираем<strong>Вставить ключевые кадры</strong>(Insert Keyframes).</p>
58
Пример вставки ключевого кадра через панель "Трансформация"<p>Теперь переходим во вкладку<strong>Object Transforms</strong>, которая появилась в левой части<strong>Редактора графов</strong>(Graph Editor). Выбираем пункт<strong>X Положение</strong>(X Location) и нажимаем<strong>N</strong>. Справа появится панель со вкладкой<strong>Модификаторы</strong>(Modifiers).</p>
58
Пример вставки ключевого кадра через панель "Трансформация"<p>Теперь переходим во вкладку<strong>Object Transforms</strong>, которая появилась в левой части<strong>Редактора графов</strong>(Graph Editor). Выбираем пункт<strong>X Положение</strong>(X Location) и нажимаем<strong>N</strong>. Справа появится панель со вкладкой<strong>Модификаторы</strong>(Modifiers).</p>
59
Расположение вкладки модификаторов в редакторе графов. Скриншот: Леон Балбери для Skillbox Media<p>В списке<strong>Добавить модификатор</strong>(Add Modifier) выбираем<strong>Шум</strong>(Noise). Он изменяет положение объекта по оси X независимо от ключевых кадров, хотя мы по-прежнему можем изменять это положение на графике кейфреймов. При добавлении модификатора общая траектория графика не меняется, но теперь именно он устанавливает точное положение объекта на основе заданного ключевыми кадрами.</p>
59
Расположение вкладки модификаторов в редакторе графов. Скриншот: Леон Балбери для Skillbox Media<p>В списке<strong>Добавить модификатор</strong>(Add Modifier) выбираем<strong>Шум</strong>(Noise). Он изменяет положение объекта по оси X независимо от ключевых кадров, хотя мы по-прежнему можем изменять это положение на графике кейфреймов. При добавлении модификатора общая траектория графика не меняется, но теперь именно он устанавливает точное положение объекта на основе заданного ключевыми кадрами.</p>
60
График "X Положения" до и после модификатора.<p>После добавления<strong>Шума</strong>(Noise) на панели появится список параметров модификатора. Рассмотрим их.</p>
60
График "X Положения" до и после модификатора.<p>После добавления<strong>Шума</strong>(Noise) на панели появится список параметров модификатора. Рассмотрим их.</p>
61
<p><strong>Масштаб</strong>(Scale) - отвечает за скорость движения объекта (в данном случае по оси<strong>X</strong>, потому что выбрана ось<strong>X</strong>).</p>
61
<p><strong>Масштаб</strong>(Scale) - отвечает за скорость движения объекта (в данном случае по оси<strong>X</strong>, потому что выбрана ось<strong>X</strong>).</p>
62
<p><strong>Интенсивность</strong>(Strength) - амплитуда, с которой объект передвигается по оси.</p>
62
<p><strong>Интенсивность</strong>(Strength) - амплитуда, с которой объект передвигается по оси.</p>
63
<p><strong>Смещение</strong>(Offset) - сдвиг огибающей шума назад или вперёд.</p>
63
<p><strong>Смещение</strong>(Offset) - сдвиг огибающей шума назад или вперёд.</p>
64
<p><strong>Фаза</strong>(Phase) - создаёт случайный исходный элемент (фазу или противофазу).</p>
64
<p><strong>Фаза</strong>(Phase) - создаёт случайный исходный элемент (фазу или противофазу).</p>
65
<p><strong>Глубина</strong>(Depth) - добавляет небольшую динамику внутри, как при потряхивании.</p>
65
<p><strong>Глубина</strong>(Depth) - добавляет небольшую динамику внутри, как при потряхивании.</p>
66
<p>Попробуем применить настройки для остальных осей. Копируем модификатор вместе с заданными параметрами, нажав на значок, указанный на скриншоте ниже.</p>
66
<p>Попробуем применить настройки для остальных осей. Копируем модификатор вместе с заданными параметрами, нажав на значок, указанный на скриншоте ниже.</p>
67
Кнопки "Копировать" и "Вставить". Скриншот: Леон Балбери для Skillbox Media<p>Выбираем другую вкладку, например<strong>Y Положение</strong>(Y Location), и вставляем настройки, кликнув на значок, расположенный рядом со значком копирования. Теперь куб двигается по двум осям. Для наглядности мы можем чуть изменить параметр<strong>Смещения</strong>(Offset) и увидеть, как объект хаотично передвигается по осям<strong>X</strong>и <strong>Y</strong>.</p>
67
Кнопки "Копировать" и "Вставить". Скриншот: Леон Балбери для Skillbox Media<p>Выбираем другую вкладку, например<strong>Y Положение</strong>(Y Location), и вставляем настройки, кликнув на значок, расположенный рядом со значком копирования. Теперь куб двигается по двум осям. Для наглядности мы можем чуть изменить параметр<strong>Смещения</strong>(Offset) и увидеть, как объект хаотично передвигается по осям<strong>X</strong>и <strong>Y</strong>.</p>
68
Изменение параметра смещения на скопированных настройках и демонстрация хаотичного движения куба по двум осям<p>Аналогичные манипуляции можно провести и с осью<strong>Z</strong>. Если снова скопировать настройки и изменить параметр<strong>Смещения</strong>(Offset), куб начнёт беспорядочно передвигаться уже по трём осям. Модификатор очень удобен, если объектам нужно задать хаотичное движение.</p>
68
Изменение параметра смещения на скопированных настройках и демонстрация хаотичного движения куба по двум осям<p>Аналогичные манипуляции можно провести и с осью<strong>Z</strong>. Если снова скопировать настройки и изменить параметр<strong>Смещения</strong>(Offset), куб начнёт беспорядочно передвигаться уже по трём осям. Модификатор очень удобен, если объектам нужно задать хаотичное движение.</p>
69
<p>Свойства модификаторов можно ограничивать. Отключим модификатор для осей<strong>Z</strong>и <strong>Y</strong>, нажав на галочку справа.</p>
69
<p>Свойства модификаторов можно ограничивать. Отключим модификатор для осей<strong>Z</strong>и <strong>Y</strong>, нажав на галочку справа.</p>
70
Расположение галочки отключения модификатора. Скриншот: Леон Балбери для Skillbox Media<p>Модификатор для<strong>X Положения</strong>(X Location) оставляем включенным. В его настройках выбираем пункт<strong>Ограничить диапазон кадров</strong>(Restrict Frame Range) и задаём диапазон - с какого по какой ключевой кадр будет работать модификатор. Для примера возьмём промежуток от 50 до 150. Если нужно плавное затухание в начале и в конце анимации, помогут параметры<strong>Начало смещения</strong>(In) и <strong>Выход</strong>(Out) - аналоги fade-in/fade-out в звуковых дорожках. Настраиваем их на своё усмотрение и смотрим результат.</p>
70
Расположение галочки отключения модификатора. Скриншот: Леон Балбери для Skillbox Media<p>Модификатор для<strong>X Положения</strong>(X Location) оставляем включенным. В его настройках выбираем пункт<strong>Ограничить диапазон кадров</strong>(Restrict Frame Range) и задаём диапазон - с какого по какой ключевой кадр будет работать модификатор. Для примера возьмём промежуток от 50 до 150. Если нужно плавное затухание в начале и в конце анимации, помогут параметры<strong>Начало смещения</strong>(In) и <strong>Выход</strong>(Out) - аналоги fade-in/fade-out в звуковых дорожках. Настраиваем их на своё усмотрение и смотрим результат.</p>
71
Пример использования модификатора "Шум" с ограниченным диапазоном кадров и плавным затуханием<p>Если одного модификатора недостаточно, можно добавить ещё один<strong>Шум</strong>(Noise) и активировать его на другом отрезке таймлайна или наложить на первый - например, чтобы создать "фон".</p>
71
Пример использования модификатора "Шум" с ограниченным диапазоном кадров и плавным затуханием<p>Если одного модификатора недостаточно, можно добавить ещё один<strong>Шум</strong>(Noise) и активировать его на другом отрезке таймлайна или наложить на первый - например, чтобы создать "фон".</p>
72
Комбинация двух модификаторов "Шум"<p>Кроме<strong>Шума</strong>(Noise) есть и другие модификаторы. Напоследок рассмотрим один из них -<strong>Генератор</strong>(Generator). Добавим его для<strong>X Положения</strong>(X Location) и включим в настройках<strong>Добавление</strong>(Additive) - так его значения будут добавляться к значениям предыдущего модификатора. В противном случае он их перекроет. Для наглядности в пункте<strong>x^1</strong>уменьшим значение до <strong>0,1</strong> - теперь при анимации куб медленно "поедет" по оси X. Так как у нас включён предыдущий модификатор<strong>Шум</strong>(Noise), с 50-го по 150-й кадр объект будет "потряхивать".</p>
72
Комбинация двух модификаторов "Шум"<p>Кроме<strong>Шума</strong>(Noise) есть и другие модификаторы. Напоследок рассмотрим один из них -<strong>Генератор</strong>(Generator). Добавим его для<strong>X Положения</strong>(X Location) и включим в настройках<strong>Добавление</strong>(Additive) - так его значения будут добавляться к значениям предыдущего модификатора. В противном случае он их перекроет. Для наглядности в пункте<strong>x^1</strong>уменьшим значение до <strong>0,1</strong> - теперь при анимации куб медленно "поедет" по оси X. Так как у нас включён предыдущий модификатор<strong>Шум</strong>(Noise), с 50-го по 150-й кадр объект будет "потряхивать".</p>
73
Пример комбинации "Шума" и "Генератора" в одном цикле анимации<p>При этом вручную выставлять ключевые кадры не нужно, как и с драйверами, - вся анимация происходит автоматически. На практике такие колебания, тряски и другие простые движения придают объектам больше жизни и отлично подойдут для анимации в костях арматуры (объекта, схожего с человеческим скелетом), которую мы рассмотрим в следующем уроке.</p>
73
Пример комбинации "Шума" и "Генератора" в одном цикле анимации<p>При этом вручную выставлять ключевые кадры не нужно, как и с драйверами, - вся анимация происходит автоматически. На практике такие колебания, тряски и другие простые движения придают объектам больше жизни и отлично подойдут для анимации в костях арматуры (объекта, схожего с человеческим скелетом), которую мы рассмотрим в следующем уроке.</p>
74
<p><strong>примечание</strong></p>
74
<p><strong>примечание</strong></p>
75
<p>Хоть анимация и происходит автоматически, для того, чтобы можно было воспользоваться модификаторами, необходимо установить хотя бы один ключевой кадр на нужном параметре.</p>
75
<p>Хоть анимация и происходит автоматически, для того, чтобы можно было воспользоваться модификаторами, необходимо установить хотя бы один ключевой кадр на нужном параметре.</p>
76
<p>Таким образом, мы изучили три основных способа воспроизведения анимации, которые можно использовать для решения любых задач, независимо от сложности проекта. А дальнейшие эксперименты с настройками помогут реализовать все ваши задумки.</p>
76
<p>Таким образом, мы изучили три основных способа воспроизведения анимации, которые можно использовать для решения любых задач, независимо от сложности проекта. А дальнейшие эксперименты с настройками помогут реализовать все ваши задумки.</p>
77
<p><strong>Читайте остальные статьи из серии:</strong></p>
77
<p><strong>Читайте остальные статьи из серии:</strong></p>
78
<a>Практический курс: "Blender.Design" Узнать про курс</a>
78
<a>Практический курс: "Blender.Design" Узнать про курс</a>