Программное решение проблем генерации изображения в современных стереокомплексах
С.В. Андреев, Е.Ю. Денисов Отдел компьютерной графики ИПМ им. М.В.Келдыша РАН [email protected], [email protected]
Введение
В современном мире огромную роль играют системы презентаций, используемые для доведения информации зрителю в графическом виде.
Особое место в таких системах занимают компьютерные системы генерации трехмерного представления иллюстрируемых объектов, работающие в режиме реального времени. Действительно, одно дело показать, например, новый автомобиль, записав его изображения с помощью видеокамеры. И совершенно другое — демонстрировать зрителю модель этого автомобиля, даже не воплощенного еще в реальном мире, с помощью таких компьютерных систем. Зритель не просто остается пассивным участником демонстрации, а вовлекается в процесс создания шоу. По желанию этого зрителя камера облетает вокруг несуществующего еще автомобиля (либо по заранее заданной траектории, либо интерактивно, подчиняясь командам, отдаваемым непосредственно зрителем с помощью мыши или любого другого координатного устройства). Появляется возможность перекрасить автомобиль в мгновение ока в цвет, выбранный самим зрителем, возможность рассмотреть вновь окрашенный автомобиль в разное время суток, в пасмурную и ясную погоду, в различных вариантах окружающей среды (городские кварталы, загородное шоссе, горная дорога, лес), возможность зажечь фары, открыть двери, включить стеклоочистители (указанные действия могут сопровождаться соответствующими звуковыми эффектами).
Зритель вовлекается в созидательную игру, позволяющую ему походить по комнатам несуществующего в реальности здания, расставить там мебель по своему вкусу, подобрать обои, паркет, разместить лампы освещения. То, что обычно доступно лишь профессиональному дизайнеру на экране монитора его компьютера, при проведении презентации превращает зрителя в участника коллективного творчества, и объект презентации — в плод коллективного творения. И это, в конечном счете, определяет успех презентации.
Terminal V
Одним из примеров презентационной системы является комплекс Terminal V, находящийся в Австрии и описанный на сайте [1]. Различные компании арендуют комплекс Terminal V для проведения своих презентаций, конференций, демонстраций своих разработок. Комплекс представляет собой демонстрационный зал со зрительными местами, обращенными к трем соединенным экранам, стоящим под углом в 120 градусов — фронтальному, левому и правому (рис. 1).
Этот комплекс управляется системой из семи компьютеров, объединенных в локальную сеть. Два из них управляют выводом стереокадра на фронтальный экран: первый компьютер выводит правый канал стереокадра фронтального экрана, второй — левый канал стереокадра фронтального экрана. Соответственно, два следующих компьютера выводят стереокадр на левый экран, и еще два — на правый. Все эти шесть серверных компьютеров, выводящие изображения на экраны комплекса, управляются основным мастер-компьютером, подключенным к обычному монитору (место оператора презентационного комплекса).
Таким образом, система предназначена для показа протяженных панорамных стереокадров, где каждый результирующий стереокадр состоит из трех частей (левый, правый и фронтальный экран соответственно) и управляемого оператором с помощью компьютера с обычным монитором.
Рис. 1. Техническая схема трех экранов Terminal V (вид сверху)
Одна из австрийских компаний заказала нам программное обеспечение, предназначенное для проведения демонстраций своей продукции в режиме реального времени в демонстрационном зале Terminal V.
Какие же специфические проблемы встают при разработке программного обеспечения для системы Terminal V? Это, во-первых, разделение стереокадра на три составляющие и во-вторых, синхронизация вывода изображения. В то время, как решение первой проблемы достаточно очевидно в данном случае, рассмотрим специфику второй подробнее.
Известно, что при генерации кадра системами, работающими в режиме реального времени, используется так называемая система с двойной буферизацией, когда расчет и отображение каждого последующего кадра происходит в так называемом «заднем буфере» (back buffer), невидимом на экране. Таким образом, зритель не наблюдает промежуточных состояний неоконченного расчета и отображения кадра (которые могут занимать достаточно продолжительное время). И только когда кадр полностью рассчитан, происходит практически мгновенный обмен буферов (swap buffers) и содержимое заднего буфера мгновенно выдается на экран. Тем временем система начинает расчет следующего кадра, и так далее.
В случае расчета частей одного и того же кадра несколькими компьютерами (семи в случае Terminal V) возникает проблема синхронизации процесса обмена буферов. Время расчета части кадра напрямую зависит от сложности участка сцены, попавшего в эту часть. Естественно, какому-то из компьютеров достанется более сложный для расчетов участок, и таким образом этот компьютер потратит на расчет своего участка большее время, чем другие. В общем случае все компьютеры закончат расчет своих участков кадра в разное время. И если не производить контроль обмена буферов для всей системы, мы получим хаотически рассогласованную картину смены кадров правого, фронтального и левого экранов, причем несогласованность возрастает, учитывая наличие стерео каналов (правый/левый на каждый экран).
Методы решения для комплекса Terminal V
Какие же существуют пути решения возникающей проблемы генерации результирующего стереокадра в комплексе Terminal V? Их, фактически, два: это аппаратный и программный.
Аппаратное решение. Компанией nVidia разработано семейство видеокарт Quadro G-Sync [2].
NVIDIA Quadro G-Sync является дополнительной видеокартой, которая предоставляет функциональность Framelock/Genlock, синхронизацию вывода изображения из буфера кадров с частотой обновления, обеспечивая высокие уровни реалистичности, визуализации и совместных возможностей.
Однако есть довольно существенный недостаток такого решения. Это высокая стоимость продуктов линии G-Sync. Например, стоимость только одной видеокарты G-Sync достигает в среднем 4—5 тысяч долларов. При условии, что в данной системе нам необходимы семь видеокарт, стоимость такого решения увеличивается на десятки тысяч долларов. Это также ограничивает применимость данного подхода к более дешевым системам презентации, построенным на аналогичном принципе (расчет кадра несколькими компьютерами, объединенными в локальную сеть).
Поэтому хотелось бы иметь и другое решение данной проблемы.
Программное решение. Можно решить эту проблему программным путем. Принцип решения довольно прост: мастер-компьютер информирует каждый из серверных компьютеров, какую часть кадра предстоит рассчитать каждому из них.
Каждый из серверных компьютеров вычисляет свою часть результирующего стереокадра и посылает сообщение на мастер-компьютер, не производя более никаких действий, а только ожидая ответной команды.
Как только мастер-компьютер получит сигнал, что все части кадра рассчитаны, он выдает команду всем серверам об обмене буферов. И результирующий стереокадр появляется без рассогласования на всех трех экранах.
Весь обмен информацией (данные, синхронизация) происходит через локальную сеть по стандартным протоколам обмена.
Такой подход удешевляет систему, позволяя отказаться от дорогостоящего дополнительного оборудования класса high-end, и соответственно, увеличивает области применения данного решения.
Практическое воплощение решения
В большинстве современных систем презентаций пользователю предоставляется интерфейс достаточно высокого уровня, позволяющий ему работать со сложными сценами, не задумываясь о деталях взаимодействия с графикой нижнего уровня и системными программными интерфейсами. Разработчик отгорожен от деталей взаимодействия с низкоуровневой графикой и системными программными интерфейсами и может сконцентрироваться на разработке собственно приложения.
В нашем случае в качестве такой основы был взят разработанный в отделе машинной графики ИПМ программный комплекс FLY [3], позволяющий отображать сцены со сложной геометрией, оптически сложными материалами и разнообразными источниками освещения, включая дневной свет. Комплекс FLY поддерживает не только специфические для OpenGL атрибуты материалов сцены, необходимые для интерактивного показа в режиме реальном времени (используя аппаратное ускорение), но также и оснащен модулем трассировки лучей для генерации фотореалистичных изображений.
Имеющийся в этом комплексе модуль распределенных вычислений был расширен подсистемой визуализации и подсистемой синхронизации отображения. Общая идея
Общая идея визуализации состоит в следующем: одна и та же сцена (набор объектов со своими характеристиками поверхностей, набор источников освещения и т. д.) обрабатывается и визуализируется каждым из серверных компьютеров независимо. Разница между ними состоит в том, что каждый сервер-компьютер использует для визуализации свое положение камеры (передаваемое мастер-компьютером), соответствующее положению рассчитываемого участка на общем большом экране. Стереоизображение является частным случаем многоэкранной визуализации и реализуется так же — два сервер-компьютера рассчитывают два изображения, каждый свое, соответствующие левому и правому глазам. Для этого мастер-компьютер передает серверам положение камер, слегка смещенных друг относительно друга — раздвинутых на расстояние стереобазы. В процессе показа система презентации автоматически синхронизирует показы левого и правого кадров со специальным устройством в очках, обеспечивающим попеременное закрывание левого и правого глаза. Таким образом, левый глаз всегда видит только левые кадры, а правый — правые.
Особенности решения
• Поскольку в общем случае сервера могут быть оснащены различными
видеокартами (что весьма возможно в случае low-end систем), необходим механизм адаптации мастер-компьютера к возможным различиям видеосистем серверных компьютеров (разрешение, частота, глубина цвета и т.д.) для обеспечения работоспособности системы в целом.
• Мастер-компьютер должен обеспечить отображение полного набора элементов управления, позволяющих оператору производить манипуляции как с объектами сцены, так и с камерой, что необходимо для интерактивности процесса презентации. Серверы, напротив, должны показывать только результирующее изображение без элементов управления, которые в этом случае являются лишними.
• Необходимо обеспечить самовосстановление системы визуализации после сбоев сети и/или серверов без необходимости полного ее перезапуска.
Реализация
После загрузки сцены мастер-компьютер передает каждому серверу эту сцену со всеми атрибутами (текстуры, свойства поверхностей, источники освещения и т.д.), так что каждый сервер имеет полную копию сцены и способен ее обсчитывать независимо от других. Также передача сцены новому серверу происходит после изменения списка серверов (в случае добавления сервера).
Затем для визуализации каждого кадра выполняются три основных этапа:
1. Мастер-компьютер передает каждому серверу новые параметры камеры — ее координаты, координаты точки назначения (куда фактически направлена камера), угол поля зрения. Эти новые параметры могут быть либо рассчитаны мастер-компьютером как результат воздействия оператора на координатное устройство ввода, или вычислены автоматически как результат движения камеры по заранее заданной траектории.
2Т Г и __u и
. Каждый сервер рассчитывает следующий кадр, соответствующий индивидуальным параметрам камеры, в «заднем буфере» и по окончании расчета информирует мастера о готовности кадра.
3. Мастер по получении сигнала готовности от всех серверов выдает им всем синхронную команду на отображение готового кадра.
При тестировании выяснилось, что при использовании стандартного для Windows протокола обмена RPC, используемого в 100-мегабитной сети TCP/IP, слишком велики задержки в передаче команд и данных, обусловленные стандартом и особенностями протокола TCP/IP. Так, максимальная скорость для двух серверов (то есть при использовании только стерео режима) составила 10 кадров в секунду, что недопустимо мало для обеспечения гладкого воспроизведения. Кроме того, эта скорость падает еще больше с увеличением числа серверов. Проблему можно было бы решить, перейдя на более скоростную версию протокола TCP/IP (1 гигабайт в секунду), однако был выбран другой путь: организация обмена командами для высокоскоростной синхронизации серверов на основе протокола UDP, используемого в той же 100-мегабитной сети TCP/IP. Недостатками UDP по сравнению с TCP/IP (отсутствие подтверждения приема данных, т.е. возможная потеря пакетов) можно пренебречь при условии работы в локальной сети, где потери пакетов минимальны.
Детали реализации
Задание серверов, участвующих в процессе визуализации, происходит
следующим образом. На первом этапе выбираются сервера, участвующие в совместной визуализации. Программа проверяет, способен ли указанный сервер участвовать в визуализации (т.е. что на нем установлен и активирован соответствующий программный модуль), и в случае положительного результата, указанный сервер добавляется в список.
На втором этапе выбираются параметры стереоизображения. Пользователь (оператор) указывает соответствие серверов каналам (т.е. какой сервер будет производить расчет кадра для левого глаза, а какой — для правого). Задается разрешение и частота обновления экрана для каждого сервера (предварительно мастер-компьютер запрашивает серверы обо всех возможных разрешениях и частотах, и указанные параметры выбираются пользователем из списка, что позволяет исключить проблемы, связанные с указанием заведомо не поддерживаемого разрешения). Здесь же указывается величина стереобазы, иначе говоря, расстояние между виртуальными «глазами», в качестве которых выступают камеры.
После завершения процесса настройки серверов все изменения в сцене, производимые на мастер-компьютере, синхронно рассчитываются и отображаются на экранах, связанных с серверными компьютерами.
Заключение
Основная цель данной работы была сформулирована исходя из специфики использования презентационного комплекса Terminal V: осуществить демонстрацию на комплексе трехмерных изображений, смоделированных с физически аккуратной картиной глобальной освещенности объектов, без использования дополнительных дорогостоящих аппаратных средств.
Для достижения этой цели было разработано и воплощено программное решение, позволяющее осуществить требуемую демонстрацию на оборудовании, штатно входящем в комплект презентационного комплекса.
Система была успешно опробована на оборудовании комплекса Terminal V.
Работа была частично поддержана компанией INTEGRA Inc. (Япония).
Литература
[1] http://www.terminalv.at
[2] http://www.nvidia.ru/page/quadrofx_gsync.html
[3] Ignatenko A., Barladian B., Dmitriev K., Ershov S., Galaktionov V., Valiev I., Voloboy A. A Real-Time 3D Rendering System with BRDF Materials and Natural Lighting. Proc. GraphiCon-2004 -14-th International Conference on Computer Graphics and Vision, Moscow, 2004, pp.159-162.