Manuals
Manuals




This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this manual in English

Імпорт 3D-моделей

Defold підтримує моделі, скелети й анімації у форматі glTF 2.0 (GL Transmission Format). Для 3D-моделей використовуйте файли .gltf або .glb. glTF — це сучасний формат, призначений для передавання й завантаження 3D-даних в ігрових рушіях і застосунках реального часу.

Для створення 3D-моделей або їх перетворення у формат glTF можна використовувати такі інструменти, як Maya, 3ds Max, SketchUp і Blender.

Blender — це потужна й популярна програма для 3D-моделювання, анімації та рендерингу. Вона працює у Windows, macOS і Linux та доступна безкоштовно на https://www.blender.org.

Модель у Blender

Імпорт у Defold

Щоб імпортувати модель, перетягніть файл .gltf або .glb на панель Assets редактора Defold.

Є два поширені способи зберігання glTF:

  • .glb — це один двійковий файл. Він містить дані моделі, а також може містити упаковані зображення текстур. Це зручно, коли потрібно переміщувати або зберігати модель як один файл.
  • .gltf — це текстовий файл JSON. Зазвичай він посилається на окремий файл .bin з даними сітки (mesh) й окремі зображення текстур, наприклад .png, .jpg або .ktx2. Якщо використовуєте цей варіант, додайте до проєкту всі файли, на які є посилання, і збережіть їхні відносні шляхи без змін.

Вбудовані зображення можна використовувати безпосередньо з файлу glTF або GLB без видобування в окремі ресурси. Зовнішні файли зображень і буферів усе одно потрібно імпортувати разом із моделлю зі збереженням їхніх відносних шляхів.

Defold зберігає позиції та трансформації з імпортованого файлу glTF й не центрує модель автоматично під час імпорту. Попередній перегляд у редакторі та середовище виконання узгоджено використовують імпортовані трансформації: сітки зі скінінгом (skinning) або сітки, для яких кістки є батьківськими об’єктами, зберігають свої локальні трансформації відносно скелета, а жорсткі сітки зберігають своє розташування у світовому просторі після сплощення ієрархії.

Компонент Model може вибрати одну іменовану сітку з імпортованої сцени. Якщо залишити його поле Mesh порожнім, використовуватиметься вся сцена зі збереженням описаних вище трансформацій. Якщо вибрати сітку, використовуватиметься її локальна геометрія без трансформацій вузлів glTF, тому розміщуйте її за допомогою трансформації компонента моделі або ігрового об’єкта.

Якщо модель, створена в старішій версії Defold, після повторного імпорту змінює позицію або орієнтацію, виправте трансформацію в Blender чи іншому інструменті створення моделей і знову експортуйте файл .gltf або .glb.

Стиснена геометрія

Джерела .gltf і .glb можуть містити геометрію, стиснену Draco або Meshopt. Підтримуються такі розширення стиснення glTF:

Стиснення Розширення glTF
Draco KHR_draco_mesh_compression
Meshopt EXT_meshopt_compression і KHR_meshopt_compression

Експортуйте або оптимізуйте ресурс glTF 2.0 за допомогою одного з цих розширень, а потім імпортуйте так само, як нестиснену модель. Додайте всі зовнішні буфери й текстури та збережіть їхні відносні шляхи. Як зазвичай, призначте імпортований файл властивості Scene компонента Model.

Defold декодує стиснену геометрію під час імпорту й збирання. Отримана модель використовує звичайне подання геометрії Defold у середовищі виконання. Ця підтримка не вмикає стиснення Draco або Meshopt у запущеному рушії, а менший вихідний файл не гарантує меншого пакета гри.

Перегляд імпортованої сцени

Розгорніть файл .gltf або .glb на панелі Assets, щоб переглянути його сітки, згенеровані матеріали й вбудовані зображення. Відкриття сцени показує її попередній перегляд із визначеними матеріалами й текстурами. Також можна відкрити окрему сітку для попереднього перегляду.

Ресурси всередині файлу доступні лише для читання. Щоб створити редагований ресурс Model для сітки, скопіюйте її та вставте в папку проєкту. Отриманий файл .model і далі посилатиметься на імпортований glTF або GLB. Щоб змінити вихідну геометрію чи вбудовані зображення, відредагуйте ресурс у програмі, де його створено, і експортуйте знову.

Скрипти редактора можуть перелічувати ці ресурси через editor.resource_children(path). Приклад рекурсивного обходу ресурсів у папках і файлах glTF/GLB див. у розділі Обхід ресурсів проєкту.

Текстури KTX2

Текстури моделей можуть використовувати джерела .ktx2 — зовнішні файли або зображення, вбудовані у файл .gltf чи .glb. Імпортуйте зовнішні файли разом із моделлю. Вбудовані зображення KTX2 відображаються під сценою на панелі Assets, і їх можна призначати полям текстур матеріалу безпосередньо або через Auto Fill.

Профілі текстур визначають, чи зберігати вихідний формат KTX2, чи перетворювати його на налаштовані вихідні формати. Keep KTX2 Format зберігає формат кодування джерела, коли стиснення текстур увімкнено, але обробка зображень усе одно може потребувати повторного кодування. Перевірте підтримку формату на цільових пристроях і врахуйте можливу додаткову втрату якості під час повторного стиснення вже стисненої текстури. Див. Вхідні формати KTX2 та попередній перегляд.

Використання моделі

Після імпорту моделі використовуйте її в компоненті Model:

  1. Створіть файл Model на панелі Assets за допомогою New... ▸ Model або додайте компонент Model безпосередньо до ігрового об’єкта (game object) за допомогою Add Component ▸ Model.
  2. У властивості Scene вкажіть імпортований файл .gltf або .glb.
  3. Коли з’явиться діалог Auto Fill Model Fields?, виберіть Auto Fill, щоб призначити згенеровані матеріали сцени й текстури, на які вона посилається. Це замінить наявні прив’язки матеріалів і текстур. Виберіть Keep Current, щоб зберегти свої прив’язки; нова сцена все одно буде вибрана.
  4. Залиште Mesh порожнім, щоб використати всю сцену, або виберіть іменовану сітку, щоб використати лише її локальну геометрію. Зміна вибору сітки може показати той самий діалог: вибір сітки пропонує її матеріали, а очищення вибору — всі матеріали сцени. Keep Current зберігає прив’язки, застосовуючи новий вибір сітки.
  5. Для анімованої моделі у властивості Skeleton вкажіть файл .gltf або .glb, що містить скелет. Часто це той самий файл, що й для Scene, якщо сітку, скелет і анімації експортовано разом.
  6. Створіть файл Animation Set для анімацій і призначте його властивості Animations. Задайте Default Animation, якщо потрібно, щоб анімація запускалася автоматично.

Редактор пропонує заповнити прив’язки, коли вибране джерело glTF або GLB надає матеріали. Він розв’язує як вбудовані зображення, так і посилання на зовнішні зображення. Згенеровані матеріали використовують вбудовані шейдери glTF; про освітлення й підтримувані ефекти матеріалів див. посібник із PBR.

Призначення матеріалів і текстур вручну

Якщо вибрано Keep Current або потрібен власний шейдинг, задайте кожну властивість Material відповідним матеріалом. Вбудовані матеріали gltf надають шейдинг PBR; також доступні вбудовані матеріали model і власні матеріали. Про статичні, скінінгові й інстансингові варіанти та їхні вимоги див. посібник із моделей.

Призначте кожну текстуру відповідному полю текстури матеріалу. Можна використовувати вбудоване зображення під файлом glTF або GLB на панелі Assets або окремий ресурс зображення в проєкті. Для матеріалів із кількома семплерами зіставте кожну текстуру з потрібним семплером; посібник із PBR містить назви вбудованих семплерів glTF.

Експорт у glTF

Експортований файл .gltf або .glb містить усі вершини, ребра й грані, з яких складається модель, а також UV-координати (яка частина зображення текстури відповідає певній частині сітки), якщо ви їх визначили, кістки скелета й дані анімації.

  • Докладний опис полігональних сіток можна знайти на http://en.wikipedia.org/wiki/Polygon_mesh.

  • UV-координати й UV-відображення описано на http://en.wikipedia.org/wiki/UV_mapping.

Defold накладає деякі обмеження на експортовані дані анімації:

  • Наразі Defold підтримує лише запечені (baked) анімації. Анімації мають містити матриці для кожної анімованої кістки в кожному ключовому кадрі, а не позицію, поворот і масштаб як окремі ключі.

  • Анімації також інтерполюються лінійно. Якщо ви використовуєте складнішу інтерполяцію за кривими, анімації потрібно попередньо запекти за допомогою засобу експорту.

Вимоги

Під час експорту моделі враховуйте, що підтримка glTF може відрізнятися в різних інструментах і рушіях. Використовуйте glTF 2.0 й переконайтеся, що модель має правильні UV-координати, якщо вона використовує текстури. Зображення можуть бути вбудовані у файл glTF або GLB або зберігатися в окремих файлах, на які посилається сцена. Під час імпорту моделі в Defold додайте всі зовнішні файли зображень і буферів.

Ми прагнемо повністю підтримувати формат glTF, але поки що не досягли цього. Якщо якоїсь можливості бракує, створіть запит на її додавання в нашому репозиторії

Експорт текстури

Якщо хочете створити зображення текстури вручну, можна експортувати UV-розгортку з Blender як шаблон. Почніть із вибору сітки та всіх її вершин:

Вибір усіх вершин

Коли всі вершини вибрано, розгорніть сітку, щоб отримати UV-розгортку:

Розгортання сітки

Потім експортуйте UV-розгортку в зображення, яке можна використовувати як текстуру:

Експорт UV-розгортки

Результат експорту UV-розгортки

Експорт за допомогою Blender

Експортуйте модель із Blender за допомогою File ▸ Export ▸ glTF 2.0 (.glb/.gltf).

Експорт за допомогою Blender

Перед експортом виберіть об’єкт або об’єкти й увімкніть Selected Objects, якщо потрібно експортувати лише вибране.

Виберіть один із варіантів Format:

  • glTF Binary (.glb) створює один файл. Використовуйте цей варіант, якщо потрібно легко переміщувати або зберігати модель як один ресурс.
  • glTF Separate (.gltf + .bin + textures) створює окремі файли для опису моделі, двійкових даних і текстур. Використовуйте цей варіант, якщо потрібно редагувати зображення текстур або призначати їх у Defold окремо.

Якщо модель містить анімації, увімкніть експорт анімацій і переконайтеся, що їх запечено. Якщо модель використовує текстури, переконайтеся, що сітка має UV-розгортку, а зображення текстур експортовано у форматі, який Defold може імпортувати, наприклад PNG або JPEG.

Експорт за допомогою Blender