This page has been translated automatically.
Видеоуроки
Interface
Essentials
Advanced
Подсказки и советы
Основы
Программирование на C#
Рендеринг
Принципы работы
Свойства (properties)
Компонентная Система
Рендер
Физика
Редактор UnigineEditor
Обзор интерфейса
Работа с ассетами
Настройки и предпочтения
Работа с проектами
Настройка параметров ноды
Setting Up Materials
Настройка свойств
Освещение
Landscape Tool
Sandworm
Использование инструментов редактора для конкретных задач
Extending Editor Functionality
Встроенные объекты
Ноды (Nodes)
Объекты (Objects)
Эффекты
Декали
Источники света
Geodetics
World Nodes
Звуковые объекты
Объекты поиска пути
Players
Программирование
Основы
Настройка среды разработки
Примеры использования
C++
C#
UnigineScript
Унифицированный язык шейдеров UUSL
Плагины
File Formats
Rebuilding the Engine Tools
GUI
Двойная точность координат
API
Containers
Common Functionality
Controls-Related Classes
Engine-Related Classes
Filesystem Functionality
GUI-Related Classes
Math Functionality
Node-Related Classes
Objects-Related Classes
Networking Functionality
Pathfinding-Related Classes
Physics-Related Classes
Plugins-Related Classes
IG Plugin
CIGIConnector Plugin
Rendering-Related Classes
Работа с контентом
Оптимизация контента
Материалы
Material Nodes Library
Miscellaneous
Input
Math
Matrix
Textures
Art Samples
Tutorials
Внимание! Эта версия документация УСТАРЕЛА, поскольку относится к более ранней версии SDK! Пожалуйста, переключитесь на самую актуальную документацию для последней версии SDK.
Внимание! Эта версия документации описывает устаревшую версию SDK, которая больше не поддерживается! Пожалуйста, обновитесь до последней версии SDK.

Вывод на видеостены с плагином AppWall

Приложение AppWall предназначено для визуализации мира Unigine в настраиваемом количестве окон. Количество мониторов AppWall не ограничено. Они могут соответствовать любой конфигурации дисплея и могут отображаться как в оконном, так и в полноэкранном режиме.

Примечание
Этот плагин нельзя использовать в приложении на основе Qt.

Следующие конфигурации дисплея поддерживаются из коробки (только если мониторы имеют одинаковое разрешение):

  • 1 монитор (1 × 1)
  • 2 монитора вертикально (1 × 2)
  • 2 монитора в ряд (2 × 1)
  • 3 монитора в ряд (3 × 1)
  • 4 монитора в ряд (4 × 1)
  • 5 мониторов в ряд (5 × 1)
  • 4 монитора (2 × 2)
  • 6 мониторов (3 × 2)
Примечание
Максимальное поддерживаемое количество мониторов - 6.

Смотрите также#

Запуск AppWall#

Если вы используете одну из этих конфигураций, то наряду с обычно необходимыми параметрами запуска (например, API рендеринга, размер окна и т. д.) в лаунчере вам нужно просто указать библиотеку плагинов (lib/AppWall_*).

Shell-команды
main_x64 -extern_plugin AppWall
  • UNIGINE автоматически определяет количество доступных мониторов и, если они подходят для любой из поддерживаемых конфигураций, автоматически создает соответствующее количество окон с вьюпортами UNIGINE.
  • Вы можете использовать 64-битные отладочные или релизные версии библиотеки. (Движок автоматически загружает соответствующую версию библиотеки в зависимости от указанного основного приложения.)
Примечание

Невозможно использовать AppWall с:

Four monitors in 2x2 configuration
Конфигурация 2 × 2
Four monitors in 4x1 configuration
Конфигурация 4 × 1

Как установить количество окон#

Если вы хотите установить количество окон AppWall вручную и использовать другую поддерживаемую конфигурацию, вам необходимо указать два аргумента запуска в дополнение к обычно необходимым:

  • width - устанавливает количество мониторов в горизонтальном ряду
  • height - устанавливает количество строк, т.е. количество мониторов в вертикальном столбце

Например, если вы хотите запустить AppWall в 6 окнах (2 ряда мониторов по 3 монитора в каждом ряду):

Shell-команды
main_x64 -width 3 -height 2 -extern_plugin AppWall

Не забудьте также указать другие необходимые параметры запуска!

Настройка AppWall#

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

Примечание
Чтобы предотвратить изменение настроек камеры из системного скрипта, укажите дефайн -extern_define "PROJECTION_USER" в лаунчере проекта.

Камеры 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() системного скрипта.

Примечание
Вы также можете изменять непосредственно сам скрипт wall.h.

Есть две возможные настройки в зависимости от того, как рендеринга основного монитора. Его может отрисовывать:

  • Движковый рендерер по умолчанию (так же, как при рендеринге обычного однооконного приложения).
  • Собственный рендерер AppWall (что более безопасно, если вы собираетесь использовать асимметричную пирамиду видимости для основного монитора и изменять его матрицу modelview).
Примечание
Одновременно может использоваться только один из двух модулей рендеринга.

В следующем примере показано, как создать конфигурацию монитора 3 × 1 и выбрать средство визуализации для основного монитора.

1. Использование модуля рендеринга движка по умолчанию#

Первый вариант - визуализировать основной монитор средством визуализации движка по умолчанию.

  1. Если созданная конфигурация не поддерживается по умолчанию, установите основной монитор через Unigine::Plugins::AppWall:setPrimary():

    Исходный код (C++)
    // 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);
  2. Включите все вспомогательные мониторы через Unigine::Plugins::AppWall::setEnabled() (по умолчанию они отключены). Основной должен быть отключен, так как он отрисовывается модулем рендеринга движка по умолчанию.

    Исходный код (C++)
    // 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);
  3. Установите матрицы проекции и modelview для вспомогательных мониторов через Unigine::Plugins::AppWall::setProjection() и Unigine::Plugins::AppWall::setModelview().

    Исходный код (C++)
    // 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. Этот вариант можно использовать, например, если вы хотите настроить симметричные пирамиды видимости для всех мониторов.

  1. Отключите рендеринг во вьюпорте UNIGINE по умолчанию через Unigine::Render::setEnabled():

    Исходный код (C++)
    Unigine::Render::setEnabled(0);
  2. Включите все мониторы AppWall, включая основной. В результате все три окна просмотра будут визуализированы самим средством визуализации AppWall:

    Исходный код (C++)
    // 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);
  3. Установите матрицы modelview и проекции для всех трех мониторов.

    Исходный код (C++)
    // 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);
Последнее обновление: 13.12.2021
Build: ()