2D скелети¶
Вступ¶
В 3D деформація скелета персонажів і істот є загальновживаною річчю і більшість додатків 3D-моделювання підтримують її. В 2D ця функція використовується не так часто, тому важко знайти програмне забезпечення, призначене для цього.
Одним з варіантів є створення анімації в сторонньому програмному забезпеченні, такому як Spine, або Dragonbones. Однак, починаючи з Godot 3.1, ця функціональність є вбудованою.
Чому варто робити скелетну анімацію безпосередньо в Godot? Відповідь полягає в тому, що в цьому є багато переваг:
Краща інтеграція з рушієм, тому менше клопоту з імпортом і редагуванням.
Здатність керувати системами частинок, шейдерами, звуками, викликами скриптів, кольорами, прозорістю тощо в анімації.
Вбудована скелетна система в Godot дуже ефективна і розроблена для продуктивності.
Тому, наступний урок дасть основи деформації 2D скелета.
Налаштування¶
Дивись також
Перед початком ми рекомендуємо вам переглянути урок Анімація вирізок, щоб отримати загальні уявлення про анімацію в Godot.
Для цього уроку ми будемо використовувати одне зображення для побудови нашого персонажа. Завантажте його з gBot_pieces.png
, або збережіть зображення нижче.

Також рекомендується завантажити остаточне зображення персонажа gBot_complete.png
, щоб мати зразок для наслідування при складанні різних частин разом.

Створення полігонів¶
Створіть нову сцену для своєї моделі (якщо це буде анімований персонаж, ви можете використовувати KinematicBody2D
). Для зручності використання в якості кореня для полігонів створюється порожній 2D-вузол.
Почнемо з вузла Polygon2D
. Поки що немає необхідності розміщувати його десь на сцені, тому просто створіть його таким чином:

Виділіть його та призначте текстуру частин персонажа, яку ви завантажили раніше:

Малювати полігон безпосередньо не рекомендується. Замість цього відкрийте діалогове вікно UV для полігона:

Перейдіть до режиму Точки, виберіть олівець і намалюйте багатокутник навколо потрібної частини:

Дублюйте вузол полігона і дайте йому власне ім'я. Потім знову відкрийте вікно UV і замініть старий багатокутник на інший обвівши новий потрібний фрагмент.
Коли ви дублюєте вузли і наступна частина має схожу форму, ви можете редагувати попередній полігон замість того, щоб малювати новий.
Після переміщення полігона не забудьте оновити UV в Редакторі плоских полігонів UV.

Продовжуйте робити це, поки не зіставите всі частини.

Ви помітите, що частини тіла для вузлів з'являються в тому ж місці, що і в оригінальній текстурі. Це тому, що за замовчуванням, коли ви малюєте полігон, UV і точки однакові.
Перемістіть частини і сформуйте персонажа. Це має бути досить швидко. Немає необхідності змінювати повороти, тому не турбуйтеся про те, що частини неправильно повернуті; ви можете поки їх не чіпати.

Ой, візуальний порядок частин ще не правильний, оскільки деякі з них перекривають неправильні частини. Впорядкуйте порядок вузлів, щоб виправити це:

Ось ви і завершили! Безумовно, це було набагато простіше, ніж у урок з вирізок.
Створення скелета¶
Створіть вузол Skeleton2D
в якості нащадка кореневого вузла. Це буде основа нашого скелета:

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

Продовжуйте створювати ієрархію кісток і називати їх відповідним чином.

В кінці цього ланцюжка з'явиться вузол jaw
(щелепа). Він, знову ж таки, дуже короткий і вказує праворуч. Це нормально для кісток без нащадків. Довжину кінцевих кісток можна змінити за допомогою властивості в інспекторі:

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

Ви помітите, що всі кістки містять дратівливе попередження про відсутню позу спокою. Це означає, що настав час встановити її. Перейдіть до скелетного вузла і створіть позу спокою. Це поза за замовчуванням, ви можете повернутися до неї в будь-який час (що дуже зручно для анімації):

Попередження зникнуть. Якщо ви зміните скелет (додасте/видалите кістки), вам потрібно буде встановити позу спокою знову.
Деформація полігонів¶
Виберіть раніше створені полігони і призначте їх властивості Skeleton
вузол скелета. Це гарантує, що вони в кінцевому підсумку можуть бути деформовані ним.

Клацніть властивість, виділену вище, і виберіть вузол скелета:

Знову відкрийте редактор UV для полігона і перейдіть до розділу Кістки.

Поки ви не можете малювати вагу. Для цього потрібно синхронізувати список кісток скелета з полігоном. Цей крок виконується лише один раз і вручну (якщо ви не зміните скелет, додавши / видаливши / перейменувавши кістки). Це гарантує, що ваша інформація про каркас зберігатиметься в полігоні, навіть якщо вузол скелета випадково буде втрачено, або скелет зміниться. Натисніть кнопку Синхронізувати кістки з полігоном, щоб синхронізувати список.

Список кісток з'явиться автоматично. За замовчуванням ваш полігон не має ваги, призначеної кісткам. Виберіть кістки, яким потрібно присвоїти вагу, і розфарбуйте їх:

Білі точки мають повну вагу, в той час як чорні точки не піддаються впливу кістки. Якщо одна і та ж точка пофарбована в білий колір для декількох кісток, вплив буде розподілений між ними (тому зазвичай немає необхідності використовувати відтінки сірого, якщо тільки ви не хочете відполірувати ефект вигину).

Після фарбування ваг, анімація кісток (НЕ полігонів!) буде змінювати і згинати полігони. Так як в такому підході вам потрібно анімувати тільки кістки, робота стає набагато простішою!
Проте не все так просто. Спроби анімувати кістки, які згинають полігон, часто дають несподівані результати:

Це відбувається тому, що Godot генерує внутрішні трикутники, які з'єднують точки при малюванні полігона. Вони не завжди згинаються так, як ви очікуєте. Щоб вирішити це, потрібно задати підказки в геометрії, щоб уточнити деформацію, якої ви очікуєте.
Внутрішні вершини¶
Відкрийте меню UV для кожної кістки ще раз і перейдіть до розділу Точки. Додайте внутрішні вершини в місцях, де геометрія має згинатися:

Тепер перейдіть до розділу Полігон і перемалюйте ваші полігони з детальнішою інформацією. Уявіть собі, як ваші полігони згинаються, щоб переконатися, що вони деформуються якомога менше, тому трохи поекспериментуйте, щоб знайти правильні настройки.

Як тільки ви почнете малювати, оригінальний полігон зникне, і ви зможете вільно створювати свій власний:

Такої деталізації, як правило, досить, хоча ви можете мати більш дрібнозернистий контроль над розміщенням трикутників. Експериментуйте самостійно, поки не отримаєте бажані результати.
Примітка: Не забувайте, що ваші нещодавно додані внутрішні вершини також потребують фарбування ваги! Перейдіть до розділу Кістки ще раз, щоб присвоїти їх потрібним кісткам.
Після налаштування, ви отримаєте набагато кращі результати:
