Компонент embedded в библиотеке A-Frame предназначен для
интеграции 3D/VR-сцены в структуру обычной HTML-страницы без перехода в
полноэкранный режим. По умолчанию элемент <a-scene>
ведёт себя как самостоятельное полноэкранное приложение: занимает всё
окно браузера, управляет стилями документа и перехватывает ввод. Атрибут
embedded изменяет эту модель, превращая сцену в обычный
блочный элемент, который можно размещать внутри любой разметки.
Это особенно важно при создании:
Компонент подключается непосредственно к элементу
<a-scene>:
<a-scene embedded>
<a-box position="0 1 -3" color="#4CC3D9"></a-box>
<a-sky color="#ECECEC"></a-sky>
</a-scene>
В таком режиме сцена:
embeddedБез указания embedded сцена в A-Frame:
position: fixed,Это удобно для полноценных VR-приложений, но мешает интеграции в сложную веб-страницу.
embedded внутри DOMПри добавлении embedded:
Пример встраивания в структуру страницы:
<section>
<h2>3D-демонстрация</h2>
<div class="scene-container">
<a-scene embedded>
<a-sphere position="0 1.5 -3" radius="1.25" color="#EF2D5E"></a-sphere>
<a-plane position="0 0 -4" rotation="-90 0 0"
width="4" height="4"
color="#7BC8A4"></a-plane>
</a-scene>
</div>
<p>Дополнительный текст после сцены.</p>
</section>
В режиме embedded размеры сцены полностью контролируются
через CSS:
.scene-container {
width: 600px;
height: 400px;
}
a-scene {
width: 100%;
height: 100%;
}
vw,
vh, flexbox и grid.Пример адаптивного блока:
.scene-container {
width: 100%;
max-width: 800px;
aspect-ratio: 16 / 9;
}
Компонент embedded не отключает поддержку VR или WebXR.
Он лишь изменяет начальное поведение сцены.
Кнопка перехода в VR по-прежнему доступна, если:
Сцену можно дополнительно настроить:
<a-scene embedded vr-mode-ui="enabled: true">
При этом:
Поскольку сцена становится обычным DOM-элементом, появляется возможность:
z-index,Пример наложения интерфейса:
<div class="scene-wrapper">
<a-scene embedded></a-scene>
<div class="overlay">Информация поверх сцены</div>
</div>
.scene-wrapper {
position: relative;
}
.overlay {
position: absolute;
top: 10px;
left: 10px;
background: white;
padding: 10px;
}
Такой подход позволяет комбинировать 3D-контент с традиционными UI-элементами.
Встроенный режим имеет ряд особенностей:
Большая сцена внутри страницы может вызывать:
Если сцена находится вне зоны видимости:
Для оптимизации используется:
document.querySelector('a-scene').pause();
document.querySelector('a-scene').play();
Это позволяет управлять жизненным циклом сцены вручную.
Компонент embedded облегчает совместное использование
с:
Поскольку сцена остаётся частью DOM-дерева, её можно:
display: none,В одном документе возможно размещение нескольких сцен:
<a-scene embedded class="mini-scene"></a-scene>
<a-scene embedded class="mini-scene"></a-scene>
При этом следует учитывать:
Оптимальной практикой считается:
В режиме embedded:
Это особенно важно для мобильных устройств, где полноэкранный режим может конфликтовать с нативными жестами.
Компонент embedded можно комбинировать с другими
параметрами <a-scene>:
<a-scene
embedded
renderer="antialias: true"
background="color: #222"
device-orientation-permission-ui="enabled: false">
</a-scene>
Он не конфликтует с:
3D-модель встроена между текстовыми блоками статьи и реагирует на действия пользователя.
Сцена размещается рядом с формами выбора характеристик и обновляется при изменении параметров.
Несколько встроенных сцен демонстрируют разные этапы процесса без перезагрузки страницы.
Компонент embedded реализован как логическая настройка
сцены. Он:
Фактически это модификация поведения корневого контейнера
<a-scene>, а не отдельная визуальная сущность внутри
сцены.
Типичные проблемы:
Сцена не отображается
Причина: не задана высота контейнера.
Сцена перекрывает другие элементы
Причина: неправильное позиционирование или z-index.
Появляются чёрные полосы
Причина: несоответствие пропорций камеры и CSS-контейнера.
Проверка выполняется через инструменты разработчика браузера: анализ
размеров элемента <canvas>, создаваемого внутри
<a-scene>.
<a-scene>.Компонент embedded является основным механизмом
интеграции 3D-контента на основе A-Frame в традиционные веб-страницы,
позволяя строить гибридные интерфейсы, сочетающие HTML, CSS и
WebGL-графику в едином документе.