Валентин Шакун
34

Как я гифки по «Бойцовскому клубу» ваял

Пошаговая инструкция по аннигиляции мухи с помощью ракетницы

В закладки

Этот пост — небольшое дополнение к статье о создании «Бойцовского клуба», которую можно прочитать здесь.

В статье я упомянул 25-й кадр — одну из особенностей фильма Дэвида Финчера. Здесь не обойтись без наглядной демонстрации, так что нужна была гифка. А так как на Giphy я нужных гифок не нашел, да и хотелось выпустить текст поскорее, было принято решение использовать то, что под рукой. А под рукой оказался Unity.

Ниже — пошаговый «гайд» создания гифок с помощью ловкости рук. Нам понадобятся:

  • .png с Тайлером Дерденом в исполнении Брэда Питта
  • .png без Тайлера Дердена в исполнении Брэда Питта
  • графический редактор
  • игровой движок Unity 3D
  • программа для захвата гифок LICEcap

Начнем!

Шаг 1. Подготовительные работы

Пожалуй, самый простой этап. Находим в интернете кадр с понравившейся позой Брэда Питта (желательно из х/ф «Бойцовский клуб») и вырезаем его с помощью графической редактора на пустой фон. Я использовал Adope Photoshop. На случай отсутствия у вас графического редактора я любезно поместил своего Тайлера под заголовок поста.

Шаг 2. Подготовка Unity 3D

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

Заходим в Hub, проходим регистрацию, нажимаем New и создаем новый проект.

​Для нашей цели вполне подойдет шаблон «2D». Рекомендую называть проект по смыслу

Заходим в проект. В нижней части экрана видим вкладку Project, а в ней — Assets. Здесь находятся все «ассеты» (ресурсы) нашего проекта. Закидываем туда предварительно подготовленные .png.

Теперь пришло время для самого интересного.

Шаг 3. Программирование

Пришло время создать наш первый скрипт.Кликаем правой кнопкой мыши по пустому месту на вкладке Assets, переходим в Create и выбираем CSharpScript, как на скриншоте ниже.

Открываем созданный скрипт, предварительно назвав его по той же логике, что и с проектом. Например, GIFControl. Попадаем в Visual Studio (либо в Mono Develop) и видим заготовку скрипта.

Далее нам нужно написать наш контроллер для будущей гифки. Текст скрипта приведу ниже.

using System.Collections; using System.Collections.Generic; using UnityEngine; public class GIFControl : MonoBehaviour { public GameObject Tyler; // Start is called before the first frame update void Start() { StartCoroutine(GIF()); } // Update is called once per frame void Update() { } IEnumerator GIF() { Tyler.SetActive(true); yield return new WaitForSeconds(.02f); Tyler.SetActive(false); yield return new WaitForSeconds(4); StartCoroutine(GIF()); } }

Чтобы выполнить поставленную задачу, мы прибегнем к такой мощной вещи, как «корутины» — сопрограммы, которые выполняются параллельно основному коду.

Итак, нажимаем Ctrl+S, чтобы сохранить наш скрипт, и возвращаемся обратно в Unity.

Шаг 4. Подготовка сцены

Перетаскиваем наш фон на окно Scene. Поверх перетаскиваем Тайлера и масштабируем изображения. Также следим за размером FOV нашей Main Camera и подгоняем его под наш фон.

​В компоненте Sprite Renderer у Тайлера значение Order In Layer должно быть больше, чем аналогичное значение фона

Перетаскиваем наш скрипт со вкладки Assets на объект фона во вкладке Hierarchy.

В поле Tyler перетаскиваем объект с Тайлером. Запускаем наш проект кнопкой Play — треугольник сверху посередине.

Как мы видим, гифка готова. Осталось только заснять её.

Шаг 5. LICEcap

Скачиваем программу LICEcap с официального сайта и устанавливаем её. Запускаем программу и растягиваем её так, чтобы она закрывала окно Game в Unity. Запускаем проект.

Итак, для итоговой гифки осталось всего ничего.

Нажимаем Record в LICEcap, выбираем место, в которое хотим сохранить нашу гифку и записываем её. Остановить запись можно при помощи кнопки Stop.

Гифка готова. Спасибо, что дочитали до конца. Подписывайтесь на блог и прожимайте лайки. И не повторяйте дома то, что описано выше. Я все сказал.

Материал опубликован пользователем.
Нажмите кнопку «Написать», чтобы поделиться мнением или рассказать о своём проекте.

Написать
{ "author_name": "Валентин Шакун", "author_type": "self", "tags": [], "comments": 0, "likes": 5, "favorites": 1, "is_advertisement": false, "subsite_label": "unknown", "id": 94388, "is_wide": true, "is_ugc": true, "date": "Sun, 19 Jan 2020 13:02:20 +0300", "is_special": false }
Создать объявление на DTF
Музыка
Послушать новое: первый альбом Tame Impala после пятилетнего перерыва
Музыка, звучащая как усталая радость на утро после хорошей вечеринки.
0
{ "id": 94388, "author_id": 3248, "diff_limit": 1000, "urls": {"diff":"\/comments\/94388\/get","add":"\/comments\/94388\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/94388"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 3248, "last_count_and_date": null }
Комментариев нет
Популярные
По порядку

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fizc" } } }, { "id": 4, "label": "Article Branding", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "cfovz", "p2": "glug" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-250597-0", "render_to": "inpage_VI-250597-0-1134314964", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=clmf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Баннер в ленте на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudo", "p2": "ftjf" } } }, { "id": 16, "label": "Кнопка в шапке мобайл", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "chvjx", "p2": "ftwx" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fzvc" } } }, { "id": 20, "label": "Кнопка в сайдбаре", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "chfbl", "p2": "gnwc" } } } ]
{ "jsPath": "/static/build/dtf.ru/specials/DeliveryCheats/js/all.min.js?v=05.02.2020", "cssPath": "/static/build/dtf.ru/specials/DeliveryCheats/styles/all.min.css?v=05.02.2020", "fontsPath": "https://fonts.googleapis.com/css?family=Roboto+Mono:400,700,700i&subset=cyrillic" }