April 8, 2023

Створення емоції Emotecraft з використанням Blender`у

У цьому пості будуть описані усі кроки створення власної емоції для моду Emotecraft. Що ж, почнімо!

Крок 1. Підготовка

Для початку треба скачати програму Blender. Можна скачати з офіційного сайту або у Steam.

Далі нам треба файли, з якими ми працюватимемо. Це заготовки, які ми будемо анімувати у Блендері.

https://github.com/KosmX/emotes/tree/dev/blender

З цієї сторінки качаємо файли emote_creator.blend та emote_creator_bend.blend. В чому різниця між ними? Другий файл дає можливість більш якісно анімувати кінцівки, бо у Стіва з'являться суглоби!

_Раджу закинути ці два файли у якусь окрему папочку._

Після того, як усе встановлено, запускаємо Блендер та відкриваємо один із встановлених файлів (раджу починати з emote_creator.blend).

Спочатку нас закине на вкладку Note, де буде якийсь непотрібний нам readme-текст. Переходимо до вкладки Animation - тут ми й робитимемо основну роботу над анімацією.

Крок 2. Анімація

На вкладці Animation, яку ми відкрили, з'явиться моделька Стіва, таймлайн, і панелі інструментів. У нас є можливість рухати усі частини тіла нашого персонажа.

Зараз покажу, як реалізується рух кінцівок на прикладі. Як то кажуть - краще один раз показати, ніж 10 разів пояснити :)

Нехай буде таке завдання - Підняти руки гравцеві у положення, паралельно підлозі (тобто як у зомбі), і зробити типу танцювальні рухи: права рука вгору, ліва рука вниз, і навпаки, і зациклити цей "танець"

Перш за все, треба натиснути на ось цю кнопочку внизу. Після натискання ми будемо автоматично робити ключові кадри:

Далі піднімемо руки. У Майнкрафті анімація буде відтворюватися з частотою 20 кадрів/сек, нехай наш гравець за півсекунди підніме руки у положення "зомбі".

Вибираємо на таймлайні 10-й кадр:

Тицяємо ЛКМ на праву руку. Для підняття руки треба її прокрутити на 90 градусів (у нашому випадку по осі х). Для цього справа вибираємо панель ObjectProperties (такий жовтий квадратик), і міняємо Rotation X з 0 на 90:

Після цього побачите зміни на таймлайні:

І, відповідно, зміни у положенні руки:

Тепер абсолютно те ж саме робимо з лівою рукою:

Припустимо, взмахи руками у нас будуть через півсекунди після підняття. Тоді треба їх "заморозити" до 20-го кадра. Для цього треба продублювати параметри зі стопкадра на 10 кадрі до стопкадра на 20-му.

Переводимо повзунок на таймлані на 20 кадр:

Далі натискаємо клавішу І. В списку обираємо All Channels:

І ось результат:

Робимо цю дію з обома руками.

Тепер будемо реалізовувати махи руками. Нехай амплітуда взмаху буде 45 градусів, і зміна положення рук буде кожні 10 кадрів. Нехай права рука на перший взмах буде вгорі, а ліва внизу. Тоді відступаємо 5 кадрів на таймлайні, до Rotation X правої руки додаємо 45, а від Rotation X лівої віднімаємо:

Відступаємо 10 кадрів і міняємо значення положення правої луки з лівою:

Далі треба робити так само, чергуючи значення повороту рук. Замість того, щоб усе писати вручну, можна скопіювати вже існуючі кадри, просто затиснувши ЛКМ і виділивши точки на таймлайні:

Виділене копіюємо в буфер обміну (Ctrl+C). далі відступаємо на 10 кадрів від останнього ключового кадру на таймлайні і вставте скопійоване (Ctrl+V):

Повторіть це з обома руками.

На останній, 60-й кадр повернемо положення рук "як у зомбі". Для цього скопіюємо положення на 20-му кадрі і вставимо у 60-й:

І знову ж, робимо це з обома руками.

На цьому етап створення анімації завершується. Ви можете програти її і самі запевнитись, чи все у вас вийшло правильно зробити.

Тепер треба експортувати необхідний нам файл.

*Крок 3. Редагування та експорт скрипту*

Переходимо на вкладку Export:

Тут ми побачимо вікно з переглядом нашої анімації, і вікно зі скриптом. Нас цікавить друге.

У перших трьох рядках коду буде міститися інформація про вашу анімацію (назва, опис, автор). Можете вручну прописати параметри у лапках:

Далі ми можемо передбачити зациклення анімації. Оскільки у анімації, що у прикладі, планується зациклення, то зараз я розповім як його реалізувати у коді.

Для початку змінимо значення isLoop на true. У наступному параметрі returnTick треба написати номер кадру, від якого заново почнеться анімація, коли та дійде до кінцевого кадру. У нашому випадку це кадр під номером 21 (бо кадри 20 і 60 у нас однакові і ми побачимо у грі мікрофріз на 1 тік, бо відмалюється 2 однакових кадри підряд):

З редагуванням коду все, після цього треба його експортувати. Над скріптом натисніть на кнопку Run Script (вона виглядає як трикутник):

Після запуску скрипта створиться новий файл у тій же самій папці, куди ми кидали файли формату .blend, під назвою emote.json. Це і є готова анімація, яку ми далі закинемо в директорію Майнкрафту:

Заходимо у директорію Майнкрафту і відкриваємо папку emotes (вона у вас з'явиться після встановлення моду Emotecraft):

У цю папку закидуємо emote.json, який ми згенерували. Також назву файлу можна змінити на яку вам заманеться. Якщо хочете щоб у вашої емоції була картинка у меню вибору, закиньте в папку emotes зображення формату .png з такою з назвою, як і json-файл. Єдиний нюанс - розмір зображення має бути 256х256.

Перезапускаємо Майнкрафт (якщо він у вас був відкритий), і заходимо тестувати емоцію. Відкриваємо колесо швидкого вибору (за замовчуванням клавіша B):

Натискаємо на кнопку Всі емоції. Листаємо поки не побачимо емоцію, яку ми додали:

Активуйте емоцію і подивіться на результат вашої роботи.

Вітаю! Ви зробили вашу власну емоцію!