скачать рефераты
  RSS    

Меню

Быстрый поиск

скачать рефераты

скачать рефератыКурсовая работа: Построение реалистичных трехмерных изображений в стандарте OpenGL

Курсовая работа: Построение реалистичных трехмерных изображений в стандарте OpenGL

Курсовая работа

на тему:

«Построение реалистичных трёхмерных изображений в стандарте OpenGL»


Введение

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

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

Для программирования графики можно использовать одну из стандартных библиотек, тем более, что их достаточно много. Графический стандарт OpenGL, разработан и утверждён в 1992 году девятью ведущими фирмами, среди которых: Digital Equipment Corporation, Evans & Sutherland, Hewlett-Packard Co., IBM Corp., Intel Corp., Intergraph Corp., Silicon Graphics Inc., Sun Microsystems Inc. и конечно же Microsoft Corp.

В основу стандарта была положена библиотека IRIS GL, разработанная Silicon Graphics. Это достаточно простая в изучении и использовании графическая система, обладающая при этом поразительно широкими возможностями: стабильность, надёжность, переносимость, простота использования.



Построение реалистических изображений

Построение реалистических изображений включает в себя как физические, так и психологические процессы. Свет, после взаимодействия с окружающей средой попадает в глаз, где вырабатываются электроимпульсы, воспринимаемые мозгом. Восприятие – это приобретаемое свойство. Из опытов известно, что чувствительность глаза к яркости света изменяется по логарифмическому закону. Причем глаз приспосабливается к средней яркости обозреваемой сцены, поэтому область с постоянной яркостью на темном фоне кажется ярче или светлее, чем на светлом. Это явление называется одновременным контрастом (рис. 1).

Рис. 1. Эффект одновременного контраста

Яркость центрального квадрата на обоих рисунках равна 0.5, а охватывающего – 0.8 на левом и 0.2 на правом рисунке. Похожее на одновременный контраст явление существует и для цветов.

Еще одним свойством глаза, имеющим значение для компьютерной графики, является то, что границы областей постоянной интенсивности кажутся более яркими, в результате чего такие области воспринимаются как имеющие переменную интенсивность. Это явление называется эффектом полос Маха особенно хорошо заметно на полутоновых поверхностях, заданных многоугольниками. Увеличивая количество граней многоугольников, его можно ослабить, но полностью устранить нельзя (рис. 2). Это только несколько вопросов, возникающих при создании реалистических изображений. Мы же займемся вопросами закрашивания видимых поверхностей. Внешний вид поверхности зависит от вида источника света, которым освещается объект, от свойств поверхности (цвет, текстура, отражательная способность), а также от положения и ориентации поверхности относительно источника света и других поверхностей. Источник света может представлять собой точечный источник, подобный солнцу или лампе накаливания, или же распределенный источник, аналогичный группе ламп дневного света. На практике во многих случаях присутствует также естественный свет, падающий с самых разных направлений.

Рис. 2. Эффект полос Маха

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

Более сложным (с точки зрения моделирования), но зато более реальным, является точечный источник, при использовании которого освещенность поверхности зависит от ее ориентации: если лучи направлены перпендикулярно к поверхности – она освещена ярко. Чем меньше угол падения лучей, тем меньше освещенность. Такое изменение освещенности позволяет эффективно распознавать трехмерную структуру объекта.

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

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

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

Само перечисление способов построения реалистичных изображений говорит о том, какой большой объем работы необходимо проделать, чтобы получить что-нибудь, в самом деле, стоящее. И это было бы действительно так если бы не библиотека OpenGL, которая берет на себя большую часть «черновой» работы.

Освещение объектов

Световая энергия, падающая на поверхность, частично поглощается и превращается в тепло, а частично отражается и пропускается. Объект можно увидеть, только если он отражает или пропускает свет. Количество поглощенной, отраженной или пропущенной энергии зависит от длины волны света. Если объект поглощает лишь определенные длины волн, то у света, исходящего от объекта, изменяется распределение энергии – объект выглядит цветным. Цвет объекта определяется поглощаемыми длинами волн. Свойства отраженного света зависят от строения, направления и формы источника света, а также от ориентации и свойств поверхности. Отраженный от объекта свет может быть диффузным или зеркальным. Свойством диффузного отражения, т.е. равномерного по всем направлениями рассеивания света, обладают матовые поверхности. При этом кажется, что поверхности имеют одинаковую яркость независимо от угла обзора. Для таких поверхностей справедлив закон, устанавливающий соответствие между количеством отраженного света и косинусом угла между направлением L на точечный источник света и нормалью к поверхности (рис. 3), т.е. количество отраженного света не зависит от положения наблюдателя, а определяется материалом объекта и длиной волны света. Для представления диффузного отражения от цветных поверхностей расчеты проводятся отдельно для основных составляющих цвета.

Рис. 3. Падающий свет и нормаль к поверхности

Зеркальное отражение происходит от внешней поверхности объекта. Если осветить ярким светом яблоко, то в результате зеркального отражения возникнет световой блик, а свет, отраженный от остальной части яблока, появится вследствие диффузного отражения. При этом в том месте, где находится световой блик, яблоко кажется не красным, а скорее белым, т.е. окрашенным в цвет падающего света. Если изменить положение головы, то сместится и световой блик. Это объясняется тем, что блестящие поверхности неодинаково отражают свет по всем направлениям. От идеально отполированной поверхности свет отражается только в том направлении, для которого углы падения и отражения совпадают. Это означает, что наблюдатель сможет увидеть зеркально отраженный свет только в том случае, если угол α равен нулю (рис. 4). Таким образом, интенсивность зеркального отражения зависит от угла падения, длины волны падающего света и свойств вещества.

Рис. 4. Зеркальное отражение

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

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

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

Нормали

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

void glNormal3 [b s i f d] (type coords)

void glNormal3 [b s i f d] v (type coords)

которые присваивают значения координат, заданных параметрами coords, вектору нормали. Аргументы типов GLbyte, GLshort и GLint преобразуются в формат с плавающей точкой и ограничиваются диапазоном [-1.0, 1.0]. В общем случае нормаль, определяемая этими командами, не имеет единицы длины. Однако если включен режим нормализации (выполнена команда glEnable с аргументом GL_NORMALIZE), то нормали, определенные при помощи этой команды, нормализуются после трансформации. По умолчанию нормализация заблокирована, а вектор нормали имеет координаты (0.0, 0.0, 1.0).


 

Рис. 5. Векторы нормали Рис. 6. Грань и нормаль к ней

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

Свойства материала

Различные материалы по-разному отражают свет. Металл это делает хорошо, а пластиковые поверхности обычно выглядят тусклыми. Кроме того, некоторые поверхности сами излучают свет, например, фосфор. Задавая различные параметры материала, можно управлять тем, насколько блестящим он будет выглядеть, и будет ли он сам излучать свет. На рис. 7 изображены 24 чайника, освещаемые одним источником света.

Рис. 7 Объекты с различными свойствами материала


Что здесь для нас интересно? Прежде всего – сами свойства. В приведенном фрагменте мы устанавливали рассеянный, диффузный и зеркальный цвета материала, причем, только для его лицевой поверхности. Можно ли задавать какие-нибудь еще параметры? Для ответа на этот вопрос рассмотрим команды:

void glMaterial [i f] (GLenum face, GLenum pname, GLtype* params)

и

void glMaterial [i f] v (GLenum face, GLenum pname, GLtype* param)

которые позволяют определить различные свойства материала. Какие именно – зависит от используемых параметров. Параметры материала, как и во многих других случаях, различаются для лицевой и обратной поверхностей. Параметры лицевой поверхности используются для точек, линий, битовых массивов и всех многоугольников, когда заблокировано двустороннее освещение или только для лицевых, если двустороннее освещение разрешено. Параметры для обратных поверхностей определяют затенение невидимых многоугольников, только когда разрешено двустороннее освещение. К каким поверхностям применяются задаваемые параметры, определяется аргументом face:

GL_FRONT                                     лицевые

GL_BACK                                                обратные

GL_FRONT_AND_BACK             и те и другие

Аргумент рname определяет, какие параметры материала будут обновляться и может принимать только одно значение – GL_SHININESS, задающее степень зеркального отражения материала для первой версии команды и следующие значения для второй:


Параметр Значение
GL_AMBIENT

Параметр params содержит четыре целых или вещественных значения цветов RGBA, которые определяют рассеянный цвет материала. По умолчанию значение рассеянного цвета равно (0.2, 0.2, 0.2, 1.0)

GL_DIFFUSE

Параметр params содержит четыре целых или вещественных значения RGBA, которые определяют цвет диффузного отражения материала. По умолчанию значение диффузного цвета равно (0.8, 0.8, 0.8, 1.0)

GL_SPECULAR

Параметр params содержит четыре целых или вещественных значения RGBA, которые определяют цвет зеркального отражения материала. По умолчанию значение зеркального цвета равно (0.0, 0.0, 0.0, 1.0)

Последний аргумент – param (s) содержит значение(я), которые присваиваются соответствующему параметру.

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

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

Страницы: 1, 2


Новости

Быстрый поиск

Группа вКонтакте: новости

Пока нет

Новости в Twitter и Facebook

  скачать рефераты              скачать рефераты

Новости

скачать рефераты

© 2010.