Объекты

Объекты служат целям размещения компонентов различного типа (мешей, камер, ламп и т.д.) в пространстве 3D сцены.

Типы

Движком поддерживаются объекты следующих типов:

При экспорте сцены объекты типов CURVE, TEXT, METABALL и SURFACE конвертируются в объекты типа MESH.

Статические и динамические объекты

Объект может быть статическим или динамическим.

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

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

Только объекты типов MESH и EMPTY могут быть как статическими, так и динамическими. Все остальные объекты, например CAMERA или ARMATURE, всегда динамические.

Статические объекты типа MESH рендерятся значительно быстрее динамических, поэтому для повышения производительности рекомендуется сводить количество динамических мешей к минимуму. Объекты других типов, как статические, так и динамические, не оказывают существенного влияния на производительность.

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

  • Play Animation
  • Transform Object
  • Move To
  • Inherit Material

Методы API для перемещения, копирования и анимации (как самого объекта, так и его нодового материала) объектов могут применяться только к динамическим объектам. Чтобы обеспечить движение объекта, не имеющего настроек динамического объекта, в его настройках следует активировать опцию Force Dynamic Object.

Настройка

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

Вкладка Object

_images/object_settings.png

Панель Transform

_images/object_settings_transform.png
Transform > Location

Координаты местоположения.

Transform > Rotation

Углы вращения. При повороте объекта доступны все режимы Rotation Mode, но при создании объектной анимации поддерживаются только Quaternion (WXYZ) и XYZ Euler.

Transform > Scale

Масштабирование. Все 3 компонента (x, y, z) должны быть одинаковы. Для физических объектов масштабирование не поддерживается.

Панель Groups

Groups

Группы объектов, которым принадлежит данный объект.

_images/object_settings_groups.png

Панель Display

_images/object_settings_display.png

Содержит параметры, определяющие, как выбранный объект будет выглядеть в окне 3D View. В режиме Blend4Web эта панель не включает никаких дополнительных параметров.

Панель Level of Detail

_images/object_settings_lod.png
Levels of Detail > Object

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

Levels of Detail > Distance

Расстояние, на котором начинается использование данного уровня детализации.

Использование уровней детализации описано в соответствующем разделе.

Панель Animation

_images/object_settings_animation.png
Animation > Apply Default Animation

Начать воспроизведение в движке связанной с объектом анимации.

Animation > Animation Blending

Только для арматурных объектов. Разрешить плавный переход от одной скелетной анимации к другой.

Animation > Behavior

Поведение анимации при достижении последнего кадра: Finish Stop - остановить, Finish Reset - остановить и сбросить в нулевой кадр, Loop - циклически повторять.

Панель Export Options

_images/object_settings_export.png
Export Options > Do Not Export

Не экспортировать.

Export Options > Apply Modifiers

Применить модификаторы объекта при экспорте.

Примечание

При наличии модификатора SKIN рекомендуется применить его перед экспортом, т.к. он сбрасывает слои вертексных цветов и UV-текстур, что может привести к ошибкам экспорта.

Export Options > Apply Scale and Modifiers

Применить масштабирование и модификаторы объекта при экспорте.

Export Options > Export Vertex Animation

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

Export Options > Export Shape Keys

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

Примечание

Свойства Apply Modifiers, Apply Scale And Modifiers, Export Vertex Animation, и Export Shape Keys взаимоисключают друг друга.

Панель Rendering Properties

_images/object_settings_rendering.png
Rendering Properties > Hidden

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

Rendering Properties > Hidden Children

Все потомки объекта, а также потомки его потомков будут невидимы при запуске сцены. Этот параметр доступен только если включен параметр Rendering Properties > Hidden и у объекта имеются потомки.

Rendering Properties > Do Not Render

Отключить рендеринг объекта (например, вспомогательный объект физики).

Этот параметр недоступен для объектов типа Empty.

Rendering Properties > Disable Frustum Culling

Отключить оптимизацию отсечением по зоне видимости.

Этот параметр недоступен для объектов типа Empty.

Rendering Properties > Force Dynamic Object

Принудительно сделать объект динамическим.

Rendering Properties > Dynamic Geometry & Materials

Включает возможность использовать API для обновления геометрии объекта и наследования материалов.

Rendering Properties > Line Rendering

Активирует использование объекта для рендеринга линий.

Этот параметр доступен только для объектов типа Empty.

Панель Shadows

_images/object_settings_shadows.png
Shadows > Cast

Объект будет отбрасывать тени.

Shadows> Cast Only

Объект будет отбрасывать тени, при этом сам будет оставаться невидимым. Становится доступным после включения Shadows > Cast.

Shadows > Receive

Разрешить затенение от прилегающих объектов (получение теней) на объекте.

Панель Billboard

_images/object_settings_billboard.png
Billboard

Использовать объект в качестве билборда (т.е. автоматически ориентировать его относительно камеры).

Billboard > Preserve Global Rotation

Билбординг объекта с учетом его ориентации в мировом пространстве. Объект всегда будет обращен к камере той стороной, которая видна при взгляде на него вдоль направления оси Y в системе координат Blender’а. Становится доступным после включения Billboard.

Billboard > Billboard Type

Способ ориентирования билборда. Spherical (по умолчанию) - объект всегда ориентирован к камере одной стороной независимо от угла обзора, Cylindrical - аналогично Spherical, только вращение ограничено осью Z мирового пространства в Blender. Становится доступным после включения Billboard.

Панель Reflections

_images/object_settings_reflections.png
Reflections > Reflexible

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

Reflections > Reflexible Only

При включении объект будет отражаться, при этом сам будет оставаться невидимым. Становится доступным после включения Reflections > Reflexible.

Примечание

Если опция Reflexible Only включена одновременно с Shadows > Cast Only, движок не будет отображать сам объект, но будет рассчитывать отражение объекта и тень от него, как показано на изображении ниже.

_images/objects_cast_reflexible_only.png
Reflections > Reflective

При включении объект будет отражать своей поверхностью другие объекты.

Reflections > Reflection Plane

Текстовое поле для названия пустого объекта, задающего плоскость отражения. Становится доступным после включения Reflections > Reflective.

Панель Selection and Outlining

_images/object_settings_selection.png
Selection and Outlining > Selectable

Разрешить выделение объекта с помощью мыши или другого устройства ввода.

Selection and Outlining > Enable Outlining

Разрешить подсвечивание объекта (эффект Outline).

Панель Anchors

Anchors > Enable Anchor

Активирует интерфейс добавления якорей (двухмерных меток) к объектам. Доступно только для объектов типа EMPTY. Якоря подробно описаны в соответствующем разделе.

_images/objects_enable_anchors.png

Панель Meta Tags

_images/object_settings_meta_tags.png
Meta Tags

Интерфейс добавления мета-тегов на объект:

Meta Tags > Title

Заголовок объекта.

Meta Tags > Category

Категория объекта.

Meta Tags > Description

Описание объекта. В зависимости от значения опции Description Source в это поле заносится либо текст описания непосредственно, либо имя файла, в котором содержится описание.

Примечание

Чтобы использовать текстовый файл как источник для поля Description необходимо открыть существующий файл в редакторе Блендера Text Editor либо создать новый файл в этом же редакторе.

Затем остается только выбрать имя этого файла в поле Description.

Meta Tags > Description Source

Тип (источник) описания объекта: текст либо файл с текстом.

Панель Relations

_images/object_settings_relations.png
Relations > Parent

Указатель на родительский объект.

Если в качестве родительского объекта выбрана камера, становятся доступными настройки Viewport Alignment.

_images/objects_viewport_alignment.png

Они могут применяться для привязывания объекта к текущей камере. Описаны в главе “Камера”.

Панель Duplication

_images/objects_duplication.png

Содержит настройки дупликации объектов. В режиме Blend4Web эта панель не включает никаких дополнительных параметров по сравнению с любым другим режимом. Следует, однако, заметить, что на данный момент движок Blend4Web поддерживает только метод дупликации Group.

Панель Wind Bending

_images/object_settings_wind.png
Wind Bending

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

Панель Special Effects

_images/object_settings_fx.png
Special Effects > Disable Fogging

Отключить туман для объекта.

Special Effects > Caustics

На объекте будут видны эффекты от прилегающей к нему воды (каустика).

Вкладка Physics

_images/object_setup_phys.png

Detect Collisions

Активировать связанную с объектом физику.

Floating

Сделать объект плавучим. Подробное описание настроек плавучих объектов можно найти в разделе физика.

Vehicle

Активировать использование объекта в качестве составной части транспортного средства. Подробное описание настроек транспортных средств можно найти в разделе физика.

Character

Активировать использование объекта в качестве физического каркаса игрового персонажа. Подробное описание настроек персонажа можно найти в разделе физика.

Ограничители объектов

Движок Blend4Web поддерживает следующие ограничители объектов:

  • Copy Location,
  • Copy Rotation,
  • Copy Transforms и

  • Track To.

Примечание

При использовании ограничителей объектов в Blend4Web параметр Space игнорируется (его значение всегда считается равным World Space).

Эти ограничители могут быть настроены непосредственно в Blender. Другие типы ограничителей не поддерживаются, однако некоторые методы из модуля constraints работают схожим образом. Среди них:

  • Метод append_copy_loc() работает так же, как ограничитель Copy Location

  • Метод append_copy_rot() работает так же, как ограничитель Copy Rotation

  • Метод append_copy_trans() работает так же, как ограничитель Copy Transforms

  • Метод append_follow() работает почти так же, как ограничитель Limit Distance, однако следует заметить, что этот метод не задаёт точного расстояния между объектами (вместо этого он использует минимальную и максимальную дистанции).

  • В качестве аналога ограничителя Track To может использоваться метод append_track().

Прочие ограничители не имеют прямых аналогов, однако в определённой степени их поведение можно воспроизвести при помощи методов API.

Модуль constraints также включает несколько дополнительных методов:

  • append_semi_soft()

    Этот метод может применяться для прикрепления объекта к другому объекту с использованием полумягкого ограничителя. Такой объект будет плавно следовать за объектом, к которому прикреплён. Этот метод может применяться, например, для создания камер с видом “от третьего лица”.

  • append_semi_stiff()

    С помощью этого метода объект может быть прикреплён к другому объекту с использованием полужесткого ограничителя, т.е. такой объект вращается и двигается вместе с “родительским” объектом, но также может вращаться независимо (в локальной системе координат родительского объекта). С помощью этого ограничителя можно создать, например, башню танка.

  • append_stiff()

    Этот метод прикрепляет объект к другому объекту (или арматуре) с помощью жёсткого ограничителя. Такой объект движется, поворачивается и меняет масштаб вместе с “родительским” объектом.

    Примеры: меч в руке персонажа; персонаж, сидящий в транспортном средстве.

  • append_stiff_trans()

    Этот метод прикрепляет объект к другому объекту, используя жесткое преобразование. “Дочерний” объект перемещается вместе с “родительским”, но не вращается вместе с ним (и может вращаться независимо от родительского объекта).

  • append_stiff_trans_rot()

    Используется для прикрепления одного объекта к другому с использованием жесткого преобразованиявращения. “Дочерний” объект движется и вращается вместе с родительским, но не наследует его масштаб (и может менять свой масштаб независимо от родительского объекта).

    Пример: эмиттер частиц дыма, прикреплённый к выхлопной трубе.

  • append_stiff_viewport()

    Жестко прикрепляет объект к камере (объект всегда сохраняет своё положение относительно камеры и всегда визуально находится в одной точке экрана).

    Этот ограничитель может применяться для создания как двух-, так и трёхмерных элементов интерфейса.

  • remove() удаляет все ограничители, ранее применённые к объекту.

Настройки якорей

Якоря могут применяться для добавления поясняющих надписей к 3D-объектам. Вне зависимости от позиции камеры, надпись всегда располагается рядом с объектом и следует за ним в случае его анимации.

_images/objects_anchors_example.png

Аннотация может быть полностью создана в Blender. Для этого достаточно разместить в нужном месте объект типа Empty и включить его использование в качестве “якоря”. Текст аннотации можно изменить в полях Title и Description, доступных на вкладке Meta Tags.

_images/objects_anchors_settings.png
Enable Anchor

Активирует интерфейс добавления якорей (двухмерных меток) к объектам. Доступно только для объектов типа EMPTY.

Type

Тип якоря

  • Annotation - информация из мета-тегов объектов отображается в раскрывающихся информационных окнах стандартного дизайна.

  • Custom Element - в качестве якоря можно назначить произвольный HTML-элемент с текущей веб-страницы

  • Generic - якорь, положение которого можно определить с помощью API модуля anchors.

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

HTML Element ID

Задаёт ID HTML-элемента, который будет использоваться в качестве якоря. Доступно только если параметр Type имеет значение Custom Element.

Detect Visibility

Определять видимость якоря, т.е. реагировать на перекрытие объекта-якоря другими объектами. Активация опции приводит к падению производельности рендеринга и должна рассматриваться только в случае реальной необходимости.

Max Width

Ограничить всплывающее информационное окно аннотации выбранным значением (в CSS пикселях). Доступно только если параметр Type имеет значение Annotation. Значение по умолчанию - 250.

Управление перемещением объектов

Примечание

Необходимо обеспечить, чтобы объект, над которым выполняется преобразование, был динамическим.

Для управления перемещением объектов в движке предусмотрены следующие базовые функции модуля transform:

get_translation()

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

get_translation_rel()

Аналогично методу get_translation(), однако если у данного объекта имеется родительский объект, координаты берутся в относительной системе координат, связанной с этим родительским объектом.

set_translation(), set_translation_v()

Переместить центр объекта в указанное место. Первая функция принимает в качестве параметров отдельные координаты, вторая - трёхмерный вектор (Array или Float32Array).

set_translation_rel(), set_translation_rel_v()

Аналогично методам set_translation() и set_translation_v(), однако если у данного объекта имеется родительский объект, координаты задаются в относительной системе координат, связанной с этим родительским объектом.

get_rotation()

Получить кватернион поворота объекта в мировой системе координат. По аналогии с get_translation() имеется два варианта вызова функции.

get_rotation_rel()

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

set_rotation(), set_rotation_v()

Установить кватернион поворота объекта в мировой системе координат. Первая функция принимает в качестве параметров отдельные координаты, вторая - четырёхмерный вектор (Array или Float32Array).

set_rotation_rel(), set_rotation_rel_v()

Установить кватернион поворота объекта в системе координат, связанной с родительским объектом. Первая функция принимает в качестве параметров отдельные координаты, вторая - четырёхмерный вектор (Array или Float32Array).

get_scale()

Получить значение коэффициента увеличения объекта в мировой системе координат.

get_scale_rel()

Установить коэффициент увеличения объекта в системе координат, связанной с родительским объектом.

set_scale()

Установить коэффициент увеличения объекта в мировой системе координат. Единица соответствует исходному состоянию. Значение меньше единицы - уменьшение. Значение больше единицы - увеличение. Не все объекты могут быть увеличены. В частности, увеличение невозможно для физических объектов.

set_scale_rel()

Установить коэффициент увеличения объекта в системе координат, связанной с родительским объектом.

set_rotation_euler(), set_rotation_euler_v()

Установить поворот объекта с помощью углов Эйлера. Используется