Проекции с плагином AppProjection
AppProjection позволяет создавать многопроекторные конфигурации. Поддерживаются компенсация пересвечивания на границах проекций, нелинейная коррекция изображения для криволинейных экранов и цветокоррекция для каждой проекции. Следовательно, AppProjection может при необходимости проецировать изображения на большие изогнутые экраны, охватывающие 360 градусов. Более того, каждую проекцию можно полностью настроить для использования необходимой пирамиды видимости.
Смотрите также#
Запуск AppProjection#
Чтобы запустить приложение и визуализировать проекции:
-
Укажите библиотеку плагинов движка (lib/AppProjection_*) вместе с остальными необходимыми аргументы при запуске (например, API рендеринга, размер окна и т. д.). Например:
main_x64.exe -extern_plugin AppProjection
Вы можете использовать 64-битную отладочную или релизную версию библиотеки. (Движок автоматически загружает соответствующую версию библиотеки в зависимости от указанного основного приложения.)
Невозможно использовать AppProjection с:
- Многомониторными плагинами (AppWall, AppSurround)
- Режимом панорамного рендеринга
- Режимом Stereo 3D
-
Чтобы изменить количество дисплеев в строке, укажите опцию командной строки -width. Например:
main_x64.exe -extern_plugin AppProjection -width 2
По умолчанию с одного узла рендеринга поддерживается вывод до проекций 8.
Настройка проекций#
Чтобы настроить проекции, откройте системное меню, нажав Esc, перейдите на вкладку Plugins и нажмите кнопку Projection.
Откроется окно Projection Configurator. Это окно позволяет:
- Повернуть и зеркально отобразить проекции.
- Настроить искривление для каждой проекции.
- Настроить смешение краев и маски для каждой проекции.
- Скорректировать интенсивность цвета для каждой проекции.
Сначала необходимо выбрать проекцию (Projection) для настройки в правом верхнем углу.
Коррекция геометрии#
Вкладка Warp позволяет вам настроить коррекцию геометрии для ваших проекций. Области, где требуется коррекция геометрии, включают:
- Расширенная внеосевая коррекция, когда проектор размещается неудобно и требует расширенного сопоставления функции трапецеидального искажения в проекторе
- Криволинейные (неплоские) экраны, такие как изогнутые экраны и полусферические купола.
- Проецирование одного изображения с одного проектора на несколько поверхностей
- Необычные проекционные приложения на специально разработанные экраны
Коррекция геометрии выполняется путем изменения отображаемой сетки. Доступны следующие варианты:
Projection | Выберите проекцию в раскрывающемся списке, чтобы настроить ее параметры. Вы также можете использовать кнопки Page Up и Page Down для переключения между проекциями. |
---|---|
Multiplier | Шаг смещения в пикселях, который будет использоваться при перемещении точек с помощью клавиш со стрелками. Используйте + для увеличения значения или - для его уменьшения. |
Resolution |
Количество контрольных точек по горизонтальной и вертикальной осям сетки. По умолчанию используется сетка 2 x 2. Максимальный размер сетки 32 x 32. |
Points |
Визуальный редактор позволяет настроить деформацию для выбранной проекции с помощью контрольных точек и желтых маркеров. Эти маркеры отображаются для каждой выбранной контрольной точки в зависимости от ее типа . Вы можете выбирать контрольные точки щелчком мыши, а также переключаться между ними с помощью клавиш со стрелками. Множественный выбор с помощью мыши выполняется также, как обычно выбираются несколько объектов; чтобы добавить или удалить точки из выбранной группы, щелкните по ним, удерживая клавишу Ctrl. Множественный выбор с помощью клавиатуры возможен в виде цепочки с помощью клавиш со стрелками при нажатой клавише Shift. Комбинации Ctrl + Z / Ctrl + Y используются для действий Undo / Redo. Shift + Ctrl + Z отменяет все преобразования. Точки всегда перемещаются в координатах экранного пространства независимо от ориентации изображения (независимо от того, перевернуто оно или нет), это означает, что если вы нажимаете стрелку влево, точка всегда перемещается влево.
Саму сетку также можно перемещать внутри области просмотра:
|
Canvas |
Настройте канву для выбранной проекции: установите угол поворота и включите вертикальное и горизонтальное отражение. |
Коррекция цвета и яркости#
Вкладка Color позволяет корректировать интенсивность цвета, а также настраивать цветовой баланс для выбранной проекции.
Наложение#
Вкладка Blend позволяет настроить наложение в выбранной области и по краям.
Screen-Space Blending |
Управляет наложением в выбранной области. Область наложения экранного пространства не подвержена деформации. Чтобы выбрать область, щелкните Add, чтобы начать создание области наложения, и в сетке щелкните, чтобы определить одну сторону области, затем щелкните, чтобы определить другую сторону - появится зеленая линия. Третий щелчок показывает направление наложения. Область наложения экранного пространства разделена на две части: часть между синей и зеленой линиями является сплошной черной областью, а часть между зеленой и красной линиями является областью градиента. По умолчанию каждая из этих линий имеет две точки, обозначающие границы линии. Используя разрешение , вы можете увеличить количество точек вдоль каждой линии, чтобы отрегулировать его по мере необходимости, перемещая точки. Доступен множественный выбор точек. Каждая область наложения регулируется с использованием следующих параметров:
|
---|
Использование масок#
Вкладка Mask позволяет с помощью масок вырезать определенные области выбранной проекции.
Чтобы создать маску , щелкните Add и убедитесь, что кнопка Creation Mode включена. Затем создайте не менее трех точек на сетке, щелкнув в нужном месте. Соответствующая область проекции будет вырезана. Список масок для текущей проекции отображается под сеткой. Вы можете добавлять новые маски и удалять существующие с помощью соответствующих кнопок.
Чтобы добавить новые точки к маске, выбранной в списке, убедитесь, что кнопка Creation Mode включена. Затем вы можете добавить новые точки, щелкнув в области сетки. Чтобы вставить новую точку в существующую маску, выберите точку, рядом с которой должна быть добавлена новая точка, и щелкните, чтобы вставить новую. Вы можете перетащить существующую точку, чтобы переместить ее. Чтобы удалить точку , щелкните ее правой кнопкой мыши.
Вы также можете точно настроить маски , указав координаты каждой точки. Выберите точку на сетке (ее цвет станет зеленым) и введите координаты в поля Position ниже.
Вы можете изменить тип выбранной контрольной точки, используя следующие значки:
- - автоматическая линейная интерполяция (управляющие элементы отсутствуют)
- - симметричные элементы управления для плавных кривых
- - асимметричные элементы управления (вы можете управлять каждым элементом независимо)
- - автоматическая плавная кривая (элементы управления отсутствуют)
При выборе маски в списке ее параметры отображаются на панели рядом с ней:
Визуализация#
Блок настроек Render расположен внизу окна Projection Configurator. Эти настройки предназначены для облегчения точной настройки проекции за счет отображения вспомогательных элементов на реальной проекции.
- Параметр Debug Color позволяет временно установить отдельные цвета для разных проекций. Это помогает визуализировать перекрывающиеся области.
- Show Grid - отображать сетку на проекции.
- Warp Points - отображать точки и вспомогательные красные линии, идущие от выбранной точки или точек к центру каждой стороны.
- Blend Lines - отображать линии смешения экранного пространства и вспомогательные фиолетовые линии, идущие от выбранной точки или точек к центру каждой стороны.
Настройки просмотра нескольких проекций#
Если с помощью AppProjection создано более двух проекций, следующие параметры просмотра могут быть изменены в файле System menu -> Plugins.
FOV |
Угол обзора для всех проекций (в этом случае опция камеры Field of View игнорируется).
FOV = 60
FOV = 80
|
---|---|
Angle |
Позволяет регулировать угол обзора между проекциями: когда проекционные поверхности повернуты под некоторым углом друг к другу, этот угол можно ввести как значение Angle, и проекция автоматически пересчитывается для отображения правильного изображения. Например, если две поверхности повернуты друг к другу на 40 градусов:
Угол = 40 градусов
|
Bezel X | Компенсирует горизонтальную лицевую панель мониторов. Положительные значения уменьшают пространство области просмотра; отрицательные увеличивают его (на перекрытие). |
Bezel Y | Компенсирует вертикальную лицевую панель мониторов. Положительные значения уменьшают пространство области просмотра; отрицательные увеличивают его (на перекрытие). |
Сохранение и загрузка предустановок#
После того, как конфигурация проекции настроена, ее можно сохранить в файл настроек (*.proj) для загрузки в любое время (например, для настройки другой проекции):
- Save кнопка для сохранения файла с пресетами
- Load кнопка для загрузки файла с пресетами
- Сохраняемый файл *.proj содержит настройки только для текущей выбранной проекции.
- Настройки, загруженные из файла *.proj, применяются к текущей выбранной проекции.
Настройка AppProjection#
AppProjection можно настроить для поддержки пользовательских пирамид видимости (симметричных или асимметричных) для каждой проекции.
Окна просмотра AppProjection#
AppProjection имеет одно основное окно просмотра, в то время как все остальные окна просмотра отображаются как вспомогательные . По умолчанию основным дисплеем является окно просмотра движка UNIGINE, используемое для конфигурации с одним монитором. Он использует матрицы Player, используемые движком для просмотра сцены. Другие дисплеи представляют собой произвольные камеры с любой перспективой и смотрящими в любом направлении. Каждый дисплей имеет свои собственные матрицы вида и проекции. При необходимости можно включить или выключить как первичный, так и дополнительный проецирования.
- Основное окно просмотра может быть настроено на любую проекцию (для поддерживаемых конфигураций она уже настроена).
- Каждое окно просмотра имеет свои собственные матрицы вида и проекции.
- По умолчанию только основной имеет графический пользовательский интерфейс (графический интерфейс системы рендеринга, виджеты редактора, каркас или профилировщик). Однако на всех проекциях можно рисовать отдельные графические интерфейсы.
- У всех вьюпортов есть свои Viewport и Reflection маски для выборочной визуализации узлов и отражений от них.
Конфигурации по умолчанию#
Для конфигураций по умолчанию основное окно просмотра настроено на следующую проекцию:
- Для 2 проекций 1-е окно просмотра.
- Для 3 проекций 2-е окно просмотра.
- Для 4 проекций 2-е окно просмотра.
- Для 5 проекций 3-е окно просмотра.
Как настроить проекции#
Рендеринг вьюпортов AppProjection управляется скриптом wall.h (находится в папке <UnigineSDK>/data/core/scripts/system/). Есть две возможные настройки в зависимости от того, как рендеринга основного монитора. Его может отрисовывать:
- Движковый рендерер по умолчанию (так же, как при рендеринге обычного однооконного приложения).
- Собственный рендерер AppProjection (что более безопасно, если вы собираетесь использовать асимметричную пирамиду видимости для основного монитора и изменять его матрицу modelview).
В следующем примере показано, как настроить конфигурацию камеры и выбрать средство визуализации для основной проекции.
1. Использование модуля рендеринга движка по умолчанию#
Первый вариант - визуализировать основной монитор средством визуализации движка по умолчанию.
-
Если созданная конфигурация еще не поддерживается, установите первичную проекцию через Unigine::Plugins::AppProjection::setPrimary():
// Set the first projection as a primary one Unigine::Plugins::AppProjection::get()->setPrimary(1);
-
Включите все неосновные проекции через Unigine::Plugins::AppProjection::SetEnabled(). Основную следует оставить отключенной так как она отрисовывается модулем рендеринга движка по умолчанию.
// Enable the 2nd projection in a row // The second argument of the function sets 'enabled' flag Unigine::Plugins::AppProjection::get()->setEnabled(1, 1);
-
Установите матрицы проекции и modelview для вспомогательной проекции через Unigine::Plugins::AppProjection::SetProjection() и Unigine::Plugins::AppProjection::SetModelview().
// Settings for the 2nd projection Unigine::Plugins::AppProjection::get()->setProjection(1, projection_1); Unigine::Plugins::AppProjection::get()->setModelview(1, projection_1);
2. Использование средства визуализации AppProjection#
Другой вариант - визуализировать основной монитор средством визуализации AppProjection. Этот вариант можно использовать, например, если вы хотите настроить симметричные пирамиды видимости для всех мониторов.
-
Установите проекцию, которая будет использоваться в качестве основной, и включите ее рендеринг с помощью AppProjection.
// Set the first projection as a primary one Unigine::Plugins::AppProjection::get()->setPrimary(1);
-
Отключите рендеринг во вьюпорте UNIGINE по умолчанию через Unigine::Render::setEnabled():
Unigine::Render::setEnabled(0);
-
Включите все проекции AppProjection, включая основную. В результате все вьюпорты будут отображаться самим средством визуализации AppProjection:
// Enable all projections Unigine::Plugins::AppProjection::get()->setEnabled(0, 1); Unigine::Plugins::AppProjection::get()->setEnabled(1, 1);
-
Установите матрицы modelview и проекции для всех проекций.
// Settings for the 1st projection Unigine::Plugins::AppProjection::get()->setProjection(0, projection_0); Unigine::Plugins::AppProjection::get()->setModelview(0, modelview_0); // Settings for the 2nd projection Unigine::Plugins::AppProjection::get()->setProjection(1, projection_1); Unigine::Plugins::AppProjection::get()->setModelview(1, modelview_1);