- •Компьютерная графика
- •Содержание
- •Основы работы в среде AutoCad
- •Построение чертежа по 3d-технологии
- •Типовые соединения деталей
- •Относительные размеры и расчетные формулы для построения чертежа болтового соединения
- •Относительные размеры и расчетные формулы для построения чертежа шпилечного соединения
- •Виды изделий и конструкторских документов
- •Лабораторная работа №2
- •Объекты в 3ds Max
- •Методы преобразования геометрических объектов
- •Лабораторная работа №3
- •Лофтинговое моделирование
- •Деформация моделей, построенных методом лофтинга
- •Лабораторная работа №4
- •Сетчатые оболочки
- •Редактирование сетчатых оболочек
- •Лабораторная работа №5
- •Источники света
- •Съемочные Камеры
- •Материалы
- •Лабораторная работа №6
- •Анимация
- •Движение объектов по заданному пути
- •Лабораторная работа №7
- •Графическое программирование
- •Описание набора драйверов DirectX
- •Описание графической системы OpenGl
- •Основы OpenGl
- •Рисование геометрических объектов
- •Лабораторная работа №8
- •Список литературы
-
Описание графической системы OpenGl
OpenGL является программным интерфейсом (Application Programming Interface) для разработки приложений в области двумерной и трехмерной графики. Его можно считать прослойкой между аппаратурой и пользовательским уровнем. Это дает возможность использовать единый интерфейс для разных платформ, при этом получая оптимальную производительность с использованием аппаратной поддержки.
Характерные особенности OpenGL
-
Стабильность - дополнения и изменения в стандарте реализуются таким образом, чтобы сохранить совместимость с разработанным ранее программным обеспечением;
-
Переносимость - приложения, использующие OpenGL, гарантируют одинаковый визуальный результат вне зависимости от типа используемой операционной системы и организации отображения информации. Кроме того, эти приложения могут выполняться как на персональных компьютерах, так и на рабочих станциях и суперкомпьютерах;
-
Легкость применения - стандарт OpenGL имеет продуманную структуру и интуитивно понятный интерфейс, что позволяет с меньшими затратами создавать эффективные приложения, содержащие меньше строк кода, чем с использованием других графических библиотек. Необходимые функции для обеспечения совместимости с различным оборудованием реализованы на уровне библиотеки и значительно упрощают разработку приложений.
Основные возможности OpenGL
-
Набор базовых примитивов: точки, линии, многоугольники и т.п.;
-
Видовые и координатные преобразования;
-
Удаление невидимых линий и поверхностей (z-буфер);
-
Трассировка лучей (игнорирование тех лучей от источников света, которые не влияют на формирование изображения);
-
Использование сплайнов для построения линий и поверхностей;
-
Наложение текстуры и применение освещения;
-
Добавление специальных эффектов: тумана, изменение прозрачности, смешивание цветов (blending), устранение ступенчатости (anti-aliasing).
Структура программы с использованием OpenGL
В OpenGL нет встроенных функций для своей инициализации. Это связано с тем, что данный программный продукт является независимым от платформы графическим API. Инициализацию обеспечивает операционная среда. Однако, при использовании дополнительных библиотек (например, GLUT), инициализация необходима.
Несмотря на отсутствие инициализации, для работы с OpenGL, вначале необходимо установить используемый формат пикселя.
Использование примитивов в OpenGL
Под примитивами в OpenGL понимаются точки, линейные сегменты и полигоны. Так же как и в DirectX, полигоны представляют собой замкнутые трехмерные фигуры, построенные, минимум, по трем точкам.
В подключаемых библиотеках GLU и GLUT, описаны так же функции ряда геометрических фигур, таких как шар, цилиндр, диск, куб, конус, тор и т.д. Для оптимизации работы используется аппарат массивов вершин, аналогичный аппарату вершинного и индексного буфера в DirectX. Так же можно определить массивы нормалей и массивы цветов.
Использование матриц преобразования
Для задания различных преобразований объектов сцены в OpenGL используются операции над матрицами, при этом различают три типа матриц: видовая, проекций и текстуры. Все они имеют размер 4x4. Видовая матрица определяет преобразования объекта в мировых координатах, такие как параллельный перенос, изменение масштаба и поворот. Матрица проекций задает, как будут проецироваться трехмерные объекты на плоскость экрана (в оконные координаты), а матрица текстуры определяет наложение текстуры на объект.
Материалы и освещение в OpenGL
Для создания реалистических изображений необходимо определить как свойства самого объекта, так и свойства среды, в которой он находится. Первая группа свойств включает в себя параметры материала, из которого сделан объект, способы нанесения текстуры на его поверхность, степень прозрачности объекта.
Чтобы задать свойства сред, необходимо определить количество и свойства источников света, уровень прозрачности среды, а также модель источников света.
Источники света определяются так же, как и в случае с материалами. В отличие от DirectX, в OpenGL не определены конкретные виды источников освещения. Вместо этого пользователь сам задает такие параметры, как уровень сфокусированности света, максимальный угол разброса света, цвет различных типов освещения (фонового, диффузного, зеркального отражения), а также положение источника света.
Использование текстур в OpenGL
Для использования текстуры необходимо сначала загрузить в память изображение нужной текстуры и передать его OpenGL.
При создании образа текстуры в памяти следует учитывать следующие требования:
-
Размеры текстуры, как по горизонтали, так и по вертикали должны представлять собой двойку в какой-либо степени. Это требование накладывается для компактного размещения текстуры в памяти и способствует ее эффективному использованию;
-
Необходимо предусмотреть случай, когда объект по размерам значительно меньше наносимой на него текстуры. Чем меньше объект, тем меньше должна быть наносимая на него текстура и поэтому вводится понятие уровней детализации текстуры. Каждый уровень детализации задает некоторое изображение, которое является, как правило, уменьшенной в два раза копией оригинала. Такой подход позволяет улучшить качество нанесения текстуры на объект.