РАСПАРАЛЛЕЛИВАНИЕ процесса динамической
визуализации трёхмерных сцен
Д.А.Орлов
(Москва, Московский
Энергетический Институт (ТУ), Российская Федерация)
В настоящее время в связи с развитием аппаратных средств всё больше возрастает интерес к трёхмерной компьютерной графике. Системы трёхмерной визуализации уже нашли применение в различных сферах использования компьютерной техники: тренажёры, медицина, кинематограф, САПР.
Одной из перспективных областей применения являются авиатренажёры. Их применение для обучения персонала позволяет сэкономить деньги, затрачиваемые на эксплуатацию реальных самолётов и обеспечить большую безопасность. Для эффективной работы авиатренажёра необходимо создать иллюзию нахождения пилота за штурвалом реального самолёта. Для этого требуется получить высоко реалистичное изображение вида, открывающегося из кабины самолёта, и обеспечить быструю смену кадров (иллюзия движения складывается начиная с 25 кадров в секунду, для авиатренажёров рекомендовано значение 60 кадров в секунду). Кроме того, трёхмерная сцена в данном случае должна состоять из большого количества объектов.
Решение подобной задачи выдвигает высокие требования к аппаратуре, которым не удовлетворяют большинство широко доступных компьютеров. Существует два основных направления решения данной проблемы. Во-первых, использование оптимизированных алгоритмов визуализации (отсечение частей трёхмерной сцены, находящихся вне области видимости, упрощение удалённых частей трёхмерной сцены). Во-вторых, в том случае, когда применение оптимизаций не позволяет достичь требуемой частоты генерации кадров, возможно применение параллельной визуализации. Для этого можно либо использовать дорогостоящие аппаратные средства – специализированные многопроцессорные системы, либо использовать распределённые системы визуализации трёхмерных изображений на базе мультикомпьютерной сети, которые можно реализовать на обычных компьютерах, что позволит сделать систему более дешёвой и доступной для широкого пользователя.
В данной
работе предложена экспериментальная реализация распределённой системы
визуализации трёхмерных изображений.
Большинство
работ по данной теме рассматривают параллельную визуализацию на
специализированных многопроцессорных системах [1]. Хотя, существуют и работы,
посвящённые созданию подобных систем на базе мультикомпьютерных сетей [2].
Для
создания систем распределённой визуализации необходимо разработать алгоритм
параллельной визуализации, а также разработать алгоритм визуализации частичного
изображения.
Существует
два основных подхода к распараллеливанию визуализации:
1)
композиция изображений. Каждый вычислитель
генерирует полноэкранное частичное изображение сложной сцены, а полное
изображение получается композицией частичных изображений. В этом случае каждый
вычислитель визуализирует только часть треугольников, из которых состоит
трёхмерная сцена. Достоинством этого способа является равная загруженность всех
вычислителей. Недостатком является сложность процедуры композиции;
2)
разделение экрана, когда каждый вычислитель
генерирует полное изображение части экрана, а изображение всего экрана
получается «склейкой» всех частичных изображений. Достоинством этого способа
является простота склейки изображений. Однако имеется недостаток – сложность
балансировки нагрузки между вычислителями.
Для
данной системы был разработан алгоритм параллельной визуализации, основанный на
способе разделении изображения на части, поскольку он создаёт существенно
меньший объём информации, передаваемой от клиентов серверу.
Программно
данная система реализована в виде двух приложений. Ведущее приложение (сервер)
осуществляет хранение трёхмерной сцены и передачу её подключившимся клиентам,
приём координат от пользователя и выдачу клиентам задания на визуализацию, то
есть передачу сообщения с координатами и номером части изображения, которую
необходимо нарисовать. Ведущее приложение запускается на одном компьютере. В
данной работе трёхмерная сцена представляет собой ландшафт с расположенными на
нём объектами. Ландшафт задан картой высот. Объекты задаются в формате 3DS.
Ведомое
приложение (клиент) запускается на остальных компьютерах. Это приложение
выполняет задание сервера и отправляет ему визуализированную часть изображения.
Оба приложения являются многонитевыми. Серверное приложение состоит из главной нити и нитей, обменивающихся информацией с клиентами. Главная нить отвечает за приём данных от пользователя, вывод на экран и управление другими нитями. Для каждого клиента создаётся нить, отправляющая ему задания на визуализацию (первая по порядку не визуализированная часть изображения) и ожидающая получения данных. Подобная организация серверного приложения позволяет принимать данные от клиента, освободившегося раньше других. После того, как сервер получил очередной кадр целиком, он выводит его на экран.
Для
визуализации своей части изображения клиент использует библиотеку OpenGL, которая позволяет использовать
возможности различных видеоускорителей: текстурирование, освещение, смешивание
цветов, поддержку тумана, сглаживание линий, анизотропную фильтрацию текстуры.
Отрисовка ландшафта производится рекурсивно с использованием отсечения частей
ландшафта, находящихся вне области просмотра (frustum culling), что позволяет существенно увеличить
производительность на больших ландшафтах. Приём данных от сервера реализован в
виде отдельной нити клиентского приложения.
В данном проекте «слабым звеном» системы является
коммутационная сеть, поскольку она имеет сравнительно большое время отклика и малую
скорость. Частота кадров сильно зависит как от скорости и латентности сети, так
и от её топологии. Теоретически, наилучших результатов можно добиться в случае,
когда сервер связан с каждым клиентом независимым каналом связи. Схема
функционирования данной системы для указанного случая приведена на рисунке 1. Пунктирными
стрелками показаны передачи заданий на визуализацию. Штрихпунктирными линиями
показаны передачи результатов. Фигурными скобками выделены интервалы визуализации
на клиентской стороне.
Работа
данной системы была проверена экспериментально. Эксперимент проводился на
компьютерах Pentium 166,
объединённых в сеть Ethernet 10base-T. При
этом теоретическая оценка зависимости времени визуализации TС от
параметров системы будет следующей:
,
где n –
количество частей, на которое разбивается изображение, T0 – время визуализации кадра на
одном компьютере (мс), v –
скорость передачи данных по сети на транспортном уровне (Мбит/с), tл –
латентность сети передачи данных (мс), S2 – размер сообщения от сервера
(бит). Учтём, что S1∙n=S0, где S0 – размер
изображения (бит), S0=w2∙0,75∙24,
где w – ширина изображения,
0,75 – стандартное соотношение длины и ширины экрана.
Экспериментально
полученная зависимость количества кадров в секунду от количества клиентов в
системе представлена на рисунке 2. Коэффициент ускорения вычисляется как
отношение частоты кадров, полученной при использовании данной системы к частоте
кадров, полученной на одном компьютере без её использования.
В
разработанной модели были реализован алгоритм, распределённой визуализации
трёхмерных сцен, а также алгоритм оптимизации, производящий отсечение объектов,
находящихся вне зоны видимости. Работоспособность данной системы была проверена
экспериментально, в результате чего получено увеличение частоты кадров в 1,7
раза (при использовании четырёх клиентов).
Однако,
серьёзной проблемой является ограничение скорости кадров, накладываемое
локальной сетью. Для ускорения процесса визуализации возможно применение сжатия
частей изображения, передаваемых по сети (необходимо рассмотреть варианты с
потерями качества и без них), использование протокола UDP вместо TCP.
Также
необходимо осуществлять балансировку нагрузки между вычислителями и применять
дополнительно технологии, оптимизирующие визуализацию.
ЛИТЕРАТУРА
1. Steven Molnar, John Eyles and John Poulton,
«PixelFlow: High-speed Rendering using Image Composition», Computer Graphics
(SIGGRAPH `92 Proceedings) , volume
26, 1992, pp. 231-240.
2. Кузнецов А.Ю. «Особенности
организации распределённой компьютерной системы визуализации трёхмерных сцен
авиатренажёра», электронный журнал «Вычислительные сети. Теория и практика»,
2003 №1(3).