Значения по умолчанию

В A-Frame каждая сущность (entity) и компонент обладают набором значений по умолчанию, которые определяют их поведение при отсутствии явной настройки. Понимание этих значений критично для эффективного создания виртуальных сцен и предотвращения неожиданных эффектов.


Сущности и компоненты

Сущность (<a-entity>) представляет собой базовый строительный блок сцены. Она может содержать компоненты, влияющие на визуализацию, поведение, физику и взаимодействие. Каждый компонент имеет предопределённые значения, которые применяются автоматически, если их не переопределить.

Например:

<a-entity geometry="primitive: box"></a-entity>

В этом случае geometry использует значения по умолчанию:

  • width: 1
  • height: 1
  • depth: 1

Если не указывать эти параметры явно, куб будет создан именно с такими размерами.


Геометрия

Компонент geometry предоставляет несколько типов примитивов (primitive), каждый из которых имеет собственные значения по умолчанию:

  • box

    • width: 1
    • height: 1
    • depth: 1
  • sphere

    • radius: 1.25
    • segmentsWidth: 18
    • segmentsHeight: 36
  • cylinder

    • radius: 1
    • height: 1
    • segmentsRadial: 36
    • segmentsHeight: 1
  • plane

    • width: 1
    • height: 1
  • circle

    • radius: 1
    • segments: 32

Эти значения обеспечивают корректное отображение объектов без дополнительных настроек.


Материалы

Компонент material управляет визуальным оформлением объектов. Его значения по умолчанию:

  • color: #FFF (белый)
  • shader: standard
  • opacity: 1 (полностью непрозрачный)
  • metalness: 0
  • roughness: 1
  • side: front (отрисовка только передней стороны)

Для объектов с геометрией по умолчанию используется белый стандартный материал с полной непрозрачностью, что позволяет сразу видеть форму и освещение сцены.


Камеры и свет

Камера (camera) в A-Frame имеет следующие ключевые значения по умолчанию:

  • position: 0 0 0 — начальная точка обзора.
  • fov: 80 — угол обзора.
  • near: 0.1 — ближняя плоскость отсечения.
  • far: 1000 — дальняя плоскость отсечения.

Свет (light) без явных параметров создаётся как directional с:

  • color: #FFF
  • intensity: 1
  • position: 0 1 0

Это позволяет сцене иметь базовое освещение сразу после добавления света.


Трансформации и позиционирование

Каждая сущность поддерживает компонент position, rotation и scale с предустановленными значениями:

  • position: 0 0 0
  • rotation: 0 0 0
  • scale: 1 1 1

Если не задавать эти параметры, объект появится в центре сцены без поворота и с единичным масштабом.


Поведение компонентов

Некоторые компоненты, отвечающие за динамику или взаимодействие, также имеют свои стандартные значения:

  • animation

    • property: position
    • to: 0 0 0
    • dur: 1000
    • easing: linear
  • cursor

    • fuse: false
    • rayOrigin: mouse
  • look-controls

    • enabled: true
    • pointerLockEnabled: false
    • hmdEnabled: true

Эти значения позволяют компонентам функционировать сразу после включения без необходимости конфигурации.


Наследование и приоритет

При применении нескольких компонентов к одной сущности значения по умолчанию могут быть переопределены. Правила приоритета:

  1. Явное указание значения в HTML имеет высший приоритет.
  2. Значения, заданные через JavaScript (setAttribute), переопределяют HTML.
  3. Если значение не задано ни в HTML, ни через скрипт, применяется значение по умолчанию компонента.

Пример:

<a-entity geometry="primitive: box; width: 2"></a-entity>

В этом случае будет использован width: 2, а height и depth останутся равными 1 (по умолчанию).


Пользовательские компоненты

При создании собственного компонента с помощью AFRAME.registerComponent важно указывать schema с default-значениями. Это гарантирует предсказуемое поведение и совместимость с другими компонентами.

AFRAME.registerComponent('spin', {
  schema: {
    speed: { type: 'number', default: 1 },
    axis: { type: 'string', default: 'y' }
  },
  tick: function (time, timeDelta) {
    this.el.object3D.rotation[this.data.axis] += this.data.speed * timeDelta / 1000;
  }
});

В этом примере speed и axis автоматически получают значения по умолчанию, если не переданы явно.


Вывод

Значения по умолчанию в A-Frame обеспечивают сразу рабочую сцену, позволяют избежать ошибок и ускоряют разработку. Знание предустановленных параметров для геометрии, материалов, камеры, света и пользовательских компонентов — ключ к грамотной и эффективной работе с библиотекой.