В A-Frame объекты сцены создаются с помощью сущностей
<a-entity> или специализированных примитивов, таких
как <a-box>, <a-sphere> и другие.
Основой визуального представления объекта является
геометрия, которая определяет форму, но не обязательно
её внешний вид. При отсутствии компонента material объекты
остаются «голыми», отображая базовую структуру через
wireframe или наследуемый цвет по умолчанию.
Для задания геометрии без материала используется атрибут
geometry:
<a-entity geometry="primitive: box; width: 2; height: 2; depth: 2"></a-entity>
В данном примере создаётся куб размером 2×2×2 единицы. Ключевые параметры геометрии:
primitive — тип геометрии: box,
sphere, cylinder, plane,
torus, cone, ring.width, height, depth —
размеры объекта (для box).radius, radiusTop,
radiusBottom, segmentsRadial,
segmentsHeight — специфичные для цилиндров и сфер.segmentsWidth, segmentsHeight —
детализация сетки, влияющая на количество вершин.Без материала объект будет визуализироваться стандартным цветом сцены, обычно серым, но можно наблюдать форму и пропорции. Для наглядного отображения можно включить wireframe:
<a-entity geometry="primitive: sphere; radius: 1; segmentsWidth: 16; segmentsHeight: 16; wireframe: true"></a-entity>
Wireframe позволяет увидеть структуру сетки, которая формирует объект, что важно для проверки геометрии перед применением текстур или материалов.
geometryКомпонент geometry поддерживает детальные
настройки, позволяя управлять формой без использования внешнего
материала:
buffer — использование BufferGeometry для
оптимизации.thetaStart, thetaLength — угловые срезы
для сфер, цилиндров и колец.openEnded — открытые или закрытые цилиндры и
конусы.segmentsRadial и segmentsHeight —
количество сегментов для равномерного распределения вершин, что напрямую
влияет на сглаживание кривых поверхностей.Пример создания полусферы:
<a-entity geometry="primitive: sphere; radius: 1; segmentsWidth: 32; segmentsHeight: 16; thetaStart: 0; thetaLength: 180"></a-entity>
Даже без материала объекты можно масштабировать, поворачивать и
перемещать с помощью стандартных атрибутов position,
rotation и scale:
<a-entity
geometry="primitive: cylinder; radiusTop: 0.5; radiusBottom: 1; height: 3"
position="0 1 0"
rotation="0 45 0"
scale="1 2 1">
</a-entity>
position задаёт координаты объекта в пространстве
сцены.rotation определяет ориентацию по осям X, Y, Z.scale изменяет пропорции геометрии без изменения
исходных размеров в geometry.Без материала объекты легко интегрировать с компонентами, которые анализируют или изменяют геометрию:
Пример анимации «голого» куба:
<a-entity geometry="primitive: box; width: 1; height: 1; depth: 1"
position="0 0.5 0"
animation="property: rotation; to: 0 360 0; loop: true; dur: 5000">
</a-entity>
Использование геометрии без материала снижает нагрузку на рендеринг, так как не требуется вычисление шейдеров, текстур или освещения. В больших сценах или при прототипировании это позволяет быстро проверять размеры и компоновку объектов.
segmentsWidth, segmentsHeight) ускоряют
визуализацию.material уменьшает количество draw
calls.Можно создавать объекты, комбинируя параметры:
<a-entity geometry="primitive: cone; radiusBottom: 1; radiusTop: 0.2; height: 3; segmentsRadial: 16" wireframe="true"></a-entity>
<a-entity geometry="primitive: ring; radiusInner: 0.5; radiusOuter: 1; thetaStart: 0; thetaLength: 180" wireframe="true"></a-entity>
<a-entity geometry="primitive: sphere; radius: 1; segmentsWidth: 8; segmentsHeight: 6" wireframe="true"></a-entity>
Такой подход позволяет создавать прототипы и тестовые модели для сцен виртуальной реальности без необходимости разрабатывать полноценный материал.
Все параметры геометрии можно изменять динамически через JavaScript, что даёт гибкость:
const box = document.querySelector('#dynamicBox');
box.setAttribute('geometry', 'width', 3);
box.setAttribute('geometry', 'height', 1.5);
box.setAttribute('geometry', 'depth', 2);
Объект изменит форму на лету, оставаясь без материала и сохраняя минимальные вычислительные затраты.
Использование «голой» геометрии в A-Frame является мощным инструментом для прототипирования, оптимизации и детального анализа структуры объектов, обеспечивая контроль над формой без дополнительных визуальных сложностей.