Аннотация

 

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

Также были исследованы две модели освещения и внедрена поддержка Blinn-Phong shading model для обеспечения максимальной схожести результатов.

Была включена поддержка формул для преобразования яркости в цвет монитора и обеспечены методы интерполяции текстуры.

Ключевые слова: реалистичные изображения, трассировка лучей, OpenGL визуализация.



ВВЕДЕНИЕ

 

3D-ускорители (акселераторы) — это видеоадаптеры, способные ускорять операции трехмерной графики. Видеоадаптеры с 3D-ускорителями были созданы довольно давно, но могли применяться только в профессиональных графических рабочих станциях, в узкоспециализированных областях компьютерной графики из-за высокой стоимости этого оборудования. К примеру, стоимость профессиональной графической рабочей станции SGI Iris могла достигать нескольких десятков тысяч долларов, что делало невозможным их широкое применение. Однако прогресс в развитии доступных бытовых персональных компьютеров на базе процессоров x86, увеличение их мощности, высокий спрос на компьютерные игры с реалистичными трехмерными изображениями, и ,как следствие, внедрение трехмерной акселерации в относительно недорогие видеоадаптеры, все это привело к созданию 3D-ускорителей, доступных для широкого круга пользователей. С другой стороны, разнообразие видеоадаптеров, выпускаемых различными производителями, их собственные разработки во внедрении 3D-ускорения в производимые ими видеоадаптеры часто ставило в тупик разработчиков профессионального графического 3D-программного обеспечения и разработчиков компьютерных игр: как добиться универсальности их приложений, позволяющей запускать комплексы графических программ на таком разнообразии аппаратных 3D-ускорителей. В 1990-х разработка программного продукта, способного работать на большом количестве графического оборудования, была сопряжена с большими временны́ми и финансовыми затратами. Было необходимо отдельно создавать модули для каждого типа графических адаптеров, что порой приводило к размножению одинакового программного кода. Это сильно тормозило развитие и распространение компьютерной графики.

Компания Silicon Graphics Incorporated (SGI) специализировалась на создании высокотехнологического графического оборудования и программных средств. Являясь в то время лидером в трёхмерной графике, SGI видела проблемы и барьеры в росте рынка. Поэтому было принято решение стандартизировать метод доступа к графической аппаратуре на уровне программного интерфейса. специализировалась на создании высокотехнологического графического оборудования и программных средств. Таким образом появился программный интерфейс OpenGL[1], который стандартизирует доступ к графической аппаратуре путём смещения ответственности за создание аппаратного драйвера на производителя графического устройства. Это позволило разработчикам программного обеспечения использовать более высокий уровень абстракции от графического оборудования, что значительно ускорило создание новых программных продуктов и снизило на них затраты.

OpenGL эволюционировал из 3D-интерфейса SGIIRIS GL. Одним из ограничений IRIS GL было то, что он позволял использовать только возможности, поддерживаемые оборудованием; если возможность не была реализована аппаратно, приложение не могло её использовать. OpenGL преодолевает эту проблему за счёт программной реализации возможностей, не предоставляемых аппаратно, что позволяет приложениям использовать этот интерфейс на относительно маломощных системах.

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

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

Программный комплекс Inspirer2[2], разработанный в Институте прикладной математики им. М.В.Келдыша РАН, позволяет рассчитывать изображения моделей трехмерных сцен с физически точной реалистичностью. Метод трассировки лучей используется как один из основных алгоритмов для построения физически корректных реалистичных изображений. Непосредственно для получения фотореалистичных изображений используется метод обратной трассировки лучей от камеры до объекта. Таким образом, возникает задача: как сделать, чтобы OpenGL визуализация, скорость которой обеспечивается аппаратными 3D-ускорителями современных видеоадаптеров, по возможности совпадала с визуализацией при помощи трассировки лучей.

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

 

 

1.  АТРИБУТЫ ПОВЕРХНОСТИ В INSPIRER2

 

Комплекс Inspirer2 для обеспечения физически точной реалистичности поддерживает следующие атрибуты поверхности:

 

·                   Диффузное отражение.

·                   Зеркальное отражение.

·                   Диффузное пропускание.

·                   Зеркальное пропускание.

·                   Самосвечение.

 

Все эти атрибуты, кроме диффузного пропускания, поддерживаются OpenGL. Цвет для каждого атрибута может быть как однородным, так и заданным текстурой. Кроме перечисленного, Inspirer2 позволяет создавать правильные изображения оптически сложных материалов, заданных с помощью двунаправленных функций отражения/пропускания (BRDF / BTDF), например, для корректного изображения сложных, компонентных автомобильных красок. При использовании OpenGL визуализации было решено использовать эти функции посредством сферических текстур. При этом делается предположение, что все источники света и камера являются удаленными от объекта визуализации, что обеспечило достаточно приемлемый результат, несмотря на ограничения OpenGL.

 

 

2.  ИСТОЧНИКИ СВЕТА

 

Для обеспечения физически точной реалистичности методом трассировки лучей в Inspirer2 выделены следующие источники света:

 

·                   Точечный.

·                   Конический.

·                   Параллельный.

·                   Площадной (линейный, прямоугольный и круговой)

·                   Освещение от неба с солнцем.

 

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

OpenGL накладывает свои ограничения на использование источников света. Гониограмма не поддерживается в OpenGL и, следовательно, не может быть использована при OpenGL визуализации для точечного и конического источников света. Площадные источники освещения также не поддерживаются в OpenGL.

В OpenGL сила источника света задается цветом в диапазоне [0 – 1], отдельно для диффузного, зеркального и рассеянного света. Для вычисления величины освещенности поверхности при использовании OpenGL была использована формула:

I = I0 * (C0 + C1 / R + C2 / (R * R))

 

в которой указываются три коэффициента ослабления света в зависимости от расстояния. В этой формуле:

 

I – величина освещенности поверхности, измеряемая в lux,

I0 – сила источника освещения, заданная в lum,

С0 – константа,

C1 – коэффициент линейного ослабления света,

C2 – коэффициент квадратичного ослабления света.

 

Для физически корректного локального источника света коэффициенты C0 и C1 должны быть равны 0, а C2 и цвет источника света надо вычислять в зависимости от реального светового потока. Было выбрано, что C2 при OpenGL визуализации полагается равным 1, а цвет источника света вычисляется как реальный световой поток, деленный на максимальную яркость.

 

2.1    Точечный источник света

 

Для точечного источника света была выбрана формула:

diffuse = specular = flux / (4 * PI) / maxlum

где

diffuse и specular – сила диффузного и зеркального источника освещения, измеряемая в lum,

flux – полный световой поток точечного источника света,

4 * PIобъемный угол сферы,

maxlum – максимальная яркость, используемая для визуализации.

 

2.2    Параллельный источник света

 

Для параллельного источника света мы выбрали формулу:

 

diffuse = specular = intens / maxlum

 

где

diffuse и specular – сила диффузного и отражающего источника освещения,

intens – освещенность поверхности, перпендикулярной направлению излучения,

maxlum – максимальная яркость.

Это обеспечивает такой же цвет поверхности, как и в визуализации трассировкой лучей.

 

 

3.  Модель освещения в Inspirer2

 

Inspirer2 поддерживает физически правильную модель освещения. Диффузное отражение и пропускание рассеивают падающее излучение согласно закону Ламберта. Яркость L рассеивающей поверхности одинакова во всех направлениях и пропорциональна освещенности поверхности:

L = Kd * diff_col * E / PI

где

Kd – коэффициент диффузного отражения,

diff_col – цвет диффузного отражения,

Eосвещенность поверхности.

PI – объемный угол полусферы деленный на 2.

Зеркально отраженное излучение тоже рассеивается, в зависимости от коэффициента глянцевости поверхности. В компьютерной графике используют две различные модели глянцевого отражения источника света. OpenGL использует Blinn-Phong shading model [3], тогда как метод трассировки лучей использует Phong shading model [4]. Для того, чтобы результаты были по возможности одинаковы, для метода трассировки лучей в Inspirer2 также была обеспечена возможность использования Blinn-Phong shading model.

 

 

4.  Преобразование яркости в цвет монитора

 

Метод трассировки лучей в Inspirer2 вычисляет физическую яркость пикселей и использует двухступенчатое преобразование яркости в цвет монитора. Сначала применяется кривая чувствительности человеческого глаза (TR99SH1), это стандартная кривая Международной комиссии по освещению (МКО, или CIE - Comission International de l'Eclairage)[5], а затем кривая отклика монитора.

Внутренняя визуализация Open GL (internal shading) не работает с физическими яркостями, источники света задаются цветами в диапазоне [0 – 1], а цвет пикселя вычисляется как сумма произведений цвета источника света, с учетом ослабления в зависимости от расстояния, и соответствующего атрибута поверхности.  Для сопоставления результатов OpengGL и метода трассировки лучей, в последнем применялось линейное преобразование яркости пикселя в цвет монитора:

Col  = lum / max_lum

 

Внешняя визуализация OpenGL (external shading) использует заранее вычисленные цвета вершин. При вычислении цветов вершин можно применить кривую отклика монитора.

 

 

5.  Интерполяция текстуры

 

Цвет текстурированной поверхности вычисляется в OpenGL через mipmaps - ряд изображений текстуры с разрешением каждого следующего изображения в 2 раза меньше предыдущего. В зависимости от расстояния до камеры, маппирования текстуры и разрешения рисуемого изображения, подбираются 2 изображения текстуры с большим и меньшим разрешением, производится интерполяция между 4 пикселями в каждом изображении, а затем - между двумя вычисленными пикселями.

Такой же алгоритм применен и для метода трассировки лучей.

 

 

6.  РЕЗУЛЬТАТЫ

 

Результаты примененных методов наглядно демонстрируют приведенные ниже иллюстрации.

 

OpenGL

Трассировка лучей  Blinn-Phong

Трассировка лучей Phong

 

Рис. 1. Сфера с диффузным розовым цветом и зеркальным белым цветом.

 

Изображения полученные при помощи OpenGL визуализации и трассировкой лучей с Blinn-Phong моделью вычисления бликов совпадают идеально. Форма бликов для Blinn-Phong и Phong моделей вычисления бликов отличается для больших углов наблюдения. Поскольку в OpenGL вычисляются только цвета вершин треугольников, а между ними производится интерполяция – использована сфера с достаточно мелкой триангуляцией.

 

 

7.  Сравнение изображений сложных сцен

 

OpenGL

Трассировка лучей

Рис. 2. Автомобиль освещенный изнутри 2мя точечными источниками света.

 

Различия наблюдаются на отекстуренных поверхностях. Дело в том, что Open GL вычисляет цвета вершин без текстуры, клиппирует и только затем рисует поверхность с текстурой.

 

Прозрачная сфера c BRDF и BTDF освещенная пятью параллельными источниками света.

 

OpenGL

Трассировка лучей

Рис. 3. Прозрачная сфера c BRDF и BTDF освещенная пятью параллельными источниками света.

 

Блики в Openg GL более размытые, потому что сферическая тестура считалась на сетке с ограниченным разрешением, оптимизированным для быстрого счета текстуры. Тени также не отображаются в OpenGL.

 

OpenGL

Трассировка лучей

Рис. 4. Автомобиль с BRDF в фотомонтажной сцене освещенный солнцем.

 

Тени от солнца есть и в OpenGL изображении, но на площадке под автомобилем их нет, поскольку она не отображается в OpenGL, вместо неё отображается фоновое изображение.

 

OpenGL

Трассировка лучей

Рис. 5. Автомобиль с BRDF в сцене с HDRI фоном.

 

HDRI фон является одновременно и источником освещения. Отражения фона на OpenGL изображении более размытые, поскольку фон рисуется на недостаточно подробной сетке. Тень на изображении с трассировкой лучей отображена на виртуальной плоскости.

 

 

8.  ЛИТЕРАТУРА

[1] Kilgard M.J., Akeley K. Modern OpenGL: its design and evolution / SIGGRAPH Asia’08.

[2] 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.

[3] Wikipedia the free encyclopedia. Blinn-Phong shading model. http://en.wikipedia.org/wiki/Blinn

[4] Wikipedia the free encyclopedia. Phong shading. http://en.wikipedia.org/wiki/Phong_shading

[5] А.И. Куликов, Т.Э. Овчинникова. Цвет в компьютерной графике.

 


 

OpenGL visualization in Inspirer2 with quality of ray tracing method

 

S. Andreev, I. Valiev

Keldysh Institute for Applied Mathematics RAS, Moscow, Russia

esa@keldysh.ru

 

Abstract

This article considers possibility to use graphics 3D accelerators for fast visualization of scenes with the quality maximally close to the results of ray tracing method. There were created various methods to provide photorealistic images for surface attributes, including surfaces of optically complex materials, there were developed algorithms and formulas for modeling different kinds of light sources, such as point, conic, parallel.

Also two illumination model were investigated, and support for Blinn-Phong shading model was included to provide maximal likeness of results.

There was included support of formulas for transformation of luminance to monitor color. Methods of texture interpolation was also provided.

Keywords: realistic images, ray tracing, OpenGL visualization.

 

References

[1] Kilgard M.J., Akeley K. Modern OpenGL: its design and evolution. SIGGRAPH Asia’08.

[2] 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.

[3] Wikipedia the free encyclopedia. Blinn-Phong shading model. Available at: http://en.wikipedia.org/wiki/Blinn

[4] Wikipedia the free encyclopedia. Phong shading. Available at: http://en.wikipedia.org/wiki/Phong_shading

[5] A.I. Kulikov, T.E. Ovchinnikova. Color in computer graphics.