Вам бонус- начислено 1 монета за дневную активность. Сейчас у вас 1 монета

Треугольная полоска (Triangle strip) кратко

Лекция



Привет, Вы узнаете о том , что такое треугольная полоска, Разберем основные их виды и особенности использования. Еще будет много подробных примеров и описаний. Для того чтобы лучше понимать что такое треугольная полоска, triangle strip , настоятельно рекомендую прочитать все из категории Компьютерная графика.

В компьютерной графике полоса треугольников — это подмножество треугольников в сетке треугольников с общими вершинами , и это более эффективный с точки зрения памяти метод хранения информации о сетке. Они более эффективны, чем неиндексированные списки треугольников, но обычно столь же быстры или медленнее, чем индексированные списки треугольников. Основная причина использования полос треугольников — сокращение объема данных, необходимых для создания серии треугольников. Количество вершин, хранящихся в памяти, уменьшается с 3 N до N + 2 , где N — количество треугольников, которые нужно нарисовать. Это позволяет меньше использовать дисковое пространство , а также ускоряет их загрузку в оперативную память .

Треугольная полоска (Triangle strip)

Схема четырех треугольников 1, 2, 3 и 4 с вершинами A, B, C, D, E и F.

Например, четыре треугольника на схеме без использования полос треугольников должны были бы храниться и интерпретироваться как четыре отдельных треугольника: ABC, CBD, CDE и EDF. Однако, используя полосу треугольников, их можно хранить просто как последовательность вершин ABCDEF. Эта последовательность будет декодирована как набор треугольников с вершинами в ABC, BCD, CDE и DEF - хотя точный порядок, в котором считываются вершины, не будет слева направо, поскольку это приведет к тому, что смежные треугольники будут смотреть в чередующихся направлениях.

Реализация OpenGL

Треугольная полоска (Triangle strip)

Модель двух треугольников, нарисованная в OpenGL с использованием полос треугольников.

OpenGL имеет встроенную поддержку для полос треугольников. Исправлена ​​функция OpenGL (устарело в OpenGL 3.0) имеет поддержку полос треугольников с использованием немедленного режима и функций . glBegin() glVertex*() glEnd() . Более новые версии поддерживают полосы треугольников с использованием и glDrawElements glDrawArrays

Чтобы нарисовать полосу треугольников с использованием непосредственного режима OpenGL, необходимо передать аргумент , который уведомляет OpenGL о том, что полоса треугольников будет нарисована. Семейство функций определяет координаты каждой вершины в полосе треугольников. Об этом говорит сайт https://intellect.icu . Для получения дополнительной информации обратитесь к The OpenGL Redbook.

Чтобы нарисовать полосу треугольников на диаграмме с использованием непосредственного режима OpenGL, код выглядит следующим образом:

 //Вершины ниже имеют ориентацию по часовой стрелке 
//Настройка по умолчанию для glFrontFace — против часовой стрелки 
glFrontFace(GL_CW); 
glBegin(GL_TRIANGLE_STRIP); 
glVertex3f( 0.0f , 0.0f , 0.0f ); //вершина 1 
glVertex3f ( 0.0f , 0.5f , 0.0f ); //вершина 2 
glVertex3f ( 0.5f , 0.0f , 0.0f ); //вершина 3 
glVertex3f ( 1.0f , 0.5f , 0.0f ); //вершина 4 
glEnd (); 

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

Цитата из Руководства по программированию OpenGL :

GL_TRIANGLE_STRIP

Треугольная полоска (Triangle strip)

Рисует ряд треугольников (трехсторонних многоугольников) с вершинами v0, v1, v2, затем v2, v1, v3 (обратите внимание на порядок), затем v2, v3, v4 и т. д. Порядок нужен для того, чтобы все треугольники были нарисованы с одинаковой ориентацией, чтобы полоса могла правильно образовывать часть поверхности.

Это еще более понятно из страниц руководства:

Рисует связанную группу треугольников. Для каждой вершины, представленной после первых двух вершин, определяется один треугольник. Для нечетного n вершины n , n + 1 и n + 2 определяют треугольник n . Для четного n вершины n + 1 , n и n + 2 определяют треугольник n . Рисуется n – 2 треугольника.

Обратите внимание, что n начинается с 1. Приведенный выше пример кода и диаграмма демонстрируют треугольники, нарисованные по часовой стрелке. Для того, чтобы они считались обращенными вперед, необходим предшествующий вызов glFrontFace(GL_CW)GL_CCW , который в противном случае имеет начальное значение (это означает, что треугольники, нарисованные против часовой стрелки, по умолчанию обращены вперед).

Это важно, если glEnable(GL_CULL_FACE) и glCullFace(GL_BACK) уже активны ( GL_BACK по умолчанию ), поскольку треугольники, обращенные назад, будут отбракованы , поэтому не будут нарисованы и вообще не будут отображаться на экране.

Треугольная полоска (Triangle strip)

Трассировка кривой с использованием треугольной полосы

Свойства и построение

Из определения следует, что подпоследовательность вершин полосы треугольников также представляет собой полосу треугольников. Однако если эта подполоса начинается с четной (с 1-й базой) вершины, то полученные треугольники изменят свою ориентацию. Например, подполоса BCDEF будет представлять треугольники: BCD,CED,DEF.

Аналогично, переворот вершин полос приведет к тому же набору треугольников, если полоса имеет четное число вершин. (например, полоса FEDCBA будет представлять те же треугольники FED, ECD, DCB, CAB, что и исходная полоса). Однако, если полоса имеет нечетное число вершин, то перевернутая полоса будет представлять треугольники с противоположной ориентацией. Например, переворот полоски ABCDE приведет к полоске EDCBA, которая представляет треугольники EDC, DBC, CBA).

Преобразование общей полигональной сетки в одну длинную полосу до недавнего времени было вообще невозможным. Обычно треугольные полосы аналогичны набору граничных петель , а полюса на модели представлены веерами треугольников . Такие инструменты, как Stripe или FTSG , представляют модель в виде нескольких полос. Оптимальная группировка набора треугольников в последовательные полосы была доказана как NP-полная .

В качестве альтернативы полный объект можно описать как вырожденную полосу , которая содержит треугольники нулевой площади, которые программное обеспечение или оборудование обработки отбросит. Вырожденные треугольники эффективно вносят разрывы или «прыжки» в полосу. Например, сетка на диаграмме также может быть представлена ​​как ABCDDFFEDC, что будет интерпретироваться как треугольники ABC CBD CDD DDF DFF FFE FED DEC (вырожденные треугольники отмечены курсивом). Обратите внимание, как эта полоса сначала строит два треугольника слева, затем перезапускается и строит оставшиеся два справа.

Хотя разрывы в полосах треугольников всегда можно реализовать путем повторной отправки вершин, API иногда явно поддерживают эту функцию. IRIS GL поддерживал Swaps (переворачивание двух последовательных вершин в полосе), функцию, на которую опирались ранние алгоритмы, такие как алгоритм SGI . Недавно OpenGL/DirectX смог отрисовывать несколько полос треугольников без вырожденных треугольников с помощью функции Primitive Restart.

Вау!! 😲 Ты еще не читал? Это зря!

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

Из статьи мы узнали кратко, но содержательно про треугольная полоска
создано: 2025-01-18
обновлено: 2025-01-18
10



Рейтиг 9 of 10. count vote: 2
Вы довольны ?:


Поделиться:

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей

Комментарии


Оставить комментарий
Если у вас есть какое-либо предложение, идея, благодарность или комментарий, не стесняйтесь писать. Мы очень ценим отзывы и рады услышать ваше мнение.
To reply

Компьютерная графика

Термины: Компьютерная графика