Курсовая работа
на тему:
«Построение реалистичных трёхмерных изображений в стандарте OpenGL»
Введение
Компьютерная графика в настоящее время уже вполне сформировалась как наука. Существует аппаратное и программное обеспечение для получения разнообразных изображений – от простых чертежей до реалистичных образов естественных объектов. Компьютерная графика используется практически во всех научных и инженерных дисциплинах для наглядности восприятия и передачи информации. Знание её основ в наше время необходимо любому учёному или инженеру. Она властно вторгается в бизнес, медицину, рекламу, индустрию развлечений и многие другие области.
В компьютерной графике имеется уникальная возможность получить в собственное распоряжение очень точного и исполнительного помощника, который может создать любые рисованные картинки, – нужно только проинструктировать его, как это сделать.
Для программирования графики можно использовать одну из стандартных библиотек, тем более, что их достаточно много. Графический стандарт OpenGL, разработан и утверждён в 1992 году девятью ведущими фирмами, среди которых: DigitalEquipmentCorporation, Evans & Sutherland, Hewlett-PackardCo., IBMCorp., IntelCorp., IntergraphCorp., SiliconGraphicsInc., SunMicrosystemsInc. и конечно же MicrosoftCorp.
В основу стандарта была положена библиотека IRISGL, разработанная SiliconGraphics. Это достаточно простая в изучении и использовании графическая система, обладающая при этом поразительно широкими возможностями: стабильность, надёжность, переносимость, простота использования.
Построение реалистических изображений
Построение реалистических изображений включает в себя как физические, так и психологические процессы. Свет, после взаимодействия с окружающей средой попадает в глаз, где вырабатываются электроимпульсы, воспринимаемые мозгом. Восприятие – это приобретаемое свойство. Из опытов известно, что чувствительность глаза к яркости света изменяется по логарифмическому закону. Причем глаз приспосабливается к средней яркости обозреваемой сцены, поэтому область с постоянной яркостью на темном фоне кажется ярче или светлее, чем на светлом. Это явление называется одновременным контрастом(рис. 1).
Рис. 1.Эффект одновременного контраста
Яркость центрального квадрата на обоих рисунках равна 0.5, а охватывающего – 0.8 на левом и 0.2 на правом рисунке. Похожее на одновременный контраст явление существует и для цветов.
Еще одним свойством глаза, имеющим значение для компьютерной графики, является то, что границы областей постоянной интенсивности кажутся более яркими, в результате чего такие области воспринимаются как имеющие переменную интенсивность. Это явление называется эффектом полос Махаособенно хорошо заметно на полутоновых поверхностях, заданных многоугольниками. Увеличивая количество граней многоугольников, его можно ослабить, но полностью устранить нельзя (рис. 2). Это только несколько вопросов, возникающих при создании реалистических изображений. Мы же займемся вопросами закрашивания видимых поверхностей. Внешний вид поверхности зависит от вида источника света, которым освещается объект, от свойств поверхности (цвет, текстура, отражательная способность), а также от положения и ориентации поверхности относительно источника света и других поверхностей. Источник света может представлять собой точечный источник, подобный солнцу или лампе накаливания, или же распределенный источник, аналогичный группе ламп дневного света. На практике во многих случаях присутствует также естественный свет, падающий с самых разных направлений.
Рис. 2.Эффект полос Маха
Наиболее простым для моделирования источником является рассеянный естественный свет, т. к. он обеспечивает постоянное освещение всех поверхностей независимо от их ориентации. К сожалению, такой свет дает весьма нечеткие изображения, поскольку достаточно редки ситуации, когда освещение обеспечивается только естественным светом. При естественном освещении две смежные стороны куба должны быть закрашены одинаково, а их общее ребро должно быть неразличимо.
Более сложным (с точки зрения моделирования), но зато более реальным, является точечный источник, при использовании которого освещенность поверхности зависит от ее ориентации: если лучи направлены перпендикулярно к поверхности – она освещена ярко. Чем меньше угол падения лучей, тем меньше освещенность. Такое изменение освещенности позволяет эффективно распознавать трехмерную структуру объекта.
Повышение реалистичности изображения может быть достигнуто путем воспроизведения теней, которые отбрасывает объект, освещенный точечным источником света. Тени не только повышают реалистичность изображения, но и являются дополнительным средством для распознавания глубины.
Еще одним способом повышения реалистичности изображения является воспроизведение свойств поверхности. Одни поверхности являются матовыми и рассеивают отраженный свет по разным направлениям; другие – обладают блеском и отражают свет только в некоторых направлениях. Поверхности могут быть полупрозрачными, т.е. пропускать часть света и одновременно отражать другую часть.
Другим свойством поверхности является их текстура. Очень редко поверхности бывают совершенно гладкими, однако именно такими их моделируют с помощью многоугольников и параметрических поверхностей. Аналогична поверхность редко бывает окрашена равномерно: чаще на ней бывает какой либо узор. Реалистичность изображения можно повысить путем нанесения узора на поверхность.
Само перечисление способов построения реалистичных изображений говорит о том, какой большой объем работы необходимо проделать, чтобы получить что-нибудь, в самом деле, стоящее. И это было бы действительно так если бы не библиотека OpenGL, которая берет на себя большую часть «черновой» работы.
Освещение объектов
Световая энергия, падающая на поверхность, частично поглощается и превращается в тепло, а частично отражается и пропускается. Объект можно увидеть, только если он отражает или пропускает свет. Количество поглощенной, отраженной или пропущенной энергии зависит от длины волны света. Если объект поглощает лишь определенные длины волн, то у света, исходящего от объекта, изменяется распределение энергии – объект выглядит цветным. Цвет объекта определяется поглощаемыми длинами волн. Свойства отраженного света зависят от строения, направления и формы источника света, а также от ориентации и свойств поверхности. Отраженный от объекта свет может быть диффузным или зеркальным. Свойством диффузного отражения, т.е. равномерного по всем направлениями рассеивания света, обладают матовые поверхности. При этом кажется, что поверхности имеют одинаковую яркость независимо от угла обзора. Для таких поверхностей справедлив закон, устанавливающий соответствие между количеством отраженного света и косинусом угла между направлением L на точечный источник света и нормалью к поверхности (рис. 3), т.е. количество отраженного света не зависит от положения наблюдателя, а определяется материалом объекта и длиной волны света. Для представления диффузного отражения от цветных поверхностей расчеты проводятся отдельно для основных составляющих цвета.
Рис. 3.Падающий свет и нормаль к поверхности
Зеркальное отражение происходит от внешней поверхности объекта. Если осветить ярким светом яблоко, то в результате зеркального отражения возникнет световой блик, а свет, отраженный от остальной части яблока, появится вследствие диффузного отражения. При этом в том месте, где находится световой блик, яблоко кажется не красным, а скорее белым, т.е. окрашенным в цвет падающего света. Если изменить положение головы, то сместится и световой блик. Это объясняется тем, что блестящие поверхности неодинаково отражают свет по всем направлениям. От идеально отполированной поверхности свет отражается только в том направлении, для которого углы падения и отражения совпадают. Это означает, что наблюдатель сможет увидеть зеркально отраженный свет только в том случае, если угол α равен нулю (рис. 4). Таким образом, интенсивность зеркального отражения зависит от угла падения, длины волны падающего света и свойств вещества.
Рис. 4.Зеркальное отражение
Поверхности могут обладать не только свойствами зеркального и диффузного отражения, но и свойствами направленного и диффузного пропускания. Направленное пропускание света происходит сквозь прозрачные вещества (например, стекло). Через них обычно хорошо видны предметы, даже, несмотря на то, что лучи света, как правило, преломляются, т.е. отклоняются от первоначального направления. Диффузное пропускание света происходит сквозь просвечивающие материалы (например, замерзшее стекло), в которых поверхностные или внутренние неоднородности приводят к беспорядочному перемешиванию световых лучей. Поэтому когда предмет рассматривается через просвечивающее вещество, его очертания размыты.
Очевидно, что если имеется не один, а несколько источников света, то каждая из перечисленных составляющих от каждого источника суммируется. Все из перечисленных свойств моделей освещенности нашли свое отражение, с той или иной степенью полноты, в OpenGL.
Перечислим те параметры, которые необходимо учитывать при расчете освещенности: текущий вектор нормали, свойства материала, параметры источника света, параметры модели освещения. Рассмотрим каждый из них более подробно с точки зрения поддержки этих параметров вOpenGL.
Нормали
В самом общем случае нормаль к поверхности представляет ее локальную кривизну, и, следовательно, направление зеркального отражения (рис. 5) Применительно к нашим знаниям можно сказать, что нормалью называется вектор, определяющий ориентацию грани (рис. 6). Вектор нормали является одной из характеристик, ассоциированных с каждой вершиной, и дляего определения в OpenGL предусмотрены специальные команды: