A-Frame — это веб-фреймворк на основе JavaScript, предназначенный для
создания виртуальной и дополненной реальности в браузере. Основой любой
сцены является HTML-разметка, построенная вокруг кастомного элемента
<a-scene>. Этот элемент служит контейнером для всех
объектов и компонентов сцены.
<a-scene>
<!-- Объекты сцены будут размещаться здесь -->
</a-scene>
<a-scene> может содержать три
ключевых типа элементов: камеры, световые
источники и 3D-объекты. Каждая из этих
категорий имеет свои особенности и свойства.
Камера в A-Frame задается элементом <a-camera>.
Она определяет точку обзора пользователя в сцене. Основные атрибуты
камеры:
x y z.x y z.Пример камеры с управлением:
<a-camera position="0 1.6 0" look-controls="true" wasd-controls="true"></a-camera>
A-Frame поддерживает несколько типов источников света:
Пример добавления источника света:
<a-entity light="type: directional; color: #FFF; intensity: 0.8" position="0 4 -4"></a-entity>
Важно учитывать, что правильное освещение объектов повышает реализм сцены и влияет на восприятие глубины.
3D-объекты в A-Frame представлены элементами
<a-entity> или специализированными тегами
(<a-box>, <a-sphere>,
<a-cylinder>, <a-plane>). Каждый
объект может содержать следующие атрибуты:
primitive,
размеры).Пример коробки и сферы:
<a-box position="-1 0.5 -3" rotation="0 45 0" color="#4CC3D9"></a-box>
<a-sphere position="2 1 -5" radius="1.25" color="#EF2D5E"></a-sphere>
Для удобства управления несколькими объектами используется
<a-entity> как контейнер. Группировка позволяет
применять трансформации ко всем дочерним элементам одновременно.
<a-entity position="0 1 -3" rotation="0 30 0">
<a-box position="-1 0 0" color="#FFC65D"></a-box>
<a-sphere position="1 0 0" color="#7BC8A4"></a-sphere>
</a-entity>
<a-scene> имеет ряд глобальных атрибутов:
Пример с фоном и туманом:
<a-scene background="color: #ECECEC" fog="type: exponential; color: #AAA; density: 0.02">
...
</a-scene>
A-Frame поддерживает форматы GLTF и OBJ. Для этого используется компонент gltf-model:
<a-entity gltf-model="#model-id" position="0 0 -5" scale="1 1 1"></a-entity>
Модель может быть подключена через <a-assets> для
предварительной загрузки:
<a-assets>
<a-asset-item id="model-id" src="model.gltf"></a-asset-item>
</a-assets>
Элементы A-Frame могут реагировать на события:
Пример обработчика события:
<a-box position="0 1 -3" color="#4CC3D9"
event-set__enter="_event: mouseenter; color: #FF0000"
event-set__leave="_event: mouseleave; color: #4CC3D9"></a-box>
Для больших сцен рекомендуется:
<a-entity>
для удобства управления.<a-assets> для предзагрузки текстур
и моделей.scale и lod (уровни детализации)
для объектов на дальних планах.Эта структура HTML-разметки позволяет создавать гибкие, управляемые и интерактивные VR/AR-сцены, обеспечивая масштабируемость и поддержку сложной логики на базе компонентов A-Frame.