Пазлы сцены (Scenes) — Софт Эйт Софт
Description: Как выполнять различные операции со сценами и рендерингом с помощью пазлов Вердж3Д.

# Пазлы сцены (Scenes)

Пазлы из этой категории выполняют различные операции со сценами и рендерингом.

## Содержание

- Перечень пазлов
  - load scene + percentage
  - append scene + percentage
  - unload scene
  - is scene loaded
  - enable rendering
  - disable rendering
  - create environment
  - batch geometry
  - export to gltf
  - export to usdz
  - raycast
  - add fog

#

## Перечень пазлов

#

### load scene + percentage

При срабатывании этого пазла текущая сцена выгружается, после чего загружается новая из указанного .gltf-файла.

Данная функциональность используется в демо-приложении «Загрузи-выгрузи» (исходные файлы доступны в магазине ассетов).

После завершения загрузки запускаются пазлы слота when loaded do. Кроме того, существует дополнительный слот on progress do, пазлы которого постоянно запускаются во время загрузки и могут задействовать пазл percentage. После загрузки сцены ей присваивается имя, которое можно использовать для доступа и манипулирования сценой с помощью различных пазлов, связанных с объектами. По умолчанию присвоенное имя равно указанному УРЛ сцены (например, `"path/to/scene.gltf"`). Опция alias, если она включена, позволяет задать имя вручную.

Еще один дополнительный слот on error do срабатывает в случае ошибок загрузки (например, при отсутствующем .gltf-файле).

#

### append scene + percentage

При срабатывании этого пазла загружается сцена из указанного .gltf-файла и добавляется к текущей сцене.

Данная функциональность используется в демо-приложении «Загрузи-выгрузи» (исходные файлы доступны в магазине ассетов).

После завершения загрузки запускаются пазлы слота when loaded do. Кроме того, существует дополнительный слот on progress do, пазлы которого постоянно запускаются во время загрузки и могут задействовать пазл percentage. Пазл "append scene" по умолчанию не загружает камеры и свет из новой сцены. Это можно изменить в настройках пазла.

После добавления сцены ей присваивается имя, которое может быть использовано для доступа и манипулирования сценой с помощью различных пазлов, связанных с объектами. По умолчанию присвоенное имя равно указанному УРЛ сцены (например, `"path/to/scene.gltf"`). Опция alias, если она включена, позволяет задать имя вручную.

Еще один дополнительный слот on error do срабатывает в случае ошибок загрузки (например, при отсутствующем .gltf-файле).

#

### unload scene

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

#

### is scene loaded

Проверяет, загружена ли указанная сцена. Укажите пустую строку чтобы проверить главную сцену.

#

### enable rendering

Возобновляет ранее отключенный рендеринг.

#

### disable rendering

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

Вы можете использовать отключение рендеринга с целью экономии заряда батареи на мобильных устройствах или ноутбуках и избавления от шума вентилятора на настольных компьютерах. Вы также можете включить опцию anti-alias, чтобы значительно повысить качество рендеринга и компенсировать потерю производительности. Рендеринг сцены с анти-алиасингом произойдёт на следующий кадр после остановки рендеринга.

#

### create environment

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

Второй параметр может быть:

- color — освещение окружения будет основано на встроенном HDR-изображении 256×128, цвет фона будет установлен в серый.
- texture — и освещение среды, и фон будут основаны на встроенном HDR-изображении 256×128.

#

### batch geometry

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

Чтобы увидеть, как работает это объединение, откройте браузерную консоль:

В каждой строке "Adding batch object..." можно увидеть имя создаваемого пакетного объекта. Это имя состоит из названия материала, образующего пакет, коэффициента 'x', представляющего количество мешей, объединенных вместе, и окончанияё "_batch".

Например:

`Adding batch object: big_table_wood_x6_batch`

эта строка означает, что 6 мешей с материалом "big_table_wood" были объединены в новый пакетный объект "big_table_wood_x6_batch".

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

#

### export to gltf

Экспортирует сцену, модель или группу моделей в формат glTF 2.0. Укажите опцию only visible для экспорта только видимых объектов, опция binary используется для экспорта в бинарный формат GLB (glTF Binary).

Для достижения наилучших результатов мы рекомендуем вам использовать материалы, совместимые с glTF. Читайте об их создании в «Блендере», «3дс Максе» и «Майе».

Данная функциональность используется в демо-приложении GLTF Compat (исходные файлы доступны в магазине ассетов).

#

### export to usdz

Экспортировать сцену или модель в формат USDZ (Universal Scene Description).

Этот формат позволяет просматривать сцену или модель на устройствах «Эпл» в режиме дополненной реальности. Для этого вам потребуется создать HTML-элемент `<a>` где-нибудь на странице приложения и указать ссылку на экспортированный ресурс в виде параметра `href` этого элемента.

Данная функциональность используется в демо-приложении «Дополненная реальность» (исходные файлы доступны в магазине ассетов).

Для достижения наилучших результатов мы рекомендуем вам использовать материалы, совместимые с glTF. Читайте об их создании в «Блендере», «3дс Максе» и «Майе».

#

### raycast

Проводит луч из исходной точки (или объекта) в заданном направлении и отображает список всех пересечений (если они есть). Третий параметр пазла используется для уменьшения количества пересекаемых объектов. Оставьте `<none>` или укажите имя вашей сцены, чтобы пересечь все объекты, расположенные в загруженной сцене.

Отображаемый список содержит последовательность словарей со следующей информацией:

- object — имя пересекаемого объекта
- distance — расстояние до точки пересечения
- point — XYZ координаты (вектор) точки пересечения
- normal — XYZ координаты (вектор) нормали в точке пересечения
- uv — UV координаты точки пересечения

Список пересечений отсортирован по расстоянию, первый — ближайший.

#

### add fog

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

Exponential (экспоненциальный) туман определяется свойством density (насыщенность). Используется нулевое значение density для выключения тумана.

Linear (линейны) туман определяется свойствами near (ближняя граница) и far (дальняя граница). Используйте нулевое значение near и любое отрицательное значение для far для выключения тумана.

## Проблемы с пазлами?

Обращайтесь за помощью на наш форум!