ТЕХНОЛОГИЯ ПОСТРОЕНИЯ ФОТОРЕАЛИСТИЧНЫХ ИЗОБРАЖЕНИЙ - Студенческий научный форум

IV Международная студенческая научная конференция Студенческий научный форум - 2012

ТЕХНОЛОГИЯ ПОСТРОЕНИЯ ФОТОРЕАЛИСТИЧНЫХ ИЗОБРАЖЕНИЙ

 Комментарии
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF
Технология построения фотореалистичных изображений

Создание фотореалистичных изображений является одной из основных проблем компьютерной графики. Для построения таких изображений используются различные алгоритмы, которые постоянно совершенствуются.

Фотореалистичные изображения создаются специальными алгоритмами, которые используют стандартные графические библиотеки OpenGL или DirectX. Эти библиотеки предоставляют базовый набор инструментов. Однако получаемые при этом изображения нельзя назвать фотореалистичными. Дело в том, что функции OpenGL и DirectX используют простую модель освещения (способ определения цвета пикселя), а также не учитывают преломление и отражение света от других объектов сцены.

Для построения фотореалистичных изображений необходимо использовать более сложные модели освещения и алгоритмы, которые учитывают свет, отраженный от окружающий обстановки.   Специалисту, занимающемуся созданием таких алгоритмов, их тестированием и совершенствованием, необходимы средства, позволяющие уменьшить трудозатраты и ускорить процесс разработки.

Построение трехмерного изображения состоит из нескольких этапов. Первый этап, моделирование - создание формы и расположение объектов сцены. Сцена - это совокупность геометрических примитивов с наложенными на них материалами, источников света и камер.  Второй этап - описание и наложение материалов на объекты. Третий этап -  расстановка источников света для того, чтобы появились эффекты теней, отражения, преломления и т.п. Четвертый этап, установка камеры - выбор точки, из которой наблюдатель смотрит на сцену. Последний этап, визуализация - построение изображения по описанию сцены. На этапе визуализации учитывается модель освещения. В качестве алгоритма визуализации в работе используется алгоритм трассировки луча [3].

Программы построения фотореалистических изображений - достаточно сложные. Одним из способов борьбы со сложными системами является технология ООП [2]. Природа трёхмерных объектов позволяет выделить у них общие, а также специфические особенности и на базе этого анализа построить объектно-ориентированную модель.

В работе создана надстройка над графической библиотекой DirectX, которая предоставляет готовые легко-модифицируемые инструменты  для построения фотореалистичных изображений, избавляя специалиста от реализации необходимых ему методов. Стоит отметить, что эта надстройка является легко-модифицируемой и расширяемой. Например, специалист может добавить новые графические примитивы без повторного написания большого количества кода. Таким образом, разработана технологию создания трехмерных фотореалистичных изображений с использованием алгоритма трассировка луча. Эта технология предоставляет гибкий и  расширяемый инструментарий.

На рис. 1 представлена структура системы построения фотореалистических изображений.

Для описания сцены используется язык Scene Description Language (SDL) [1]. На базе спецификации этого языка разработан текстовый редактор с простой подсветкой синтаксиса и автодополнением ключевых слов SDL.  В дальнейшем планируется разработать визуальный редактор сцены, который будет генерировать описание на SDL.  Описание сцены на SDL используется для построения иерархии классов сцены.  На рис. 2 представлена эта иерархия.

Геометрические примитивы

Для геометрических примитивов вершиной иерархии является абстрактный класс GeomObj, реализующий виртуальные функции процесса визуализации. От этого класса наследуются три класса. Первый класс, Shape - простые геометрические примитивы с наложенным материалом. От класса Shape наследуются конкретные примитивы, такие как куб, сфера и т.п. Второй класс, Spline - представляет собой объекты, заданные сплайнами. Третий класс, BoolObj - сложные составные объекты, получающиеся из простых с помощью операций объединения, разности, пересечения и т.п.

Материалы

Для материалов вершиной иерархии является абстрактный класс Material, реализующий виртуальные методы  получения цвета объекта. От него наследуется  три класса: BitmapTexture - растровая текстура, ProceduralTexture - текстура, задаваемая некоторым алгоритмом, SimlpeMaterial - простой материал, задаваемый фоновой, зеркальной и диффузной составляющей.

Источники света

Для источников света вершиной иерархии является класс Light, содержащий общие для всех видов источников света свойства - расположение, цвет и яркость. От него наследуются источник света типа прожектор(SpotLight) и направленный источник света (DirectionalLight).

Кроме того, существуют дополнительные классы, которые не являются частью иерархии, такие как  вектор, матрица, луч, точка, цвет и т.п.  Эти классы используются для организации процесса визуализации.

Разработанная иерархия может быть расширена за счет добавления новых видов примитивов, источников света и материалов без существенного изменения кода системы.

После описания сцены и построения соответствующей объектной модели начинается этап визуализации. Во время визуализации используется предварительно выбранная  модель освещения. Модели освещения различаются своей реалистичностью и ресурсоемкостью. В некоторой ситуации надо получить изображение быстро, но не очень качественно, в некоторых - наоборот. Существует много различных моделей освещения. Поэтому для работы с ними предложено использовать модульный принцип построения приложения, а именно плагины. Плагин - это независимо компилируемый программный модуль, динамически подключаемый к основной программе и предназначенный для расширения её возможностей.

Каждая отдельная модель освещения реализуется плагином со своими настройками. Для реализации плагинов используется интерфейс IPluginShading. Этот интерфейс  инкапсулирует два свойства и два метода, которые необходимо реализовать разработчику в своем плагине:

  • 1. Свойство Description - словесное описание модели освещения, например, название. Оно отображается в панели настроек для выбора пользователем.
  • 2. Свойство ID - уникальный идентификатор плагина. Используется для возможности сохранения/загрузки пользовательских настроек. Для генерации уникального идентификатора разработчик может использовать GUID (это позволит избежать конфликтов с плагинами сторонних разработчиков).
  • 3. Метод Shade представляет собой реализацию некоторой модели освещения.
  • 4. Метод GetSettingsPanel возвращает панель настроек, позволяющую редактировать, сохранять, загружать настройки текущей модели освещения.

Для разработки нового плагина разработчику необходимо:

  • 1. Создать новую библиотеку классов.
  • 2. Создать в ней класс и наследовать его от интерфейса IPluginShading.
  • 3. Реализовать в этом классе все, что требует интерфейс.
  • 4. После получения dll-файла библиотеки классов, его необходимо поместить в папку Plugins, расположенную в одной директории с программой. После запуска программы будут загружены все плагины и, следовательно, станут доступными для использования на уровне интерфейса пользователя. Такой модульный принцип позволяет быстро переключаться между моделями освещения. Разработчик может реализовывать свои модели освещения и быстро их подключать для дальнейшего использования.

Важно отметить, что визуализатор взаимодействует только с графической библиотекой, что позволяет при необходимости сменить ее (например, OpenGl на DirectX), переписав лишь визуализатор.

На рис. 3 и рис. 4 показаны примеры построенных сцен. Для визуализации сцены на рис. 3 использована модель освещение Фонга, а для визуализации сцены на рис. 4 - модель освещение Кука-Торренса.                      

Обе модели освещения реализованы в виде плагинов. Для каждой модели реализован учет теней и множественного отражения. Кроме того, в других приложениях реализованы дополнительные эффекты, такие как прозрачность и преломление.

Первоначальное приложение для отображения изображения использует DirectX. Другое использует OpenGL. Для этого переписан визуализатор, а остальные части (иерархия классов для описания сцены; плагины, реализующие модели освещения, редактор) используются без изменения.

В дальнейшем планируется реализовать и другие эффекты, например, мягкие тени. Для этого нужно создать свой плагин, который будет содержать реализацию модели освещения, поддерживающей необходимые спецэффекты. Таким образом, тестирование разработанной системы на различных приложениях подтверждает её работоспособность.

Библиографический список

  1. Description SDL [Электронный ресурс]. URL: http://www.teina.org/TER_3DModeler/userManual/descSDL.html (дата обращения: 10.11.2011)
  2. Буч Г., Максимчук А. Объектно-ориентированный анализ и проектирование с примерами приложений. - 3-е издание. / пер. с англ. - М. : ООО «И.Д. Вильямс», 2008. - 720 c.
  3. Хилл Ф. OpenGL. Программирование компьютерной графики. Для профессионалов. - СПб.: Питер, 2002. -1088 с.

Научный руководитель:
Доцент кафедры математического обеспечения вычислительных систем ПГНИУ, кандидат физико-математических наук, доцент Залогова Л.А.

Просмотров работы: 147