Введение

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

Представительство

Различные методы хранения и работы с сеткой в памяти компьютера возможны. С помощью OpenGL и DirectX API существует два основных способа передачи треугольной сетки в графическое оборудование, треугольные полосы и индексные массивы.

Треугольная полоса

Один из способов передачи данных о вершинах между треугольниками - треугольная полоса. С полосами треугольников каждый треугольник имеет один полный край с одним соседом и другой с следующим. Другой способ - треугольный вентилятор, который представляет собой набор связанных треугольников, имеющих одну центральную вершину. С помощью этих методов вершины обрабатываются эффективно, в результате чего необходимо обрабатывать только N + 2 вершины, чтобы нарисовать N треугольников. Треугольные полосы эффективны, однако недостаток заключается в том, что может быть не очевидно, как или удобно перевести произвольную треугольную сетку в полосы.

Колапс краев

Эта операция включает в себя определение края hvk, vti, где vk называется вершиной удержания, а vt называется вершиной броска. Треугольники, которые разделяют этот край, удаляются из сетки. Вершина vt также удаляется из сетки. Любые треугольники, которые разделяют vt, имеют вершину, замененную vk. На рисунке 1 показана треугольная сетка и последовательность трех краев, приложенных к сетке.

Массив индексов

С индексными массивами, сетка представлена двумя отдельными массивами, один массив, содержащий вершины, и другой, содержащий множества из трех индексов в этом массиве, которые определяют треугольник. Графическая система обрабатывает вершины сначала и затем воспроизводит треугольники, используя индексные наборы, работающие с преобразованными данными. В OpenGL это поддерживается примитивной glDrawElements при использовании Vertex Buffer Object (VBO). С помощью этого метода любой произвольный набор треугольников, разделяющих любое произвольное количество вершин, может быть сохранен, обработан и передан графическому API без какой-либо промежуточной обработки.