Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
П. Л. ПЛЕССЕР
Производственная фирма «Логос», Москва
ПРЕДВАРИТЕЛЬНОЕ ПРЕОБРАЗОВАНИЕ
ПРЕДСТАВЛЕНИЯ ТРЕХМЕРНЫХ ОБЪЕКТОВ
ДЛЯ УСКОРЕНИЯ ВИЗУАЛИЗАЦИИ
В данной работе исследуется оптимизация форматов хранения трехмерных объектов с точки зрения ускорения процесса их загрузки и последующего отображения на экран. Ниже представлены основные подходы к решению данной задачи.
Необходимость в такого рода преобразованиях возникает в случаях, когда требуется визуализировать большой по размерам объект, состоящий из большого количества многоугольников и имеющий сложную полигональную структуру. Примером такого объекта может служить трехмерная модель местности. Чаще всего такие преобразования используются для предварительной обработки трехмерных объектов в системах визуализации реального времени (компьютерные тренажеры, трехмерные компьютерные игры и т. п.).
Современные системы визуализации («конвейеры визуализации») [1] способны принимать на вход данные различных форматов, однако наиболее распространенным представлением геометрического объекта является совокупность буферов вершин и индексов. Буфер вершин представляет собой набор трехмерных координат точки, а так же некоторых ее атрибутов. В свою очередь, буфер индексов определяет множество треугольников, задаваемых триадами индексов точек, находящихся в буфере вершин.
В процессе отрисовки каждого треугольника обрабатывается каждая его вершина, что может быть вычислительно дорого. Данные затраты зависят от совокупности пропускной способности загрузки данных, ассоциированных с каждой точкой (таких как координаты, нормаль, цвет, текстурные координаты и т. д.), и необходимых для визуализации расчетов (таких как перемещение и освещение).
В свою очередь, современные графические ускорители имеют разные способы оптимизации для уменьшения количества ненужных вычислений и ссылок на ячейки памяти. Основным способом оптимизации служит кэш вершин (FIFO) [1], используемый в процессе их обработки. Однако эффективность его использования сильно зависит от порядка, в котором вершины поступают на обработку.
Первым шагом на пути к решению проблемы пропускной способности геометрических данных является реорганизация граней трехмерных объектов в так называемые «ленты треугольников» (triangle strip) [2], таким образом, что две точки между следующими друг за другом треугольниками используются заново. Следующим шагом является перераспределение полигонов фигуры таким образом, чтобы максимизировать количество ссылок на уже находящиеся в кэше вершины. Для реализации данного подхода была предложена следующая техника. В первую очередь для каждой точки определяются смежные с ней треугольники, так как вершинный и индексный буферы не содержат в явном виде информацию о смежности. Получившиеся группы треугольников вокруг каждой вершины похожи на «вееры треугольников» (triangle fan) [2]. Однако, в каждой группе треугольники следуют друг за другом в произвольном порядке, вследствие чего, в общем случае необходимо сортировать получившиеся последовательности треугольников.
Базовая стратегия построения «лент треугольников» заключается в последовательном обходе обрабатываемой фигуры по соседствующим между собой треугольникам и принятии решения о добавлении текущего треугольника в ленту или о начале новой ленты с данного треугольника. Это решение принимается на основе серии прогностических тестов характеристик кэша вершин. Пример построения «ленты треугольников» проиллюстрирован на Рис. 1.

Рис. 1. Построение "лент треугольников"
Реализация вышеописанного подхода позволила добиться увеличения быстродействия и меньшей ресурсозависимости моделируемой системы.
Список литературы
1. Эйнджел Эд. Интерактивная компьютерная графика. Вводный курс на базе OpenGL, 2 изд.: Пер. с англ. – М.: Издательский дом «Вильямс», 2001.
2. Адамс Дж. Математические основы машинной графики, М.: Мир, 2001.


