glTF 2.0

Орієнтир – Reference

Категорія – Category:
 Імпорт-Експорт – Import-Export
Меню – Menu:File ‣ Import/Export ‣ glTF 2.0 (.glb, .gltf)

Використання – Usage

glTF™ (GL Transmission Format) використовується для передачі та завантаження 3D моделей у веб та нативні застосунки. glTF зменшує розмір 3D моделей час робочий цикл обробляння, необхідні для розпакування та рендера цих моделей. Цей формат зазвичай використовується у веб та має підтримку у різних 3D рушіях, таких як Unity3D, Unreal Engine 4 та Godot.

Цей імпортер/експортер підтримує наступні функції glTF 2.0:

  • Сіті – Meshes
  • Матеріали – Materials (Principled BSDF) та Безвідтінковість – Shadeless (Unlit)
  • Текстури – Textures
  • Камери – Cameras
  • Пунктуальні освітлювачі – Punctual lights (точковий – point, прожектор – spot та направлений – directional)
  • Анімація – Animation (ключкадр – keyframe, ключ форми – shape key та покривання – skinning)

Сіті – Meshes

Внутрішня структура glTF імітує буфери пам’яті, поширено використовувані чіпами графіки при рендерингу у реальному часі, таким чином, що активи можуть бути випущені для настільних, веб або мобільних клієнтів та відразу показуватися з мінімальним оброблянням. У результаті, чотирибічники та N-бічники автоматично конвертуються у трикутники при експортуванні у glTF. Переривчасті UV та плоско відтінені ребра можуть призводити до помірно вищих рахунків вершин у glTF у порівнянні з Blender’ом, оскільки такі вершини є відокремлені для експорту. Аналогічно, криві та інші не-сітьові дані не зберігаться і повинні бути конвертовані у сіті перед експортом.

Матеріали – Materials

Ядро системи матеріалів у glTF підтримує робпотік типу металічність/шорсткість фізично базованого рендерингу – PBR з наступними каналами інформації:

  • Базовий Колір – Base Color
  • Металік – Metallic
  • Шорсткість – Roughness
  • Запечена Загорода Оточення – Baked Ambient Occlusion
  • Розкладка Нормалей – Normal Map
  • Емісійне – Emissive
../../_images/addons_io-gltf2_material-channels.jpg

Приклад різноманітних розкладок зображення, доступних у базовому форматі glTF 2.0. Це модель зразка пляшки для води – water bottle sample model, показана поруч з фрагментами різноманітних розкладок її зображення.

Імпортовані Матеріали – Imported Materials

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

Цей імпортер підтримує матеріали типів Металічність/Шорсткість – Metal/Rough PBR (core glTF), Бліковість/Глянсовість – Spec/Gloss PBR (KHR_materials_pbrSpecularGlossiness) та Безвідтінковість – Shadeless (KHR_materials_unlit) materials.

Порада

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

Експортовані Матеріали – Exported Materials

Експортер підтримує матеріали типів Металічність/Шорсткість – Metal/Rough PBR (core glTF) та Безвідтінковість – Shadeless (KHR_materials_unlit). Він буде конструювати матеріал glTF, базуючись на вузлах, які він розпізнає у матеріалі Blender’а. Процес експорту матеріалу обробляє устави, описані нижче.

Примітка

При використанні матеріалами текстур зображення, glTF вимагає, щоб такі зображення були у форматі PNG або JPEG. Цей додаток автоматично конвертує зображення з інших форматів, збільшуючи час експорту.

Порада

Для створення безвідтінкових матеріалів – Shadeless (Unlit), використовуйте тип матеріалу Фон – Background.

Базовий Колір – Base Color

Базовий колір glTF визначається пошуком уводу Базовий Колір – Base Color на вузлі Принципове BSDF – Principled BSDF node. Якщо цей увід непід’єднаний, то стандартний колір цього уводу (поле кольору біля цього непід’єднаного роз’єму) використовується як Базовий Колір – Base Color для матеріалу glTF.

../../_images/addons_io-gltf2_material-baseColor-solidGreen.png

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

Якщо вузол Текстура Зображення – Image Texture виявлено під’єднаним до уводу Базовий Колір – Base Color, то це зображення буде вжите як базовий колір glTF.

../../_images/addons_io-gltf2_material-baseColor-imageHookup.png

Зображення використовується як базовий колір glTF.

Металік та Шорсткість – Metallic and Roughness

Ці значення читаються з вузла Принципове BSDF – Principled BSDF. Якщо обидва ці уводи непід’єднані, то це вузол показуватиме повзунки для керування їх відповідними значеннями між 0.0 та 1.0, і ці значення будуть скопійовані у glTF.

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

У дереві вузлів Blender рекомендується використовувати вузол Відокремлення RGB – Separate RGB для відокремлення каналів з вузла Текстура Зображення – Image Texture, і з’єднує канал зеленого (G) із Шорсткість – Roughness, а синього (B) з Металік – Metallic. Експортер glTF розпізнає це упорядкування як узгоджування зі стандартом glTF, і це дозволить йому просто копіювати цю текстуру зображення у файл glTF під час експорту.

Вузол Текстура Зображення – Image Texture для цього повинен мати уставу Простір Кольорів – Color Space, установлену як Non-Color.

../../_images/addons_io-gltf2_material-metalRough.png

Зображення металічності/шорсткості, під’єднане таким чином, узгоджене зі стандартом glTF, дозволяє йому використовуватися дослівно всередині експортованого файлу glTF.

Запечена Загорода Оточення – Baked Ambient Occlusion

glTF здатний зберігати розкладку запеченої загороди оточення. Поточно не існує впорядкування вузлів, що спричиняє використання Blender’ом такої розкладки точно так само, як задумано у glTF. Проте, якщо експортер виявляє кастомну групу вузлів на ім’я glTF Settings та знаходить увід на ім’я Загорода – Occlusion на такому груповому вузлі, то він буде шукати вузол Текстура Зображення – Image Texture, прикріплений там для вживання як розкладки загороди у glTF. Цей ефект не потребує бути показаним у Blender’і, оскільки Blender має інші способи показування загороди оточення, але цей метод дозволить експортеру записати зображення загороди у glTF. Це може бути корисним для оглядачів glTF у реальному часі, особливо на платформах, де може не бути запасної потужності для обчислювання таких речей у ході рендера.

../../_images/addons_io-gltf2_material-occlusionOnly.png

Попередньо запечена розкладка загороди оточення, під’єднана до вузла, що не рендериться, але буде експортуватися у glTF.

Порада

Найлегший спосіб створити кастомну групу вузлів – імпортувати наявну модель glTF, що містить розкладку загороди, таку як water bottle або іншу наявну модель. Вручну створена кастомна група вузлів також може використовуватися.

glTF зберігає загороду у каналі червоного (R), дозволяючи факультативно співволодіти тим самим зображенням каналам шорсткості та металічності.

../../_images/addons_io-gltf2_material-orm-hookup.png

Ця комбінація вузлів імітує спосіб, яким glTF пакує значення загороди, шорсткості та металічності в єдине зображення.

Порада

Рушія рендера Cycles має панель Bake, що може використовуватися для запікання розкладок загороди оточення. Результатне зображення може зберігатися та під’єднуватися безпосередньо до вузла glTF Settings.

Розкладка Нормалей – Normal Map

Для використання розкладки нормалей у glTF, з’єднується вивід кольору вузла Текстура Зображення – Image Texture з уводом кольору вузла Розкладка Нормалей – Normal Map, а потім з’єднується вивід нормалі вузла Розкладка Нормалей – Normal Map з уводом нормалі вузла Принципове BSDF – Principled BSDF. Вузол Image Texture для цього повинен мати його властивість Color Space, установлену як Non-Color.

Вузол Розкладка Нормалей – Normal Map повинен залишатися зі своєю стандартною властивістю Простір Тангенса – Tangent Space, оскільки це єдиний тип розкладки нормалей, поточно підтримуваний у glTF. Сила розкладки нормалей може наладнуватися на цьому вузлі. Експортер не експортує ці вузли безпосередньо, а використовуватиме їх для знаходження коректного зображення та копіюватиме уставу сили у glTF.

../../_images/addons_io-gltf2_material-normal.png

Зображення розкладки нормалей під’єднується таким чином, що експортер виявить його та скопіює у файл glTF.

Порада

Рушія рендера Cycles має панель Bake, що може використовуватися для запікання розкладок нормалей з простором тангенса з майже будь-якого іншого упорядкування вузлів вектора нормалі. Перемкніть тип Запікання – Bake на Нормаль – Normal. Зберігайте устави стандартного простору (простір: Тангенс – Tangent, R: +X, G: +Y, B: +Z) при використанні цієї панелі запікання для glTF. Результатне запечене зображення може бути збережено та під’єднано у новий матеріал, використовуючи вузол Розкладка Нормалей – Normal Map, як описано вище, дозволяючи його експортувати коректно.

Дивіться детальніше тут: Cycles Render Baking

Емісійне – Emissive

Вузол Текстура Зображення – Image Texture може бути під’єднано до відтінювального вузла Емісія – Emission, і факультативно комбіновано з властивостями з вузла Принципове BSDF – Principled BSDF за допомогою вузла Додаваний Шейдер – Add Shader.

Якщо експортер glTF знаходить зображення, під’єднане до вузла шейдерів Емісія – Emission, то він експортуватиме таке зображення як емісійну текстуру матеріалу glTF.

../../_images/addons_io-gltf2_material-emissive.png

Вузол Emission може додаватися до наявних вузлів.

Примітка

Увід Emission вузла Principled BSDF ще не підтримується цим експортером. Це може змінитися у майбутній версії.

Двобічне / Відкид Тилу – Double Sided / Backface Culling

Для матеріалів, де лише передні грані будуть видимі, вмикайте Backface Culling у панелі Settings матеріалу для Eevee. При використовуванні інших рушіїв (Cycles, Workbench) ви можете тимчасово перемикатися на Eevee для конфігурування цієї устави, потім перемикатися назад.

Залишайте цей стяг вимкненим для двобічних матеріалів.

../../_images/addons_io-gltf2_material-backfaceCulling.png

Інверсія цієї устави керується стягом DoubleSided для glTF.

Режими Змішання – Blend Modes

Увід Базовий Колір – Base Color може факультативно подавати значення альфа. Як ці значення обробляються в glTF, залежить від вибраного режиму змішання.

При обраному рушії рендера Eevee, кожен матеріал має Режим Змішання – Blend Mode на панелі устав матеріалу. Вживайте цю уставу для визначення того, як значення альфа з каналу Базовий Колір – Base Color обробляються у glTF. Три устави підтримуються glTF:

Безпрозоро – Opaque
Значення альфа ігноруються (стандарт).
Змішання Альфа – Alpha Blend
Нижчі значення альфа спричиняють змішування з об’єктами фону.
Відсік Альфа – Alpha Clip
Значення альфа, нижче устави Поріг Відсіку – Clip Threshold, спричинятимуть, що частини матеріалу не будуть рендерені взагалі. Все інше рендериться як безпрозоре.
../../_images/addons_io-gltf2_material-alphaBlend.png

При обраному рушії Eevee режими змішання матеріалу можна конфігурувати.

Примітка

Знайте, що прозорість (або режим Змішання Альфа – Alpha Blend) є складним для реально-часових рушіїв для рендера і може поводитися неочікувано після експорту. Де це можливо, вживайте режим Відсік Альфа – Alpha Clip натомість, або помістіть полігони з Безпрозоро – Opaque позаду лише одиничного шару багатобічників зі Змішання Альфа – Alpha Blend.

Розкладання UV – UV Mapping

Контроль над вибором розкладки UV та трансформації доступні шляхом з’єднання вузла Розкладка UV – UV Map та вузла Розкладання – Mapping із будь-яким вузлом Текстура Зображення – Image Texture.

Устави з вузла Mapping експортуються, використовуючи розширення glTF іменоване як KHR_texture_transform. Там є вибір типу розкладання у верхній частині. Point – «Вказування» є рекомендованим типом для експорту. Texture – Текстура та Vector – «Вектор» також підтримуються. Підтримуваними зсувами є:

  • Локація – Location - X та Y
  • Обертання – Rotation - Z лише
  • Масштаб – Scale - X та Y

Для типу Текстура – Texture, Масштаб – Scale X та Y повинні бути рівними (однорідне масштабування).

../../_images/addons_io-gltf2_material-mapping.png

Обміркований вибір розкладання UV.

Порада

Ці вузли є факультативними. Не всі зчитувачі glTF підтримують багато розкладок UV або трансформ текстури.

Фактори – Factors

Будь-які вузли Текстура Зображення – Image Texture можуть факультативно множиться на сталий колір чи скаляр. Вони будуть записані як фактори у файлі glTF, котрі є числами, що множаться із визначеними текстурами зображення. Вони не є поширеними.

Приклад – Example

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

../../_images/addons_io-gltf2_material-principled.png

Матеріал на основі Принципове BSDF – Principled BSDF з емісійною текстурою.

Розширення – Extensions

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

Певні функціональні можливості Blender’а можуть експортуватися у glTF лише через ці розширення. Наступні glTF 2.0 extensions підтримуються безпосередньо цим додатком:

Імпорт – Import

  • KHR_materials_pbrSpecularGlossiness
  • KHR_lights_punctual
  • KHR_materials_unlit
  • KHR_texture_transform

Експорт – Export

  • KHR_draco_mesh_compression
  • KHR_lights_punctual
  • KHR_materials_unlit
  • KHR_texture_transform

Анімація – Animation

glTF дозволяє багато анімацій для кожного файлу, з анімаціями, націленими на конкретні об’єкти під час експорту. Щоб переконатися, що анімація включена, або (a) зробіть її активною Дією – Action на об’єкті, або (b) створіть стежку з однією смужкою НЛА, або (c) запасіть її дію.

Підтримуване – Supported

Лише певні типи анімації підтримуються:

  • Ключкадрове – Keyframe (пересування, обертання, масштабування)
  • Ключі форм – Shape keys
  • Арматури / покривання – Armatures / skinning

Анімація інших властивостей, як освітлювачі або матеріали, буде проігнорована.

Смужка NLA Strip animation складається з кількох дій на кількох об’єктах, що повинні грати разом. Для створення смужки НЛА анімації з іменем «My Animation» штовхніть дію, що повинна гратися кожного об’єкта на стежку НЛА для такого об’єкта з іменем «My Animation».

../../_images/addons_io-gltf2_animation-nla-strip-animation-example.png

Буде експортуватися як анімація під назвою «My Animation» з гранням ConeAction на Конусі та гранням CubeAction на Кубі.

Анімації смужок НЛА будуть експортуватися, якщо опція Animation ‣ NLA Strips, є вибраною (увімкнена стандартно). Всі анімації glTF імпортуються анімації смужки НЛА.

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

Кастомні Властивості – Custom Properties

Кастомні властивості на більшості об’єктів зберігаться в експорті/імпорті glTF, і можуть використовуватися для визначених користувачем цілей.

Варіації Формату Файлу – File Format Variations

Специфікація glTF визначає різні можливі способи зберігання даних. Імпортер обробляє всі ці способи. Експортер попросить користувача вибрати одну з наступних форм:

Двійково – glTF Binary (.glb)

Це продукує єдиний файл .glb з усіма даними сіті, текстурами зображення та пов’язаною інформацією, запакованими в одиничний двійковий файл.

Порада

Використання єдиного файлу полегшує співволодіння та копіювання моделі на інші системи та сервіси.

Відокремлено – glTF Separate (.gltf + .bin + текстури)

Це продукує у форматі JSON текст-базований файл .gltf, що описує загальну структуру, разом із файлом .bin, що містить дані сітей та векторів, а також факультативно ряд файлів у форматах .png або .jpg, що містять текстури зображення, на які посилається цей файл .gltf.

Порада

Наявність асортименту окремих файлів значно полегшує для користувача можливість повернутися та редагувати будь-які JSON або зображення після того, як експорт завершено.

Примітка

Знайте, що спільне використання цього формату вимагає спільного використання всіх цих окремих файлів разом як групи.

Вбудовано – glTF Embedded (.gltf)

Це продукує у форматі JSON текст-базований файл .gltf, з усіма даними сітей та даними зображень, закодованими (використовуючи Base64) у цьому файлі. Ця форма корисна, якщо актив повинен спільно використовуватися за допомогою з’єднання на основі лише звичайного тексту.

Попередження

Це найменш ефективна з доступних форм, і повинна вживатися лише тоді, коли це необхідно.

Властивості – Properties

Імпорт – Import

Pack Images – Упакувати Зображення
Запаковуються всі зображення у файл blend.
Shading – Відтінювання
Як нормалі обчислюються під час імпорту.

Експорт – Export

General Tab – Вкладка «Загальне»

Format – Формат
Дивіться: File Format Variations
Selected Objects – Вибрані Об’єкти
Експортуються лише вибрані об’єкти.
Apply Modifiers – Застосувати Модифікатори
Застосовуються модифікатори (за винятком арматур) до об’єктів сіті.
Y Up – Y Уверх
Експорт вживає умовність glTF, +Y уверх.
Кастомні Властивості – Custom Properties
Кастомні властивості експорту як добавки glTF.
Remember Export Settings – Пам’ятати Устави Експорту
Зберігаються устави експорту у файл Blender, щоб вони викликалися наступного разу, коли цей файл відкривається.
Copyright – Авторське право
Юридичні права та умови для моделі.

Meshes Tab – Вкладка «Сіті»

UVs – UVи
Експортуються UVи (координати текстур) із сітями.
Normals – Нормалі
Експортуються нормалі вершин із сітями.
Tangents – Тангенси
Експортуються тангенси вершин із сітями.
Vertex Colors – Кольори Вершин
Експортуються кольори вершин із сітями.
Матеріали – Materials
Експортуються матеріали.
Draco mesh compression – Стиснення сіті Draco
Стискаються сіті за допомогою Google Draco.
Compression level – Рівень стиснення
Вище стиснення призводить до повільнішого закодовування та розкодовування.
Position quantization bits – Квантування бітів позицій
Вищі значення призводять до кращого стиснення.
Normal quantization bits – Квантування бітів нормалей
Вищі значення призводять до кращого стиснення.
Texcoord quantization bits – Квантування бітів координат текстур
Вищі значення призводять до кращого стиснення.

Objects Tab – «Вкладка Об’єкти»

Камери – Cameras
Експортуються камери.
Punctual Lights – Пунктуальні Освітлювачі
Експортуються направлені, точкові та прожекторні освітлювачі. Використовує glTF розширення KHR_lights_punctual.

Animation Tab – Вкладка «Анімація»

Use Current Frame – Вжити Поточний Кадр
Експортуються сцена у поточному кадрі анімації.
Animations – Анімації
Експортує активні дії та стежки НЛА як анімації glTF.
Limit to Playback Range – Лімітувати Діапазоном Програвання
Обрізає анімації відповідно до вибраного діапазону програвання.
Sampling Rate – Частота Відбору
Як часто обчислювати анімовані значення (у кадрах).
Always Sample Animations – Завжди Вибірка Анімацій
Застосовується відбір до всіх анімацій.
NLA Strips – Смужки НЛА
Чи експортувати анімації смужок НЛА.
Skinning – Покривання
Експортуються дані покривання (арматура).
Bake Skinning Constraints – Запекти Примуси Покривання
Застосовуються примуси покривання до арматур.
Include All Bone Influences – Включити Усі Впливи Кісток
Дозволяються впливи суглобів на >4 вершин. Моделі можуть показуватися некоректно у багатьох оглядачах.
Shape Keys – Ключі Форм
Експортуються ключі форм (цілі морфа).
Shape Key Normals – Ключі Форм із Нормалями
Експортуються нормалі вершин із ключами форм (цілі морфа).
Shape Key Tangents – Ключі Форм із Тангенсами
Експортуються тангенси вершин із ключами форм (цілі морфа).

Зроблення внеску – Contributing

Цей імпортер/експортер розробляється через репозиторій glTF-Blender-IO repository, де ви можете подавати звіти про вади, пропонувати запити про функції або вносити код.

Обговорення та розроблення власне формату glTF 2.0 відбувається у групі Khronos Group glTF GitHub repository, і відгук там вітається.