Вывод на видеостены с плагином AppWall
Приложение AppWall предназначено для визуализации мира Unigine в настраиваемом количестве окон. Количество мониторов AppWall не ограничено. Они могут соответствовать любой конфигурации дисплея и могут отображаться как в оконном, так и в полноэкранном режиме.
Следующие конфигурации дисплея поддерживаются из коробки (только если мониторы имеют одинаковое разрешение):
- 1 монитор (1 × 1)
- 2 монитора вертикально (1 × 2)
- 2 монитора в ряд (2 × 1)
- 3 монитора в ряд (3 × 1)
- 4 монитора в ряд (4 × 1)
- 5 мониторов в ряд (5 × 1)
- 4 монитора (2 × 2)
- 6 мониторов (3 × 2)
Смотрите также#
Запуск AppWall#
Если вы используете одну из этих конфигураций, то наряду с обычно необходимыми параметрами запуска (например, API рендеринга, размер окна и т. д.) в лаунчере вам нужно просто указать библиотеку плагинов (lib/AppWall_*).
main_x64 -extern_plugin AppWall
- UNIGINE автоматически определяет количество доступных мониторов и, если они подходят для любой из поддерживаемых конфигураций, автоматически создает соответствующее количество окон с вьюпортами UNIGINE.
- Вы можете использовать 64-битные отладочные или релизные версии библиотеки. (Движок автоматически загружает соответствующую версию библиотеки в зависимости от указанного основного приложения.)
Невозможно использовать AppWall с:
- Плагинами для нескольких мониторов (AppSurround, AppProjection)
- Панорамным рендерингом
- Стерео 3D
Конфигурация 2 × 2
|
Конфигурация 4 × 1
|
Как установить количество окон#
Если вы хотите установить количество окон AppWall вручную и использовать другую поддерживаемую конфигурацию, вам необходимо указать два аргумента запуска в дополнение к обычно необходимым:
- width - устанавливает количество мониторов в горизонтальном ряду
- height - устанавливает количество строк, т.е. количество мониторов в вертикальном столбце
Например, если вы хотите запустить AppWall в 6 окнах (2 ряда мониторов по 3 монитора в каждом ряду):
main_x64 -width 3 -height 2 -extern_plugin AppWall
Не забудьте также указать другие необходимые параметры запуска!
Настройка AppWall#
AppWall можно легко настроить для поддержки желаемой конфигурации мониторов. Вы можете создать AppWall, который отображает окна просмотра UNIGINE в произвольное количество окон с настраиваемыми пирамидами видимости (симметричными или асимметричными).
Камеры AppWall#
AppWall имеет одно основное окно просмотра (вьюпорт), а все остальные отображаются как вспомогательные . По умолчанию основным дисплеем является окно просмотра движка UNIGINE, используемое для конфигурации с одним монитором. Он использует матрицы Player, используемые движком для просмотра сцены. Другие дисплеи представляют собой произвольные камеры с любой перспективой и смотрящие в любом направлении. Каждый дисплей имеет свои собственные матрицы вида и проекции. При необходимости можно включать и отключать как основной, так и вспомогательный мониторы.
- Основной дисплей может быть набор на любой монитор (для поддерживаемых конфигураций он уже установлен).
- Каждый дисплей имеет свои собственные матрицы вида и проекции.
- По умолчанию только основной имеет интерфейс (графический интерфейс системы рендеринга, виджеты редактора, каркас или профилировщик). Однако отдельные Графические интерфейсы можно рисовать на всех мониторах (см. образец).
- У всех вьюпортов есть свои Viewport и Reflection маски для выборочной визуализации узлов и отражений от них.
Конфигурации по умолчанию#
Для конфигураций по умолчанию основной дисплей настроен на следующий монитор:
- Для конфигурации 1 × 1 - первый (и единственный) дисплей.
- Для конфигурации 2 × 1 - первый дисплей.
- Для конфигурации 3 × 1 - второй дисплей.
- Для конфигурации 4 × 1 - второй дисплей.
- Для конфигурации 5 × 1 - третий дисплей.
- Для конфигурации 1 × 2 - первый дисплей в столбце.
- Для конфигурации 2 × 2 - первый дисплей в 1-й строке.
- Для конфигурации 3 × 2 - второй дисплей в 1-й строке.
Как настроить пользовательскую конфигурацию камер#
Рендеринг вьюпортов AppWall управляется скриптом wall.h (расположен в <UnigineSDK>/data/core/scripts/system).
Чтобы реализовать собственную конфигурацию камеры, закомментируйте wall.h в системном скрипте unigine.usc и оберните свой собственный код с помощью #ifdef HAS_APP_WALL ... #endif в функции render() системного скрипта.
Есть две возможные настройки в зависимости от того, как рендеринга основного монитора. Его может отрисовывать:
- Движковый рендерер по умолчанию (так же, как при рендеринге обычного однооконного приложения).
- Собственный рендерер AppWall (что более безопасно, если вы собираетесь использовать асимметричную пирамиду видимости для основного монитора и изменять его матрицу modelview).
В следующем примере показано, как создать конфигурацию монитора 3 × 1 и выбрать средство визуализации для основного монитора.
1. Использование модуля рендеринга движка по умолчанию#
Первый вариант - визуализировать основной монитор средством визуализации движка по умолчанию.
-
Если созданная конфигурация не поддерживается по умолчанию, установите основной монитор через Unigine::Plugins::AppWall:setPrimary():
// The primary display is the 2nd one in a row and // it is positioned in the first line of monitors. Unigine::Plugins::AppWall::get()->setPrimary(1, 0);
-
Включите все вспомогательные мониторы через Unigine::Plugins::AppWall::setEnabled() (по умолчанию они отключены). Основной должен быть отключен, так как он отрисовывается модулем рендеринга движка по умолчанию.
// Enable the 1st and the 3rd monitors in the first row. // The third argument of the function sets 'enabled' flag. Unigine::Plugins::AppWall::get()->setEnabled(0, 0, 1); Unigine::Plugins::AppWall::get()->setEnabled(2, 0, 1);
-
Установите матрицы проекции и modelview для вспомогательных мониторов через Unigine::Plugins::AppWall::setProjection() и Unigine::Plugins::AppWall::setModelview().
// Settings for the 1st monitor Unigine::Plugins::AppWall::get()->setProjection(0, 0, projection_0); Unigine::Plugins::AppWall::get()->setModelview(0, 0, modelview_0); // Settings for the 3rd monitor Unigine::Plugins::AppWall::get()->setProjection(2, 0, projection_1); Unigine::Plugins::AppWall::get()->setModelview(2, 0, modelview_1);
2. Использование средства визуализации AppWall#
Другой вариант - визуализировать основной монитор средством визуализации AppWall. Этот вариант можно использовать, например, если вы хотите настроить симметричные пирамиды видимости для всех мониторов.
-
Отключите рендеринг во вьюпорте UNIGINE по умолчанию через Unigine::Render::setEnabled():
Unigine::Render::setEnabled(0);
-
Включите все мониторы AppWall, включая основной. В результате все три окна просмотра будут визуализированы самим средством визуализации AppWall:
// Enable all AppWall monitors: Unigine::Plugins::AppWall::get()->setEnabled(0, 0, 1); Unigine::Plugins::AppWall::get()->setEnabled(1, 0, 1); Unigine::Plugins::AppWall::get()->setEnabled(2, 0, 1);
-
Установите матрицы modelview и проекции для всех трех мониторов.
// Settings for the 1st monitor Unigine::Plugins::AppWall::get()->setProjection(0, 0, projection_0); Unigine::Plugins::AppWall::get()->setModelview(0, 0, modelview_0); // Settings for the 2nd (primary) monitor Unigine::Plugins::AppWall::get()->setProjection(1, 0, projection_1); Unigine::Plugins::AppWall::get()->setModelview(1, 0, modelview_1); // Settings for the 3rd monitor Unigine::Plugins::AppWall::get()->setProjection(2, 0, projection_2); Unigine::Plugins::AppWall::get()->setModelview(2, 0, modelview_2);