Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
2D скелети
Вступ
Під час роботи з 3D деформації скелета є звичайним явищем для персонажів і істот, і більшість програм для 3D-моделювання підтримують це. Для 2D, оскільки ця функція використовується не так часто, важко знайти основне програмне забезпечення, призначене для цього.
Одним із варіантів є створення анімацій у програмному забезпеченні сторонніх розробників, наприклад Spine або Dragonbones. Ця функція також підтримується вбудованою.
Чому варто робити скелетну анімацію безпосередньо в Godot? Відповідь полягає в тому, що в цьому є багато переваг:
Краща інтеграція з рушієм, тому менше клопоту з імпортом і редагуванням.
Здатність керувати системами частинок, шейдерами, звуками, викликами скриптів, кольорами, прозорістю тощо в анімації.
Вбудована скелетна система в Godot дуже ефективна і розроблена для продуктивності.
Тому, наступний урок дасть основи деформації 2D скелета.
Налаштування
Дивись також
Перед початком ми рекомендуємо вам переглянути урок Анімація вирізок, щоб отримати загальні уявлення про анімацію в Godot.
Для цього уроку ми будемо використовувати одне зображення для побудови нашого персонажа. Завантажте його з gBot_pieces.png, або збережіть зображення нижче.
Також рекомендується завантажити остаточне зображення персонажа gBot_complete.png, щоб мати зразок для наслідування при складанні різних частин разом.
Створення полігонів
Створіть нову сцену для своєї моделі (якщо це буде анімований персонаж, ви можете використати CharacterBody2D). Для зручності використання порожній двовимірний вузол створюється як корінь для багатокутників.
Почнемо з вузла Polygon2D. Поки що немає необхідності розміщувати його десь на сцені, тому просто створіть його таким чином:
Виділіть його та призначте текстуру частин персонажа, яку ви завантажили раніше:
Не рекомендується малювати полігон безпосередньо. Натомість відкрийте діалогове вікно "UV" для полігону:
Перейдіть у режим Точки, виберіть олівець і намалюйте багатокутник навколо потрібного фрагмента:
Продублюйте вузол полігону та дайте йому відповідну назву. Потім знову відкрийте діалогове вікно "UV" та замініть старий полігон іншим у новому потрібному фрагменті.
Коли ви дублюєте вузли і наступна частина має схожу форму, ви можете редагувати попередній полігон замість того, щоб малювати новий.
Після переміщення багатокутника не забудьте оновити UV, вибравши Редагувати > Копіювати багатокутник в UV у Polygon 2D UV Editor.
Продовжуйте робити це, поки не зіставите всі частини.
Ви помітите, що частини тіла для вузлів з'являються в тому ж місці, що і в оригінальній текстурі. Це тому, що за замовчуванням, коли ви малюєте полігон, UV і точки однакові.
Перемістіть частини і сформуйте персонажа. Це має бути досить швидко. Немає необхідності змінювати повороти, тому не турбуйтеся про те, що частини неправильно повернуті; ви можете поки їх не чіпати.
Ой, візуальний порядок частин ще не правильний, оскільки деякі з них перекривають неправильні частини. Впорядкуйте порядок вузлів, щоб виправити це:
Ось ви і завершили! Безумовно, це було набагато простіше, ніж у урок з вирізок.
Створення скелета
Створіть вузол Skeleton2D в якості нащадка кореневого вузла. Це буде основа нашого скелета:
Створіть вузол Bone2D як дочірній елемент скелета. Розмістіть його на стегні (зазвичай скелети починаються тут). Кістка буде спрямована праворуч, але ви можете поки що проігнорувати це.
Продовжуйте створювати ієрархію кісток і називати їх відповідним чином.
В кінці цього ланцюжка буде вузол jaw. Він, знову ж таки, дуже короткий і спрямований праворуч. Це нормально для кісток без дочірніх елементів. Довжину кінчиків кісток можна змінити за допомогою властивості в інспекторі:
В цьому випадку нам не потрібно обертати кістку (так сталося, що точки щелепи розмістилися правильно на спрайті), але якщо потрібно, не соромтеся це зробити. Знову ж таки, це дійсно потрібно тільки для кінцевих кісток, оскільки вузли з нащадками зазвичай не потребують довжини, або певного повороту.
Продовжуйте рухатися і будувати весь скелет:
Ви помітите, що всі кістки видають попередження про відсутність пози відпочинку. Поза відпочинку — це стандартна поза скелета, до якої ви можете повернутися в будь-який момент (що дуже зручно для анімації). Щоб її встановити, клацніть на вузлі скелет у дереві сцени, потім натисніть кнопку на панелі інструментів і виберіть Overwrite Rest Pose (Перезаписати позу відпочинку) з випадаючого меню.
Попередження зникнуть. Якщо ви зміните скелет (додасте/видалите кістки), вам потрібно буде встановити позу спокою знову.
Деформація полігонів
Виберіть раніше створені полігони і призначте їх властивості Skeleton вузол скелета. Це гарантує, що вони в кінцевому підсумку можуть бути деформовані ним.
Клацніть властивість, виділену вище, і виберіть вузол скелета:
Знову відкрийте UV-редактор для полігону та перейдіть до розділу Кістки.
Ви ще не зможете малювати ваги. Для цього вам потрібно синхронізувати список кісток зі скелета з полігоном. Цей крок виконується лише один раз і вручну (якщо ви не змінюєте скелет, додаючи/видаляючи/перейменовуючи кістки). Це гарантує, що інформація про такелаж збережеться в полігоні, навіть якщо вузол скелета випадково втрачено або скелет змінено. Натисніть кнопку «Синхронізувати кістки з полігоном», щоб синхронізувати список.
Список кісток з'явиться автоматично. За замовчуванням ваш полігон не має ваги, призначеної кісткам. Виберіть кістки, яким потрібно присвоїти вагу, і розфарбуйте їх:
Білі точки мають повну вагу, в той час як чорні точки не піддаються впливу кістки. Якщо одна і та ж точка пофарбована в білий колір для декількох кісток, вплив буде розподілений між ними (тому зазвичай немає необхідності використовувати відтінки сірого, якщо тільки ви не хочете відполірувати ефект вигину).
Після фарбування ваг, анімація кісток (НЕ полігонів!) буде змінювати і згинати полігони. Так як в такому підході вам потрібно анімувати тільки кістки, робота стає набагато простішою!
Проте не все так просто. Спроби анімувати кістки, які згинають полігон, часто дають несподівані результати:
Це відбувається тому, що Godot генерує внутрішні трикутники, які з'єднують точки при малюванні полігона. Вони не завжди згинаються так, як ви очікуєте. Щоб вирішити це, потрібно задати підказки в геометрії, щоб уточнити деформацію, якої ви очікуєте.
Внутрішні вершини
Знову відкрийте меню UV для кожної кістки та перейдіть до розділу Точки. Додайте кілька внутрішніх вершин в областях, де ви очікуєте вигин геометрії:
Тепер перейдіть до розділу Багатокутник та перемалюйте власні багатокутники з більшою деталізацією. Уявіть, що, коли ваші багатокутники згинаються, вам потрібно переконатися, що вони деформуються якомога менше, тому трохи поекспериментуйте, щоб знайти правильне налаштування.
Як тільки ви почнете малювати, оригінальний полігон зникне, і ви зможете вільно створювати свій власний:
Такої деталізації, як правило, досить, хоча ви можете мати більш дрібнозернистий контроль над розміщенням трикутників. Експериментуйте самостійно, поки не отримаєте бажані результати.
Примітка: Не забувайте, що ваші щойно додані внутрішні вершини також потребують фарбування вагою! Знову перейдіть до розділу Кістки, щоб призначити їх правильним кісткам.
Після налаштування, ви отримаєте набагато кращі результати: