Порядок соединения вершин. Вершины | MetodPro.ru

Реклама на сайте

Порядок соединения вершин. Вершины


Порядок соединения вершин разного вида треугольников и четырех­угольников приведен на рисунках  ХХХХХХ.

 

Рисунок - Порядок обхода вершин при построении треугольников: а) – независимые треугольники; б) – связанные треугольники; в) – веер связанных треугольников

Режим формирования независимых треугольников - GL_TRIANGLES (рисунок ХХ, а) очевиден – берутся тройки вершин и соединяются между собой.

В режиме формирования связанных треугольников - GL_TRIANGLE_STRIP (рисунок ХХ, б) входящие в примитив треугольники составляют единую группу, в которой каждая пара соседних треугольников имеет общую сторону.

В режиме формирования веера связанных треугольников - GL_TRIANGLE_FAN (рисунок ХХ, в) входящие в примитив треугольники также образуют единую группу, но при этом все входящие в нее треугольники имеют общую вершину.

 

Рисунок – Порядок обхода вершин при построении четырехугольников: а – независимые четырехугольники; б – связанные четырехугольники

Общая схема формирования сцены с помощью библиотеки OpenGL будет включать в себя следующие этапы:

1. Инициализация библиотеки;

2. Задание общих параметров сцены;

3. Задание параметров фрагмента сцены;

4. Вывод описания фрагмента;

5. Повторение пунктов 3 и 4 до полного формирования сцены;

6. Закрытие библиотеки.

 

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

Мы не будем вникать в детали такой настройки и ограничимся использованием процедуры InitOpenGL из библиотеки GLUtils.

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

Другими свойствами, часто устанавливаемыми для всей сцены в целом, являются характеристики источников света, цвет фона и т.п.

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

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

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

Рассмотрим реализацию процесса сборки сцены с помощью конвейера OpenGL. Композиция всех геометрических преобразований, определяемых пользователем, накапливается в матрице видового преобразования. Следовательно, можно сказать, что связь между мировой координатной системой и координатной системой, в которой будет описываться вывод в данной точке программы, определяется состоянием матрицы видового преобразования (композицией преобразований накопленных в матрице к моменту достижения данной точки программы). Например, если мы выполним команду glLoadIndentity, предварительно установив текущей матрицу видового преобразования, то можно сказать, что вывод будет производиться в координатной системе, совпадающей с мировой. Если после этого с помощью команды glTranslate сформировать преобразование переноса на вектор T, то вывод будет осуществляться в новой координатной системе, начало которой сдвинуто относительно начала мировой системы координат на вектор Т.

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

Рассмотрим небольшой пример, иллюстрирующий вышесказанное.



Методические пособия

  • Системы автоматизированного проектирования
  • Социология молодёжи
  • Общая социология
  • Криптография
  • Проектирование трансляторов
  • Компьютерная графика
  • Моделирование систем
  • Информационная безопасность
  • Теория вычислительных процессов
  • Логические основы искусственного интелекта
  • Проектирование распределённых информационных систем