Вывод на 3 монитора с плагином Surround
Surround предназначен для рендеринга UNIGINE-проекта на трех мониторах. Это позволяет расширять границы виртуального мира, сохраняя при этом полный контроль над визуализируемыми вьюпортами.
Требования к оборудованию#
Для запуска Surround должны быть выполнены оба аппаратных требования:
- Минимум 3 видеовыхода одновременно на одной видеокарте или системе NVIDIA SLI.
- Графический процессор серии AMD Radeon HD 6000 или NVIDIA GeForce 600.
Смотрите также#
- Функции engine.surround
-
Примеры <UnigineSDK>/data/samples/plugins/app_surround_00 и <UnigineSDK>/data/samples/plugins/app_surround_01 для получения дополнительных сведений.
Чтобы запустить первый сэмпл из UNIGINE SDK Browser, нажмите кнопку Surround plugin на вкладке Plugin Samples.
Запуск Surround#
Surround может отображаться как в оконном, так и в полноэкранном режиме.
Запустите приложение вместе с библиотекой плагинов (lib/Surround_*) с обычно необходимыми параметрами запуска (например, API рендеринга, размер окна и т. д.).
main_x64 -extern_plugin Surround
Вы можете использовать 64-битные отладочные или релизные версии библиотеки. (Движок автоматически загружает соответствующую версию библиотеки в зависимости от указанного основного приложения.)
Невозможно использовать Surround с:
- Плагинами для нескольких мониторов (Wall, Projection)
- Панорамным рендерингом
- Стерео 3D
Настройка Surround#
Surround можно настроить для поддержки любых пользовательских пирамид видимости (симметричных или асимметричных) при рендеринге на трех мониторах.
Surround Cameras#
Surround имеет одно основное окно просмотра в центре, в то время как все остальные отображаются как вспомогательные . По умолчанию основным дисплеем является окно просмотра движка UNIGINE, используемое для конфигурации с одним монитором. Он использует матрицы Player, используемые движком для просмотра сцены. Другие дисплеи представляют собой произвольные камеры с любой перспективой и смотрящими в любом направлении. Каждый дисплей имеет свои собственные матрицы modelview и проекции. При необходимости можно включать и отключать как основной, так и вспомогательный мониторы.
- Центральный монитор - первичный. Два боковых монитора - это вспомогательные мониторы, которые могут быть произвольными камерами с любой перспективой обращенными в любом направлении.
- Каждый дисплей, включая основной, имеет свои собственные матрицы modelview и проекции.
- По умолчанию только основной имеет интерфейс (графический интерфейс системы рендеринга, виджеты редактора, каркас или профилировщик). Однако отдельные Графические интерфейсы могут отображаться на всех мониторах.
- У всех вьюпортов есть свои вьюпорты и маска Reflection для выборочной визуализации узлов и отражений от них.
Как настроить конфигурацию камер#
Как и в случае с Wall, рендеринг вьюпортов в Surround управляется скриптом wall.h (находится в <UnigineSDK>/data/core/scripts/system).
Чтобы реализовать пользовательскую конфигурацию камеры, закомментируйте wall.h в системном скрипте unigine.usc и оберните свой собственный код с помощью #ifdef HAS_SURROUND ... #endif в функции render() системного скрипта:
int render() {
#ifdef HAS_SURROUND
// place an implementation of a
// custom camera configuration here
// ...
#endif
return 1;
}
Есть две возможные настройки в зависимости от того, как отображается центральный монитор. Его можно нарисовать:
- рендерером движка, используемым по умолчанию (так же, как при рендеринге обычного приложения с одним монитором).
- Сам рендерер Surround (что безопаснее, если вы собираетесь использовать асимметричную пирамиду видимости для центрального монитора и изменять его матрицу modelview).
В следующем примере показано, как настроить конфигурацию камеры и выбрать средство визуализации для центрального монитора.
1. Использование модуля рендеринга движка по умолчанию#
Первый вариант - визуализировать центральный (основной) монитор с помощью модуля рендеринга движка по умолчанию.
-
Включите два боковых (вспомогательных) монитора через engine.surround.setEnabled(). По умолчанию все мониторы Surround отключены. Центральный должен быть отключен, так как он отрисовывается модулем рендеринга движка по умолчанию.
// 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);
-
Установите матрицы проекции и modelview для боковых мониторов, используя engine.surround.setProjection() и engine.surround.setModelview().
// 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. Использование средства визуализации Surround.#
Другой вариант - визуализировать центральный монитор с помощью модуля рендеринга Surround. Этот вариант можно использовать, например, если вы хотите настроить симметричные пирамиды видимости для всех мониторов.
-
Отключите рендеринг в окне просмотра UNIGINE по умолчанию через engine.render.setEnabled():
engine.render.setEnabled(0);
-
Включите все три монитора Surround, включая основной. В результате все три виюпорта будут визуализированы самим Surround:
// Enable all three monitors: engine.surround.setEnabled(0,1); engine.surround.setEnabled(1,1); engine.surround.setEnabled(2,1);
-
Установите матрицы modelview и проекции для всех трех мониторов.
// 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);