Наложение текстур
Наложение текстур [ 1 ] [ 2 ] [ 3 ] — это метод отображения текстуры на компьютерной графике . «Текстура» в этом контексте может быть высокочастотной деталью , текстурой поверхности или цветом .
История
[ редактировать ]Оригинальная техника была впервые предложена Эдвином Кэтмаллом в 1974 году в рамках его докторской диссертации. [ 4 ]
Отображение текстур первоначально относилось к диффузному отображению — методу, который просто сопоставлял пиксели текстуры с трехмерной поверхностью («обертывание» изображения вокруг объекта). В последние десятилетия появилось появление многопроходного рендеринга, мультитекстурирования , MIP-карт и более сложных отображений, таких как отображение высот , отображение рельефа , отображение нормалей , отображение смещения , отображение отражений , зеркальное отображение , отображение окклюзии и многие другие вариации этой техники. (управляемые системой материалов ) позволили моделировать почти фотореализм в реальном времени за счет значительного сокращения количества полигонов и расчетов освещения, необходимых для построения реалистичной и функциональной трехмерной сцены.
Карты текстур
[ редактировать ]А текстурная карта [ 5 ] [ 6 ] — это изображение, нанесенное (наложенное) на поверхность фигуры или многоугольника . [ 7 ] Это может быть растровое изображение или процедурная текстура . Они могут храниться в обычных форматах файлов изображений , на них ссылаются форматы 3D-моделей или определения материалов , а также объединять их в пакеты ресурсов .
Они могут иметь от одного до трех измерений, хотя для видимых поверхностей наиболее распространены два измерения. Для использования с современным оборудованием данные карты текстур могут храниться в свернутом или мозаичном порядке для улучшения согласованности кэша . API-интерфейсы рендеринга обычно управляют ресурсами карт текстур (которые могут располагаться в памяти устройства ) как буферами или поверхностями и могут обеспечивать « рендеринг в текстуру » для дополнительных эффектов, таких как постобработка или отображение среды .
Обычно они содержат RGB данные цвета (хранятся либо в виде прямого цвета , в сжатых форматах , либо в индексированном цвете ), а иногда и дополнительный канал для альфа-смешивания ( RGBA ), особенно для рекламных щитов и текстур наложения декалей . Можно использовать альфа-канал (который может быть удобно хранить в форматах, анализируемых аппаратно) для других целей, таких как зеркальность .
Несколько текстурных карт (или каналов ) могут быть объединены для управления зеркальностью , нормалями , смещением или подповерхностным рассеянием , например, для рендеринга кожи.
Несколько изображений текстур могут быть объединены в атласы текстур или текстуры-массивы, чтобы уменьшить изменения состояния современного оборудования. (Их можно считать современной эволюцией тайловой графики карт ). Современное оборудование часто поддерживает текстуры кубических карт с несколькими гранями для отображения среды.
Создание
[ редактировать ]Карты текстур могут быть получены путем сканирования / цифровой фотографии , созданы в программном обеспечении для обработки изображений , таком как GIMP , Photoshop , или нарисованы на 3D-поверхностях непосредственно с помощью инструмента 3D-рисования, такого как Mudbox или zbrush .
Применение текстур
[ редактировать ]Этот процесс аналогичен наклеиванию узорчатой бумаги на простую белую коробку. Каждой вершине многоугольника присвоена текстурная координата (которая в 2d-случае также известна как UV-координаты ). [ 8 ] Это можно сделать путем явного назначения атрибутов вершин , которые вручную редактируются в пакете 3D-моделирования с помощью инструментов UV-развертки . можно связать процедурное преобразование из 3D-пространства в текстурное пространство Также с материалом . Это может быть достигнуто с помощью планарной проекции или, альтернативно, цилиндрического или сферического картографирования. Более сложные отображения могут учитывать расстояние вдоль поверхности, чтобы минимизировать искажения. Эти координаты интерполируются по граням полигонов для выборки текстурной карты во время рендеринга. Текстуры могут повторяться или зеркально отражаться , чтобы расширить конечное прямоугольное растровое изображение на большую площадь, или они могут иметь однозначное уникальное « инъективное » отображение каждого фрагмента поверхности (что важно для отображения отображения и отображения освещения , а также известное как выпечка ).
Текстурное пространство
[ редактировать ]Наложение текстуры отображает поверхность модели (или пространство экрана во время растеризации) в пространство текстур ; в этом пространстве текстурная карта видна в неискаженном виде. Инструменты UV-развертки обычно предоставляют представление в пространстве текстур для ручного редактирования координат текстуры. Некоторые методы рендеринга, такие как подповерхностное рассеяние , могут выполняться приблизительно с помощью операций в пространстве текстур.
Мультитекстурирование
[ редактировать ]Мультитекстурирование — это использование более одной текстуры на полигоне одновременно. [ 9 ] Например, текстура карты освещения может использоваться для освещения поверхности в качестве альтернативы перерасчету этого освещения каждый раз при рендеринге поверхности. Микротекстуры или детальные текстуры используются для добавления деталей с более высокой частотой, а карты грязи могут добавлять выветривание и вариации; это может значительно уменьшить кажущуюся периодичность повторения текстур. Современная графика может использовать более 10 слоев, которые для большей точности объединяются с помощью шейдеров . Другой метод мультитекстуры — рельефное отображение , которое позволяет текстуре напрямую управлять направлением обращения к поверхности для целей расчета освещения; он может дать очень хороший вид сложной поверхности (например, коры дерева или грубого бетона), которая приобретает детали освещения в дополнение к обычной детальной окраске. Bump Mapping стал популярным в последних видеоиграх, поскольку графическое оборудование стало достаточно мощным, чтобы работать с ним в режиме реального времени. [ 10 ]
Фильтрация текстур
[ редактировать ]Способ расчета выборок (например, при просмотре в виде пикселей на экране) из текселей (пикселей текстуры) определяется фильтрацией текстур . Самый дешевый метод — использовать интерполяцию по ближайшему соседу , но билинейная интерполяция или трилинейная интерполяция между MIP-картами — это две часто используемые альтернативы, которые уменьшают сглаживание или неровности . В случае, если координата текстуры находится за пределами текстуры, она либо зажимается , либо оборачивается . Анизотропная фильтрация лучше устраняет направленные артефакты при просмотре текстур под наклонными углами обзора.
Потоковая передача текстур
[ редактировать ]Потоковая передача текстур — это средство использования потоков данных для текстур, где каждая текстура доступна в двух или более различных разрешениях, чтобы определить, какую текстуру следует загрузить в память и использовать на основе расстояния прорисовки от средства просмотра и объема памяти, доступной для текстуры. Потоковая передача текстур позволяет механизму рендеринга использовать текстуры низкого разрешения для объектов, находящихся далеко от камеры зрителя, и превращать их в более подробные текстуры, считываемые из источника данных, когда точка зрения приближается к объектам.
Выпечка
[ редактировать ]В качестве оптимизации можно визуализировать детали сложной модели с высоким разрешением или дорогостоящего процесса (например, глобального освещения ) в текстуру поверхности (возможно, на модели с низким разрешением). Запекание также известно как отображение рендеринга . Этот метод чаще всего используется для карт освещения , но также может использоваться для создания карт нормалей и карт смещения . Некоторые компьютерные игры (например, «Мессия» ) использовали эту технику. Оригинальный программный движок Quake использовал запекание на лету для объединения карт освещения и карт цветов (« кэширование поверхности »).
Запекание можно использовать как форму генерации уровня детализации , когда сложная сцена с множеством различных элементов и материалов может быть аппроксимирована одним элементом с одной текстурой, которая затем алгоритмически уменьшается для снижения затрат на рендеринг и меньшего количества вызовов отрисовки . Он также используется для получения высокодетализированных моделей из программного обеспечения для 3D-скульптуры и сканирования облаков точек и аппроксимации их сетками, более подходящими для рендеринга в реальном времени.
Алгоритмы растеризации
[ редактировать ]В программных и аппаратных реализациях были разработаны различные методы. Каждый из них предлагает разные компромиссы в точности, универсальности и производительности.
Аффинное наложение текстур
[ редактировать ]Аффинное наложение текстур линейно интерполирует координаты текстуры по поверхности и является самой быстрой формой наложения текстур. Некоторое программное и аппаратное обеспечение (например, оригинальная PlayStation ) проецирует вершины в трехмерном пространстве на экран во время рендеринга и линейно интерполирует координаты текстуры в экранном пространстве между ними. Это можно сделать путем увеличения фиксированной точки UV-координат или с помощью алгоритма увеличения ошибок, подобного линейному алгоритму Брезенхэма .
В отличие от перпендикулярных полигонов, это приводит к заметным искажениям при перспективных преобразованиях (см. рисунок: текстура флажка кажется изогнутой), особенно в случае примитивов рядом с камерой . Такое искажение можно уменьшить, разбив полигон на более мелкие.
В случае прямоугольных объектов использование четырехугольных примитивов может выглядеть менее неправильным, чем тот же прямоугольник, разделенный на треугольники, но поскольку интерполяция 4 точек усложняет растеризацию, в большинстве ранних реализаций предпочитались только треугольники. Некоторое оборудование, такое как прямое наложение текстур, используемое Nvidia NV1 , могло предложить эффективные четырехъядерные примитивы. При коррекции перспективы (см. ниже) треугольники становятся равнозначными и это преимущество исчезает.
Для прямоугольных объектов, расположенных под прямым углом к зрителю, таких как полы и стены, перспективу необходимо корректировать только в одном направлении по экрану, а не в обоих. Правильное отображение перспективы можно рассчитать на левом и правом краях пола, и тогда аффинная линейная интерполяция по этому горизонтальному промежутку будет выглядеть правильно, поскольку каждый пиксель вдоль этой линии находится на одинаковом расстоянии от зрителя.
Перспективная корректность
[ редактировать ]Перспективное правильное текстурирование учитывает положение вершин в трехмерном пространстве, а не просто интерполирует координаты в двухмерном пространстве экрана. [ 11 ] Таким образом достигается правильный визуальный эффект, но его расчет обходится дороже. [ 11 ]
Выполнить перспективную коррекцию координат текстуры и , с будучи компонентом глубины с точки зрения зрителя, мы можем воспользоваться тем фактом, что значения , , и линейны в экранном пространстве по всей текстурируемой поверхности. В отличие от оригинала , и , до разделения не являются линейными по всей поверхности экранного пространства. Таким образом, мы можем линейно интерполировать эти обратные величины по поверхности, вычисляя скорректированные значения для каждого пикселя, чтобы получить правильное наложение текстуры с точки зрения перспективы.
Для этого мы сначала вычисляем обратные величины в каждой вершине нашей геометрии (3 точки для треугольника). Для вершины у нас есть . Затем мы линейно интерполируем эти обратные величины между вершин (например, с использованием барицентрических координат ), что приводит к интерполированию значений по поверхности. В данной точке это дает интерполированное значение , и . Обратите внимание, что это пока не может быть использовано в качестве координат текстуры, так как наше деление на изменили свою систему координат.
Чтобы исправить обратно к пространстве мы сначала вычисляем исправленное снова приняв взаимное . Затем мы используем это, чтобы исправить наши : и . [ 12 ]
Данная коррекция делает так, что в частях полигона, находящихся ближе к зрителю, разница от пикселя к пикселю между координатами текстуры меньше (растягивание текстуры шире), а в частях, находящихся дальше, эта разница больше (сжатие текстуры). .
- Аффинное наложение текстур напрямую интерполирует координаты текстуры. между двумя конечными точками и :
- где
- Перспективное правильное отображение интерполируется после деления на глубину , затем использует интерполированную обратную величину для восстановления правильной координаты:
Аппаратное обеспечение 3D-графики обычно поддерживает текстурирование с правильной перспективой.
Были разработаны различные методы рендеринга геометрии с текстурами в изображения с различным соотношением качества и точности, которые можно применять как к программному, так и к аппаратному обеспечению.
Классические программные средства отображения текстур обычно выполняли только простое отображение не более чем с одним эффектом освещения (обычно применяемым через справочную таблицу ), а корректность перспективы стоила примерно в 16 раз дороже.
Ограниченное вращение камеры
[ редактировать ]Движок Doom ограничивал мир вертикальными стенами и горизонтальными полами/потолками с камерой, которая могла вращаться только вокруг вертикальной оси. Это означало, что стены будут иметь постоянную координату глубины по вертикальной линии, а полы/потолки будут иметь постоянную глубину по горизонтальной линии. После выполнения одного расчета коррекции перспективы для глубины остальная часть линии может использовать быстрое аффинное отображение. Некоторые более поздние средства рендеринга той эпохи имитировали небольшой шаг камеры с помощью сдвига , что позволяло создать большую свободу при использовании той же техники рендеринга.
Некоторые движки были способны отображать карты высот с текстурами (например, Nova Logic от Voxel Space и движок Outcast ) с помощью инкрементальных алгоритмов, подобных Брезенхэму , создавая внешний вид ландшафта с текстурами без использования традиционных геометрических примитивов. [ 13 ]
Подразделение для коррекции перспективы
[ редактировать ]Каждый треугольник можно дополнительно разделить на группы примерно по 16 пикселей для достижения двух целей. Во-первых, постоянно держать арифметическую мельницу занятой. Во-вторых, получение более быстрых арифметических результатов. [ нечеткий ]
Мировое космическое подразделение
[ редактировать ]Для перспективного наложения текстур без аппаратной поддержки треугольник разбивается на более мелкие треугольники для рендеринга и к ним применяется аффинное наложение. Причина, по которой этот метод работает, заключается в том, что искажение аффинного отображения становится гораздо менее заметным на меньших полигонах. Sony PlayStation широко использовала это, потому что она поддерживала только аффинное отображение на аппаратном уровне, но имела относительно высокую пропускную способность треугольника по сравнению с ее аналогами.
Разделение экранного пространства
[ редактировать ]Программные средства визуализации обычно предпочитают разделение экрана, поскольку оно требует меньше накладных расходов. Кроме того, они пытаются выполнить линейную интерполяцию вдоль линии пикселей, чтобы упростить настройку (по сравнению с 2D-аффинной интерполяцией) и, следовательно, снова накладные расходы (также аффинное отображение текстур не вписывается в небольшое количество регистров процессора . x86) ; 68000 или любой RISC гораздо больше подойдет ).
Другой подход был использован для Quake , который рассчитывал координаты правильной перспективы только один раз каждые 16 пикселей строки сканирования и выполнял линейную интерполяцию между ними, эффективно работая со скоростью линейной интерполяции, поскольку расчет правильной перспективы выполняется параллельно на сопроцессоре. [ 14 ] Полигоны визуализируются независимо, поэтому можно переключаться между промежутками и столбцами или диагональными направлениями в зависимости от ориентации нормали многоугольника, чтобы добиться более постоянного значения z, но усилия, похоже, того не стоят.
Другие методы
[ редактировать ]Другой метод заключался в аппроксимации перспективы с помощью более быстрого расчета, например полинома. Еще один метод использует значение 1/z двух последних нарисованных пикселей для линейной экстраполяции следующего значения. Затем деление выполняется, начиная с этих значений, так что нужно разделить только небольшой остаток. [ 15 ] но объем бухгалтерского учета делает этот метод слишком медленным в большинстве систем.
Наконец, движок Build расширил трюк с постоянным расстоянием, используемый в Doom, найдя линию постоянного расстояния для произвольных многоугольников и отрисовав ее вдоль нее.
Аппаратные реализации
[ редактировать ]Аппаратное обеспечение для отображения текстур изначально было разработано для моделирования (например, реализовано в генераторах цифровых изображений Evans and Sutherland ESIG и Singer-Link DIG), а профессиональные графические рабочие станции , такие как Silicon Graphics , машины для трансляции цифровых видеоэффектов, такие как Ampex ADO. позже появились в игровых автоматах , потребительских игровых консолях и видеокартах для ПК в середине 1990-х годов. В моделировании полета наложение текстур давало важные сигналы движения и высоты, необходимые для обучения пилотов, недоступные на нетекстурированных поверхностях. Также в приложениях для моделирования полета было реализовано наложение текстур для обработки в реальном времени с предварительно отфильтрованными шаблонами текстур, хранящимися в памяти для доступа в реальном времени со стороны видеопроцессора. [ 16 ]
Современные графические процессоры (GPU) предоставляют специализированные блоки с фиксированными функциями , называемые сэмплерами текстур или блоками отображения текстур , для выполнения отображения текстур, обычно с трилинейной фильтрацией или более качественной многократной анизотропной фильтрацией , а также аппаратное обеспечение для декодирования определенных форматов, таких как DXTn . По состоянию на 2016 год оборудование для отображения текстур распространено повсеместно, поскольку большинство SOC содержат подходящий графический процессор.
Некоторое оборудование сочетает в себе наложение текстур с определением скрытой поверхности при отложенном рендеринге на основе плиток или рендеринге развертки ; такие системы извлекают только видимые текселы за счет использования большего рабочего пространства для преобразованных вершин. Большинство систем остановились на подходе Z-буферизации , который все еще может снизить рабочую нагрузку на наложение текстур за счет прямой сортировки .
Среди более раннего графического оборудования существовало две конкурирующие парадигмы доставки текстуры на экран:
- Прямое наложение текстуры перебирает каждый тексел текстуры и решает, где его разместить на экране.
- Вместо этого обратное наложение текстуры перебирает пиксели на экране и решает, какой тексель использовать для каждого.
Обратное наложение текстур — это метод, который стал стандартом в современном оборудовании.
Инверсное наложение текстур
[ редактировать ]При использовании этого метода пиксель на экране сопоставляется с точкой текстуры. Каждая вершина примитива рендеринга проецируется в точку на экране, и каждая из этих точек сопоставляется с координатой au,v текселя текстуры. Растеризатор будет интерполировать между этими точками, чтобы заполнить каждый пиксель, покрытый примитивом.
Основное преимущество заключается в том, что каждый пиксель, покрытый примитивом, будет пройден ровно один раз. После преобразования вершин примитива объем оставшейся работы напрямую зависит от количества пикселей, которые он покрывает на экране.
Основным недостатком по сравнению с прямым отображением текстур является то, что шаблон доступа к памяти в пространстве текстур не будет линейным, если текстура расположена под углом к экрану. Этот недостаток часто устраняется с помощью методов кэширования текстур , таких как расположение памяти текстур с перелистыванием .
Линейную интерполяцию можно использовать непосредственно для простого и эффективного наложения аффинных текстур, но ее также можно адаптировать для корректности перспективы .
Прямое наложение текстур
[ редактировать ]Прямое наложение текстур сопоставляет каждый тексел текстуры с пикселем на экране. После преобразования прямоугольного примитива в место на экране, средство прямого рендеринга текстурного отображения перебирает каждый тексел текстуры, помещая каждый из них в пиксель кадрового буфера .
Это использовалось некоторым оборудованием, таким как 3DO , Sega Saturn и NV1 .
Основное преимущество заключается в том, что доступ к текстуре будет осуществляться в простом линейном порядке, что позволяет очень эффективно кэшировать данные текстуры. Однако это преимущество является одновременно и недостатком: поскольку примитив становится меньше на экране, ему все равно приходится перебирать каждый тексель в текстуре, что приводит к избыточному перерисовыванию многих пикселей.
Этот метод также хорошо подходит для рендеринга четырехугольных примитивов, а не для сведения их к треугольникам, что дает преимущество, когда текстурирование с корректной перспективой недоступно на аппаратном уровне. Это связано с тем, что аффинное искажение четырехугольника выглядит менее неправильным, чем тот же четырехугольник, разделенный на два треугольника (см. Наложение аффинной текстуры выше). Аппаратное обеспечение NV1 также позволяло использовать режим квадратичной интерполяции, чтобы обеспечить еще лучшее приближение к правильности перспективы.
Существующие аппаратные реализации не обеспечивали эффективного отображения UV-координат , которое стало важным методом 3D-моделирования и помогало правильно обрезать текстуру, когда примитив выходит за край экрана. Эти недостатки можно было бы устранить путем дальнейшего развития, но с тех пор конструкция графического процессора в основном перешла в сторону обратного отображения.
Приложения
[ редактировать ]Помимо 3D-рендеринга, доступность оборудования для наложения текстур вдохновила его на использование для ускорения других задач:
Томография
[ редактировать ]Можно использовать аппаратное обеспечение для отображения текстур для ускорения восстановления наборов воксельных и данных из томографических сканирований для визуализации результатов . [ 17 ]
Пользовательские интерфейсы
[ редактировать ]Многие пользовательские интерфейсы используют наложение текстур для ускорения анимированных переходов элементов экрана, например Exposé в Mac OS X.
См. также
[ редактировать ]- 2.5D
- 3D компьютерная графика
- MIP-карта
- Система материалов
- Параметризация
- Синтез текстур
- Атлас текстур
- Текстурный сплаттинг — техника объединения текстур.
- Шейдер (компьютерная графика)
Ссылки
[ редактировать ]- ^ Ван, Хуамин. «Наложение текстур» (PDF) . кафедра компьютерных наук и инженерии . Университет штата Огайо . Архивировано из оригинала (PDF) 4 марта 2016 г. Проверено 15 января 2016 г.
- ^ «Наложение текстур» (PDF) . www.inf.pucrs.br . Проверено 15 сентября 2019 г.
- ^ «Наложение текстур CS 405» . www.cs.uregin.ca . Проверено 22 марта 2018 г.
- ^ Кэтмалл, Э. (1974). Алгоритм подразделения для компьютерного отображения криволинейных поверхностей (PDF) (кандидатская диссертация). Университет Юты.
- ^ Фоснер, Рон (январь 1999 г.). «DirectX 6.0 становится взрывным благодаря множеству новых функций и гораздо более быстрому написанию кода» . Microsoft.com . Архивировано из оригинала 31 октября 2016 года . Проверено 15 сентября 2019 г.
- ^ Хвидстен, Майк (весна 2004 г.). «Руководство по отображению текстур OpenGL» . homepages.gac.edu . Архивировано из оригинала 23 мая 2019 года . Проверено 22 марта 2018 г.
- ^ Джон Радофф, Анатомия MMORPG, «Анатомия MMORPG» . radoff.com . 22 августа 2008 г. Архивировано из оригинала 13 декабря 2009 г. Проверено 13 декабря 2009 г.
- ^ Робертс, Сьюзен. «Как использовать текстуры» . Архивировано из оригинала 24 сентября 2021 года . Проверено 20 марта 2021 г.
{{cite web}}
: CS1 maint: неподходящий URL ( ссылка ) - ^ Блайт, Дэвид. Расширенные методы графического программирования с использованием OpenGL . Siggraph 1999. ( PDF ) (см.: Мультитекстура )
- ^ Синтез рельефных карт в реальном времени , Ян Каутц 1 , Вольфганг Хайдричи 2 и Ханс-Петер Зайдель 1 , ( 1 Институт компьютерных наук Макса Планка, 2 Университет Британской Колумбии)
- ^ Jump up to: а б «Лексикон от А до Я следующего поколения 1996 года: коррекция перспективы» . Следующее поколение . № 15. Imagine Media . Март 1996 г. с. 38.
- ^ Калмс, Микаэль (1997). «Перспективное текстурирование» . www.lysator.liu.se . Проверено 27 марта 2020 г.
- ^ « Воксельный движок местности », введение. В сознании программиста, 2005 г. (архив 2013 г.).
- ^ Абраш, Майкл. Специальное издание «Черной книги» Майкла Абраша по графическому программированию. Группа Кориолиса, Скоттсдейл, Аризона, 1997 год. ISBN 1-57610-174-6 ( PDF заархивировано 11 марта 2007 г. в Wayback Machine ) (глава 70, стр. 1282)
- ^ US 5739818 , Спэкман, Джон Нил, «Устройство и метод для выполнения перспективно правильной интерполяции в компьютерной графике», выдан 14 апреля 1998 г.
- ^ Ян, Джонсон (август 1985 г.). «Достижения в области компьютерных изображений для моделирования полетов». ИИЭЭ . 5 (8): 37–51. дои : 10.1109/MCG.1985.276213 .
{{cite journal}}
: Внешняя ссылка в
( помощь )|ref=
- ^ «текстурное наложение для томографии» .
Программное обеспечение
[ редактировать ]- TexRecon. Архивировано 27 ноября 2021 г. на Wayback Machine — программное обеспечение с открытым исходным кодом для текстурирования 3D-моделей, написанное на C ++.
Внешние ссылки
[ редактировать ]- Введение в наложение текстур с использованием C и SDL (PDF)
- Программирование текстурированного ландшафта с использованием XNA/DirectX, с сайта www.riemers.net.
- Перспективное правильное текстурирование
- Текстурирование времени. Наложение текстур с линиями Безье.
- Полиномиальное наложение текстур. Архивировано 7 марта 2019 г. на сайте Wayback Machine Interactive Relighting for Photos.
- 3 Métodos de interpolación a partir de puntos (на испанском языке) Методы, которые можно использовать для интерполяции текстуры, зная координаты текстуры в вершинах многоугольника.
- Инструменты 3D-текстурирования