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
Работа с контентом
Оптимизация контента
Материалы
Art Samples
Tutorials

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

Внимание
Функционал, описанный в этой статье, недоступен в Community редакции SDK.
Чтобы использовать этот функционал вам необходимо получить лицензию на Sim SDK.

The AppWall application is designed for rendering the Unigine world into the configurable number of windows. The number of AppWall monitors is not limited. They can fit any display configuration and can be rendered both in the windowed and the full screen mode.Приложение AppWall предназначено для визуализации мира Unigine в настраиваемом количестве окон. Количество мониторов AppWall не ограничено. Они могут соответствовать любой конфигурации дисплея и могут отображаться как в оконном, так и в полноэкранном режиме.

Примечание
This plugin cannot be used in a Qt-based application.Этот плагин нельзя использовать в приложении на основе Qt.

The following display configurations are supported out of the box (only if monitors have identical resolutions):Следующие конфигурации дисплея поддерживаются из коробки (только если мониторы имеют одинаковое разрешение):

  • 1 monitor (1×1)1 монитор (1 × 1)
  • 2 monitors in a column (1×2)2 монитора вертикально (1 × 2)
  • 2 monitors in a row (2×1)2 монитора в ряд (2 × 1)
  • 3 monitors in a row (3×1)3 монитора в ряд (3 × 1)
  • 4 monitors in a row (4×1)4 монитора в ряд (4 × 1)
  • 5 monitors in a row (5×1)5 мониторов в ряд (5 × 1)
  • 4 monitors (2×2)4 монитора (2 × 2)
  • 6 monitors (3×2)6 мониторов (3 × 2)
Примечание
The maximum supported number of monitors is 6.Максимальное поддерживаемое количество мониторов - 6.

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

Launching AppWallЗапуск AppWall#

In case you use one of these configurations, you only need to specify a plugin library (lib/AppWall_*) with the usually required start-up arguments (such as rendering API, window size, etc.) in the launcher.Если вы используете одну из этих конфигураций, то наряду с обычно необходимыми параметрами запуска (например, API рендеринга, размер окна и т. д.) в лаунчере вам нужно просто указать библиотеку плагинов (lib/AppWall_*).

Shell-команды
main_x64 -extern_plugin AppWall
  • UNIGINE engine automatically detects the number of available monitors and if they fit any of the supported configurations, it automatically creates the appropriate number of windows with UNIGINE viewports.UNIGINE автоматически определяет количество доступных мониторов и, если они подходят для любой из поддерживаемых конфигураций, автоматически создает соответствующее количество окон с вьюпортами UNIGINE.
  • You can use 64-bit debug or release versions of the library. (The engine automatically loads the appropriate version of the library depending on the specified main application.)Вы можете использовать 64-битные отладочные или релизные версии библиотеки. (Движок автоматически загружает соответствующую версию библиотеки в зависимости от указанного основного приложения.)
Примечание

It is not possible to use AppWall with:Невозможно использовать AppWall с:

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

How to Set the Number of WindowsКак установить количество окон#

If you want to set the number of AppWall windows manually and use another supported configuration, you need to specify two specific start-up arguments in addition to the usually required ones:Если вы хотите установить количество окон AppWall вручную и использовать другую поддерживаемую конфигурацию, вам необходимо указать два аргумента запуска в дополнение к обычно необходимым:

  • width — sets the number of monitors in a horizontal rowwidth - устанавливает количество мониторов в горизонтальном ряду
  • height — sets the number of rows, i.e. how many monitors there are in a vertical columnheight - устанавливает количество строк, т.е. количество мониторов в вертикальном столбце

For example, if you want to launch AppWall in 6 windows (2 rows of monitors with 3 monitors in each row):Например, если вы хотите запустить AppWall в 6 окнах (2 ряда мониторов по 3 монитора в каждом ряду):

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

Do not forget to specify other required start-up arguments as well!Не забудьте также указать другие необходимые параметры запуска!

Customizing AppWallНастройка AppWall#

AppWall can be easily customized to support the desired configuration of monitors. You can create AppWall that renders UNIGINE viewports into the arbitrary number of windows with custom viewing frustums (symmetric or asymmetric ones).AppWall можно легко настроить для поддержки желаемой конфигурации мониторов. Вы можете создать AppWall, который отображает окна просмотра UNIGINE в произвольное количество окон с настраиваемыми пирамидами видимости (симметричными или асимметричными).

Примечание
To prevent modifying camera settings from system script, specify the -extern_define "PROJECTION_USER" definition in the project's launcher.Чтобы предотвратить изменение настроек камеры из системного скрипта, укажите дефайн -extern_define "PROJECTION_USER" в лаунчере проекта.

AppWall CamerasКамеры AppWall#

AppWall have one primary viewport, while all others are rendered as auxiliary ones. By default, the primary display is the UNIGINE engine viewport used for one-monitor configuration. It uses matrices of the Player used by the engine to view the scene. Other displays are arbitrary cameras with any perspective and facing whatever direction needed. Each display has its own model-view and projection matrices. Both the primary monitor and auxiliary ones can be enabled or disabled, if necessary.AppWall имеет одно основное окно просмотра (вьюпорт), а все остальные отображаются как вспомогательные . По умолчанию основным дисплеем является окно просмотра движка UNIGINE, используемое для конфигурации с одним монитором. Он использует матрицы Player, используемые движком для просмотра сцены. Другие дисплеи представляют собой произвольные камеры с любой перспективой и смотрящие в любом направлении. Каждый дисплей имеет свои собственные матрицы вида и проекции. При необходимости можно включать и отключать как основной, так и вспомогательный мониторы.

  • The primary display can be set to any monitor (for supported configurations it is already set).Основной дисплей может быть набор на любой монитор (для поддерживаемых конфигураций он уже установлен).
  • Each display has its own model-view and projection matrices.Каждый дисплей имеет свои собственные матрицы вида и проекции.
  • By default, only a primary one has an interface (render system GUI, editor widgets, wireframe, or the profiler). However, separate GUIs can be drawn on all monitors (see the sample for more details).По умолчанию только основной имеет интерфейс (графический интерфейс системы рендеринга, виджеты редактора, каркас или профилировщик). Однако отдельные Графические интерфейсы можно рисовать на всех мониторах (см. образец).
  • All viewports have their own Viewport and Reflection mask to selectively render nodes and reflections from them.У всех вьюпортов есть свои Viewport и Reflection маски для выборочной визуализации узлов и отражений от них.

Default ConfigurationsКонфигурации по умолчанию#

For default configurations, the primary display is set to the following monitor:Для конфигураций по умолчанию основной дисплей настроен на следующий монитор:

  • For 1×1 configuration, the 1st (and only) display.Для конфигурации 1 × 1 - первый (и единственный) дисплей.
  • For 2×1 configuration, the 1st display.Для конфигурации 2 × 1 - первый дисплей.
  • For 3×1 configuration, the 2nd display.Для конфигурации 3 × 1 - второй дисплей.
  • For 4×1 configuration, the 2nd display.Для конфигурации 4 × 1 - второй дисплей.
  • For 5×1 configuration, the 3rd display.Для конфигурации 5 × 1 - третий дисплей.
  • For 1×2 configuration, the 1st display in the column.Для конфигурации 1 × 2 - первый дисплей в столбце.
  • For 2×2 configuration, the 1st display in the 1st row.Для конфигурации 2 × 2 - первый дисплей в 1-й строке.
  • For 3×2 configuration, the 2nd display in the 1st row.Для конфигурации 3 × 2 - второй дисплей в 1-й строке.

How to Set Up Custom Cameras ConfigurationКак настроить пользовательскую конфигурацию камер#

Rendering of AppWall viewports is controlled by wall.h script (located in <UnigineSDK>/data/core/scripts/system).Рендеринг вьюпортов AppWall управляется скриптом wall.h (расположен в <UnigineSDK>/data/core/scripts/system).

To implement a custom camera configuration, comment wall.h out in the unigine.usc system script and wrap your custom code around with #ifdef HAS_APP_WALL ... #endif in the render() function of the system script.Чтобы реализовать собственную конфигурацию камеры, закомментируйте wall.h в системном скрипте unigine.usc и оберните свой собственный код с помощью #ifdef HAS_APP_WALL ... #endif в функции render() системного скрипта.

Примечание
You can also directly modify the wall.h script.Вы также можете изменять непосредственно сам скрипт wall.h.

There are two possible setups depending on how the primary monitor is rendered. It can be drawn by:Есть две возможные настройки в зависимости от того, как рендеринга основного монитора. Его может отрисовывать:

  • The default engine renderer (the same as when a usual one-window application is rendered).Движковый рендерер по умолчанию (так же, как при рендеринге обычного однооконного приложения).
  • The AppWall renderer itself (which is safer if you are going to use asymmetric frustum for the primary monitor and modify its modelview matrix).Собственный рендерер AppWall (что более безопасно, если вы собираетесь использовать асимметричную пирамиду видимости для основного монитора и изменять его матрицу modelview).
Примечание
Only one of two renderers should be enabled at the same time.Одновременно может использоваться только один из двух модулей рендеринга.

The following example demonstrates how to create a 3×1 monitor configuration and choose the renderer for the primary monitor.В следующем примере показано, как создать конфигурацию монитора 3 × 1 и выбрать средство визуализации для основного монитора.

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

The first variant is to render the primary monitor by the default engine renderer.Первый вариант - визуализировать основной монитор средством визуализации движка по умолчанию.

  1. In case the created configuration is not supported by default, set the primary monitor via Unigine::Plugins::AppWall:setPrimary():Если созданная конфигурация не поддерживается по умолчанию, установите основной монитор через 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. Enable all auxiliary monitors via Unigine::Plugins::AppWall::setEnabled() (they are disabled by default). The primary one should be disabled, as it is drawn by the default engine renderer.Включите все вспомогательные мониторы через 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. Set projection and model-view matrices for auxiliary monitors via Unigine::Plugins::AppWall::setProjection() and Unigine::Plugins::AppWall::setModelview(). Установите матрицы проекции и 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. Using AppWall renderer2. Использование средства визуализации AppWall#

Another variant is to render the primary monitor by the AppWall renderer. This variant can be used, for example, if you want to set up symmetric frustums for all monitors.Другой вариант - визуализировать основной монитор средством визуализации AppWall. Этот вариант можно использовать, например, если вы хотите настроить симметричные пирамиды видимости для всех мониторов.

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

    Исходный код (C++)
    Unigine::Render::setEnabled(0);
  2. Enable all AppWall monitors including the primary one. As a result, all three viewports will be rendered by AppWall renderer itself:Включите все мониторы 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. Set model-view and projection matrices for all three monitors.Установите матрицы 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);
Последнее обновление: 16.06.2021
Build: ()