Формат glTF 2.0 (GL Transmission Format)
предназначен для эффективной передачи 3D-моделей и сцен с текстурами,
анимациями и материалами. Он является современным стандартом для
веб-ориентированных 3D-приложений благодаря своей компактности, скорости
загрузки и совместимости с движками WebGL. В A-Frame поддержка glTF
реализована через компонент <a-entity> с атрибутом
gltf-model, что позволяет интегрировать модели напрямую в
сцену.
<a-entity gltf-model="url(model.glb)" position="0 1 -3"></a-entity>
Ключевые моменты:
url(model.glb) — путь к бинарной версии модели
(.glb) или текстовой (.gltf) с сопровождающими
файлами.animation-mixer.В веб-проектах рекомендуется использовать .glb для
ускорения загрузки и уменьшения задержек при рендеринге.
glTF 2.0 использует PBR-материалы, поддерживающие следующие карты:
Пример интеграции PBR-материала через glTF в A-Frame:
<a-entity gltf-model="url(robot.glb)" position="0 0 -5" rotation="0 180 0"></a-entity>
Фактические свойства материала настраиваются внутри 3D-редактора (Blender, Maya) перед экспортом. A-Frame автоматически применяет карты PBR, если они включены в модель.
Компонент animation-mixer позволяет
проигрывать анимации glTF:
<a-entity gltf-model="url(robot.glb)" animation-mixer position="0 0 -5"></a-entity>
Особенности работы:
const entity = document.querySelector('[gltf-model]');
const mixer = entity.components['animation-mixer'].mixer;
const action = mixer.clipAction('Walk');
action.play();
KHR_draco_mesh_compression).glTF 2.0 поддерживает физически корректные материалы, поэтому освещение сцены критически важно. Рекомендуется использовать комбинацию:
Пример добавления освещения:
<a-entity light="type: directional; color: #ffffff; intensity: 1" position="1 3 2"></a-entity>
Модели glTF часто требуют интеграции с физическим движком, например
ammo.js или cannon.js в A-Frame. Важно
использовать упрощенные коллайдеры, а не саму
высокополигональную геометрию, чтобы избежать падений FPS.
<a-entity gltf-model="url(box.glb)" static-body></a-entity>
glTF 2.0 поддерживает расширения, расширяющие функционал:
KHR_lights_punctual — точечные источники света,
встроенные в модель.KHR_materials_unlit — материалы без освещения, полезно
для UI и декоративных элементов.KHR_draco_mesh_compression — сжатие геометрии для
ускорения загрузки.A-Frame автоматически применяет большинство стандартных расширений, но кастомные расширения могут потребовать дополнительной обработки через JavaScript.
.glb для production-сцен и
.gltf для разработки и отладки.Эффективное использование glTF 2.0 в A-Frame позволяет создавать высококачественные, анимированные и оптимизированные веб-сцены, обеспечивая баланс между визуальной детализацией и производительностью.