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.

Вывод на 3 монитора с плагином AppSurround

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

AppSurround is designed to span the UNIGINE-based project across three monitors. It allows expanding the borders of the virtual world while keeping the full control over the rendered viewports.AppSurround предназначен для рендеринга UNIGINE-проекта на трех мониторах. Это позволяет расширять границы виртуального мира, сохраняя при этом полный контроль над визуализируемыми вьюпортами.

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

Hardware RequirementsТребования к оборудованию#

Both hardware requirements should be met to launch AppSurround:Для запуска AppSurround должны быть выполнены оба аппаратных требования:

  1. At least 3 video simultaneous outputs on a one video card or NVIDIA SLI system.Минимум 3 видеовыхода одновременно на одной видеокарте или системе NVIDIA SLI.
  2. AMD Radeon HD 6000 Series or NVIDIA GeForce 600 Series GPU.Графический процессор серии AMD Radeon HD 6000 или NVIDIA GeForce 600.

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

Launching AppSurroundЗапуск AppSurround#

AppSurround can be rendered both in the windowed and in the full screen mode.AppSurround может отображаться как в оконном, так и в полноэкранном режиме.

AppSurround on three monitors

AppSurround output onto three monitorsAppSurround вывод на три монитора

Launch the application together with a plugin library (lib/AppSurround_*) with the usually required start-up arguments (such as rendering API, window size, etc.).Запустите приложение вместе с библиотекой плагинов (lib/AppSurround_*) с обычно необходимыми параметрами запуска (например, API рендеринга, размер окна и т. д.).

Shell-команды
main_x64 -extern_plugin AppSurround

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 AppSurround with:Невозможно использовать AppSurround с:

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

AppSurround can be customized to support any custom viewing frustums (symmetric or asymmetric ones) when rendering onto three monitors.AppSurround можно настроить для поддержки любых пользовательских пирамид видимости (симметричных или асимметричных) при рендеринге на трех мониторах.

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

AppSurround CamerasAppSurround Cameras#

AppSurround has one primary viewport in the center, 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 modelview and projection matrices. Both the primary monitor and auxiliary ones can be enabled or disabled, if necessary.AppSurround имеет одно основное окно просмотра в центре, в то время как все остальные отображаются как вспомогательные . По умолчанию основным дисплеем является окно просмотра движка UNIGINE, используемое для конфигурации с одним монитором. Он использует матрицы Player, используемые движком для просмотра сцены. Другие дисплеи представляют собой произвольные камеры с любой перспективой и смотрящими в любом направлении. Каждый дисплей имеет свои собственные матрицы modelview и проекции. При необходимости можно включать и отключать как основной, так и вспомогательный мониторы.

  • The central monitor is a primary one. Two side monitors are auxiliary monitors that can be arbitrary cameras with any perspective and facing whatever direction needed.Центральный монитор - первичный. Два боковых монитора - это вспомогательные мониторы, которые могут быть произвольными камерами с любой перспективой обращенными в любом направлении.
  • Each display, including the primary one, has its own modelview and projection matrices.Каждый дисплей, включая основной, имеет свои собственные матрицы modelview и проекции.
  • 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.По умолчанию только основной имеет интерфейс (графический интерфейс системы рендеринга, виджеты редактора, каркас или профилировщик). Однако отдельные Графические интерфейсы могут отображаться на всех мониторах.
  • All viewports have their own viewport and Reflection mask to selectively render nodes and reflections from them.У всех вьюпортов есть свои вьюпорты и маска Reflection для выборочной визуализации узлов и отражений от них.

How to Customize Cameras ConfigurationКак настроить конфигурацию камер#

Just like in case with AppWall, rendering of AppSurround viewports is controlled by the wall.h script (found in <UnigineSDK>/data/core/scripts/system).Как и в случае с AppWall, рендеринг вьюпортов в AppSurround управляется скриптом 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_SURROUND ... #endif in the render() function of the system script:Чтобы реализовать пользовательскую конфигурацию камеры, закомментируйте wall.h в системном скрипте unigine.usc и оберните свой собственный код с помощью #ifdef HAS_APP_SURROUND ... #endif в функции render() системного скрипта:

Исходный код (UnigineScript)
int render() {
	#ifdef HAS_APP_SURROUND
		// place an implementation of a 
		// custom camera configuration here
		// ...
	#endif
	return 1;
}

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

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

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

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

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

  1. Enable two side (auxiliary) monitors via engine.surround.setEnabled(). All AppSurround monitors are disabled by default. The central one should be disabled, as it is drawn by the default engine renderer.Включите два боковых (вспомогательных) монитора через engine.surround.setEnabled(). По умолчанию все мониторы AppSurround отключены. Центральный должен быть отключен, так как он отрисовывается модулем рендеринга движка по умолчанию.

    Исходный код (UnigineScript)
    // Enable the 1-st and the 3-rd monitors.
    // The third argument of the function sets the "enabled" flag.
    engine.surround.setEnabled(0,1);
    engine.surround.setEnabled(2,1);
  2. Set projection and modelview matrices for side monitors via engine.surround.setProjection() and engine.surround.setModelview(). Установите матрицы проекции и modelview для боковых мониторов, используя engine.surround.setProjection() и engine.surround.setModelview().

    Исходный код (UnigineScript)
    // Settings for the 1-st monitor
    engine.surround.setProjection(0,projection_0);
    engine.surround.setModelview(0,modelview_0);
    
    // Settings for the 3-rd monitor
    engine.surround.setProjection(2,projection_1);
    engine.surround.setModelview(2,modelview_1);

2. Using AppSurround renderer2. Использование средства визуализации AppSurround.#

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

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

    Исходный код (UnigineScript)
    engine.render.setEnabled(0);
  2. Enable all three AppSurround monitors including the primary one. As a result, all three viewports will be rendered by AppSurround renderer itself:Включите все три монитора AppSurround, включая основной. В результате все три виюпорта будут визуализированы самим AppSurround:

    Исходный код (UnigineScript)
    // Enable all three monitors:
    engine.surround.setEnabled(0,1);
    engine.surround.setEnabled(1,1);
    engine.surround.setEnabled(2,1);
  3. Set modelview and projection matrices for all three monitors.Установите матрицы modelview и проекции для всех трех мониторов.

    Исходный код (UnigineScript)
    // Settings for the 1-st monitor
    engine.surround.setProjection(0,projection_0);
    engine.surround.setModelview(0,modelview_0);
    
    // Settings for the 2-nd (primary) monitor
    engine.surround.setProjection(1,projection_1);
    engine.surround.setModelview(1,modelview_1);
    
    // Settings for the 3-rd monitor
    engine.surround.setProjection(2,projection_2);
    engine.surround.setModelview(2,modelview_2);
Последнее обновление: 13.12.2021
Build: ()