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...
Введення в 3D
Створення тривимірної гри може бути складним завданням. Ця додаткова координата Z робить багато звичайних прийомів, які допомогли спростити 2D-ігри, більше не працюють. Щоб допомогти в цьому переході, варто згадати, що Godot використовує схожі API для 2D і 3D. Більшість вузлів однакові і присутні як у 2D, так і в 3D версіях. Насправді, варто перевірити підручник з 3D-платформера або 3D-кінематичних персонажів, які майже ідентичні своїм двовимірним аналогам.
Демоверсія Godot Third Person Shooter (TPS), доступна в репозиторії Github або Asset Library.
У 3D математика трохи складніша, ніж у 2D. Щоб отримати вступ до відповідної математики, написаний для розробників ігор, а не для математиків чи інженерів, перегляньте Векторна математика і Використання 3D перетворень.
3D робочий простір
Редагування 3D-сцен виконується в робочому просторі 3D. Цю робочу область можна вибрати вручну, але вона буде автоматично вибрана, коли вибрано вузол Node3D.
Подібно до 2D, вкладки під селектором робочої області використовуються для перемикання між поточними відкритими сценами або створення нової за допомогою кнопки плюс (+). Ліва та права доки повинні бути знайомі з editor introduction.
Під селектором сцени видно головну панель інструментів, а під головною панеллю інструментів — вікно тривимірного перегляду.
Головна панель інструментів
Деякі кнопки на головній панелі інструментів такі самі, як і в 2D робочій області. Якщо навести курсор миші на кнопку протягом однієї секунди, надається коротке пояснення. Деякі кнопки можуть мати додаткові функції, якщо натиснути іншу клавішу. Короткий опис основних функцій кожної кнопки з її типовим ярликом наведено нижче зліва направо:
Transform Mode (Q): Enables a combined move + rotation mode for the selected nodes.
Режим переміщення (W): вмикає режим переміщення (або перекладу) для вибраних вузлів. Додаткову інформацію див. у Простір і маніпуляція gizmos.
Режим обертання (E): вмикає режим обертання для вибраних вузлів. Додаткову інформацію див. у Простір і маніпуляція gizmos.
Режим масштабування (R): вмикає масштабування та відображає інструменти масштабування на різних осях для вибраних вузлів. Додаткову інформацію див. у Простір і маніпуляція gizmos.
Режим вибору (Q): Дозволяє вибирати вузли у вікні перегляду. Клацніть лівою кнопкою миші вузол, щоб вибрати його. Клацання лівою кнопкою миші та перетягування прямокутника вибирає всі вузли в межах прямокутника після відпускання. Утримуючи Shift під час виділення, до виділення додається більше вузлів. Клацання на вибраному вузлі, утримуючи Shift, скасовує вибір вузла. У цьому режимі ви можете використовувати гізмо для виконання руху або обертання.
Показати список доступних для вибору вузлів у положенні клацання: як підказує опис, це надає список доступних для вибору вузлів у положенні клацання у вигляді контекстного меню, якщо в області клацання є більше одного вузла.
Заблокуйте (Ctrl + L) вибрані вузли, запобігаючи виділенню та переміщенню у вікні перегляду. Повторне натискання кнопки (або використання Ctrl + Shift + L) розблокує вибрані вузли. Заблоковані вузли можна вибрати лише в дереві сцени. Їх можна легко ідентифікувати за допомогою замка поруч із їхніми назвами вузлів у дереві сцени. Натискання на цей замок також розблокує вузли.
Згрупувати вибрані вузли (Ctrl + G). Це дозволяє вибрати кореневий вузол, якщо вибрано будь-який із дочірніх вузлів. Використання Ctrl + G розгруповує їх. Крім того, клацання кнопки розгрупувати в дереві сцени виконує ту саму дію.
Режим лінійки (M): якщо ввімкнено, ви можете натиснути та перетягнути, щоб виміряти відстань у сцені в метрах.
Використовувати локальний простір (T): якщо ввімкнено, гізмо вузла малюються з використанням кута повороту поточного вузла замість global viewport axes.
Використовувати прив’язку (Y): якщо ввімкнено, рух і обертання прив’язуються до сітки. Прив’язку також можна тимчасово активувати за допомогою Ctrl під час виконання дії. Параметри для зміни параметрів прив’язки пояснюються нижче.
Use Trackball (U): When enabled, dragging the center of a node (represented by a subtle ray disc highlight) will rotate the node like a physical trackball.
Preserve Children Transform (P): When enabled, transforming a node will preserve the global transform of its children.
Увімкнути попередній перегляд сонячного світла: якщо в сцені немає DirectionalLight3D, попередній перегляд сонячного світла можна використовувати як джерело світла. Додаткову інформацію див. у Попередній перегляд середовища та освітлення.
Переключити середовище попереднього перегляду: якщо в сцені немає світового середовища, попередній перегляд середовища можна використовувати як заповнювач. Додаткову інформацію див. у Попередній перегляд середовища та освітлення.
Редагувати параметри сонця та навколишнього середовища (три крапки): відкриває меню для налаштування параметрів попереднього перегляду сонячного світла та навколишнього середовища. Додаткову інформацію див. у Попередній перегляд середовища та освітлення.
Меню трансформації: має три параметри:
Прив’язати об’єкт до підлоги: прив’язує об’єкт до твердої підлоги.
Діалогове вікно перетворення: відкриває діалогове вікно для налаштування параметрів перетворення (перетворення, обертання, масштабування та перетворення) вручну.
Параметри прив’язки: дозволяє змінювати параметри трансформації, повороту прив’язки (у градусах) і масштабування прив’язки (у відсотках).
Меню перегляду: керує параметрами перегляду та вмикає додаткові вікна перегляду:
У цьому меню ви також можете показати/приховати сітки, які за замовчуванням встановлено на 1x1 метр, і початок координат, де перетинаються синя, зелена та червона лінії осі. Крім того, у цьому меню можна перемикати певні типи гізмо.
Відкрите око означає, що штучку видно, закрите око означає, що вона прихована. Напіввідкрите око означає, що його також видно через непрозорі поверхні.
Натискання на Налаштування в цьому меню перегляду відкриває вікно для зміни параметра Вертикального поля зору (VFOV) (у градусах), значень Z-Near і Z-Far.
Поруч із меню «Перегляд» можуть відображатися додаткові кнопки. На зображенні панелі інструментів на початку цієї глави з’являється додаткова кнопка Mesh, оскільки вибрано MeshInstance3D. Це меню містить деякі швидкі дії або інструменти для роботи з певним вузлом або виділенням.
Система координат
Godot використовує метричну систему для всього в 3D, причому 1 одиниця дорівнює 1 метру. Фізика та все інше пристосовані до цієї шкали. Тому спроба використовувати іншу шкалу, як правило, погана ідея (якщо ви не знаєте, що ви робите).
Працюючи з 3D-ресурсами, завжди найкраще працювати в правильному масштабі (встановіть одиницю виміру на метричну систему у програмі для 3D-моделювання). Godot дозволяє масштабувати після імпорту, і, хоча це працює в більшості випадків, у рідкісних ситуаціях це може викликати проблеми з точністю числа з плаваючою комою (і, отже, збої або артефакти) у делікатних областях, таких як рендеринг або фізика. Переконайтеся, що ваші художники завжди працюють у правильному масштабі!
Координата Y використовується для «вгору». Що стосується горизонтальних осей X/Z, Godot використовує правосторонню систему координат. Це означає, що для більшості об’єктів, які потребують вирівнювання (таких як освітлювальні прилади чи камери), вісь Z використовується як напрямок «вказує на». Ця конвенція приблизно означає, що:
X це сторони
Y це верх і низ
Z це перед і зад
Перегляньте цю діаграму для порівняння з іншим програмним забезпеченням 3D:
Автор зображення Freya Holmér
Простір і маніпуляція gizmos
Переміщення, обертання та масштабування об’єктів у 3D-виді здійснюється за допомогою гізмо маніпулятора. Кожна вісь представлена кольором: червоний, зелений, синій представляють X, Y, Z відповідно. Ця угода також стосується сітки та інших гізмо (а також мови шейдерів, упорядкування компонентів для Vector3, Color тощо).
Деякі корисні прив'язки клавіш:
Щоб прив’язати розташування або поворот, натисніть Ctrl під час переміщення, масштабування або обертання.
Щоб центрувати вид на виділеному об'єкті, натисніть клавішу F.
У вікні перегляду можна клацати й утримувати стрілки, щоб перемістити об’єкт по осі. Щоб повернути об’єкт, можна натиснути та утримувати дуги. Щоб зафіксувати одну вісь і вільно переміщувати об’єкт по двох інших осях, кольорові прямокутники можна клацати, утримувати та перетягувати.
Якщо режим трансформації змінено з Режим вибору на Режим масштабування, стрілки буде замінено кубиками, які можна перетягувати, щоб масштабувати об’єкт так, ніби об’єкт переміщується.
Використання ярликів трансформації у стилі Blender
Починаючи з Godot 4.2, ви можете ввімкнути ярлики у стилі Blender для перекладу, обертання та масштабування вузлів. У Blender ці ярлики:
G для перекладу
R для обертання
S для масштабування
Після натискання клавіш швидкого доступу під час фокусування на вікні перегляду 3D-редактора перемістіть мишу або введіть число, щоб перемістити вибрані вузли на вказану величину в 3D-одиницях. Ви можете обмежити рух певною віссю, вказавши вісь як літеру, а потім відстань (якщо вводите значення за допомогою клавіатури).
Наприклад, щоб перемістити виділення вгору на 2,5 одиниці, введіть таку послідовність у порядку (Y+ вгору в Godot):
G-Y-2-.-5-Enter
Щоб використовувати ярлики перетворення у стилі Blender у Godot, перейдіть на вкладку Ярлики налаштувань редактора, а потім у розділі «Просторовий редактор»:
Прив’яжіть Почати трансформацію перекладу до G.
Прив’яжіть Почати трансформацію повороту до R.
Прив’яжіть Почати трансформацію масштабу до S.
Нарешті, відключіть Режим масштабування, щоб його ярлик не конфліктував із Почати трансформацію повороту.
Порада
Інші комбінації клавіш можна знайти на сторінці 3D / Просторовий редактор.
Вузол Node3D
Node2D є базовим вузлом для 2D. Control є базовим вузлом для всього GUI. Дотримуючись цього міркування, механізм 3D використовує вузол Node3D для всього 3D.
Node3D мають локальне перетворення, яке є відносно батьківського вузла (за умови, що батьківський вузол також має або успадковує тип Node3D). Доступ до цього перетворення можна отримати як 3×4 Transform3D або як 3 Vector3 елементи, що представляють розташування, поворот Ейлера (кути X, Y і Z) і масштаб.
3D-вміст
На відміну від 2D, де завантаження вмісту зображення та малювання є простим, 3D трохи складніше. Контент потрібно створити за допомогою спеціальних 3D-інструментів (також званих інструментами створення цифрового вмісту або DCC) і експортувати у формат обмінного файлу для імпорту в Godot. Це необхідно, оскільки 3D-формати не настільки стандартизовані, як зображення.
Згенерована геометрія
Створити власну геометрію можна за допомогою безпосереднього ресурсу ArrayMesh. Просто створіть свої масиви та використовуйте функцію ArrayMesh.add_surface_from_arrays(). Також доступний допоміжний клас SurfaceTool, який надає простіший API та помічників для індексації, генерування норм, дотичних тощо.
У будь-якому випадку цей метод призначений для генерації статичної геометрії (моделі, які не будуть оновлюватися часто), так як створення вершинних масивів і перенесення їх в 3D API створює значні навантаження на продуктивність.
Примітка
Щоб дізнатися про створення прототипів у Godot або за допомогою зовнішніх інструментів, перегляньте Прототипування рівнів з CSG.
Безпосередня геометрія
Якщо замість цього вам потрібно створити просту геометрію, яка буде часто оновлюватися, Godot надає спеціальний ресурс ImmediateMesh, який можна використовувати у вузлі MeshInstance3D. Це надає API негайного режиму у стилі OpenGL 1.x для створення точок, ліній, трикутників тощо.
2D в 3D
Godot містить потужний 2D-рушій, однак багато типів ігор використовують 2D в 3D-середовищі. Використовуючи фіксовану камеру (або ортогональну, або перспективну), яка не обертається, такі вузли, як Sprite3D та AnimatedSprite3D, можуть бути використані для створення 2D-ігор, які використовують переваги змішування з 3D-фонами, реалістичнішими паралаксами, світловими/тіньовими ефектами тощо.
Недоліком, звичайно ж, є те, що зростає складність і падає продуктивність в порівнянні з простим 2D, а також відсутність прив'язки до роботи з пікселями.
Середовище
Крім редагування сцени, часто треба редагувати навколишнє середовище. Godot надає вузол WorldEnvironment, який дозволяє змінювати колір фону, режим (наприклад відображення коробки неба) і застосовувати кілька типів вбудованих ефектів після обробки. Середовища також можуть бути перевизначені в вузлі Камери.
Попередній перегляд середовища та освітлення
За замовчуванням для будь-якої 3D-сцени, яка не має вузла WorldEnvironment або DirectionalLight3D, буде ввімкнено попередній перегляд того, чого не вистачає для освітлення сцени.
Світло попереднього перегляду та середовище буде видно лише в сцені під час роботи в редакторі. Якщо ви запустите сцену або експортуєте проект, вони не вплинуть на сцену.
Світло попереднього перегляду та середовище можна ввімкнути або вимкнути у верхньому меню, натиснувши відповідну піктограму.
Спадне меню з трьома крапками поруч із цими піктограмами можна використовувати для налаштування властивостей середовища попереднього перегляду та освітлення, якщо їх увімкнено.
Для кожної сцени в одному проекті використовується однакове сонце попереднього перегляду та середовище, тому вносьте лише ті налаштування, які стосуватимуться всіх сцен, для яких вам знадобляться освітлення та середовище попереднього перегляду.
Фотоапарати
Незалежно від того, скільки об’єктів розміщено в 3D-просторі, нічого не відображатиметься, якщо до сцени також не буде додано Camera3D. Камери можуть працювати як в ортогональних, так і в перспективних проекціях:
Камери пов'язані (і відображаються тільки для нього) з вікном перегляду батька, або прабатька. Оскільки корінь дерева сцени є вікном перегляду, камери будуть відображатися на ньому за замовчуванням, але якщо потрібні субпозиції (або як візуалізація цілі, або зображення на малюнку), їм потрібні власні дитячі камери для відображення.
Під час роботи з кількома камерами для кожного вікна перегляду застосовуються такі правила:
Якщо в дереві сцени немає камер, то перша ж додана камера, стане активною камерою. Подальші додані до сцени камери, будуть проігноровані (якщо вони не встановлені як поточні).
Якщо камера має задану властивість "поточна", вона буде використовуватися незалежно від будь-якої іншої камери в сцені. Якщо властивість встановлено, вона стане активною, замінивши попередню камеру.
Якщо активна камера покине дерево сцени, її місце займе перша камера в порядку дерева.
Освітлення
Фонове середовище випромінює навколишнє світло, яке з’являється на поверхнях. Тим не менш, без будь-яких джерел світла, розташованих у сцені, сцена буде виглядати досить темною, якщо фонове середовище не дуже яскраве.
Більшість сцен на відкритому повітрі мають спрямоване світло (сонце або місяць), тоді як сцени в приміщенні зазвичай мають кілька позиційних джерел світла (лампи, смолоскипи тощо). Перегляньте 3D світло та тіні для отримання додаткової інформації про налаштування світла в Godot.