Исследование методов текстурирования ландшафта со сложным рельефом

NovaInfo 55, с.33-42, скачать PDF
Опубликовано
Раздел: Технические науки
Просмотров за месяц: 8

Аннотация

В статье проведено исследование методов текстурирования ландшафта со сложным рельефом. Изучены все существующие методики, их особенности и области применения. Сделаны выводы о применимости различных методов для текстурирования ландшафта со сложным рельефом.

Ключевые слова

ЛАНДШАФТ, СЛОЖНЫЙ РЕЛЬЕФ, РЕЛЬЕФ, РЕЛЬЕФНОЕ ТЕКСТУРИРОВАНИЕ, КУБИЧЕСКОЕ ТЕКСТУРИРОВАНИЕ, ПРОЦЕДУРНОЕ ТЕКСТУРИРОВАНИЕ, ТЕКСТУРИРОВАНИЕ

Текст научной работы

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

В некоторых случаях при решении задач для реализации виртуального мира создание текстур в линейных редакторах изображений типа Photoshop или GIMP становится невозможным. Одной из таких задач является создание текстур ландшафтов. Текстуры позволяют увеличить детализацию изображения, не добавляя в сцену дополнительную геометрию, и поэтому широко распространены в трехмерной графике. Ключевой особенностью текстур ландшафтов являются их огромные размеры — например, 8192⋅8192 пикселей. На рисование всех необходимых текстур ландшафта вручную при помощи графического планшета уйдут недели, а внесение хоть каких-то минимальных изменений будет отнимать дни. Всё это является совершенно необоснованным, если у проекта есть хоть какие-то временные ограничения, не говоря уже о неудобстве работы с текстурами таких размеров.

Рассмотрим подробнее методы создания и наложения текстур. В компьютерной графике выделяют следующие методы создания текстур:

  • создание текстуры путем рисования в 2d редакторе;
  • создание текстур в 3d пакетах для рисования;
  • разработка текстуры на базе процедурных карт;
  • комбинирование процедурных техник 2d и 3d формата.

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

  • MIP-текстурирование;
  • Parallax mapping;
  • Кубическая текстура;
  • Мегатекстура;
  • Bump mapping;
  • Nornmal mapping;
  • Процедурное текстурирование.

Рассмотрим данные методы подробнее.

Метод MIP-текстурирования

MIP-текстурирование — метод, использующий набор копий одной текстуры с разной детализацией. При этом каждое следующее изображение в наборе вдвое меньше предыдущего, начиная с размера, равного реальному размеру текстуры, и до размера 1х1 тексель (рис.1).

Пример Мип-карты
Рисунок 1. Пример Мип-карты

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

Предположим, что на 3D модель наложена текстура размером 512х512. Модель расположен на достаточно удаленном расстоянии камеры и геометрические размеры на экране у нее малы. При отключенном мип-текстурировании видеокарте придётся выбирать, какой тексель из большой текстуры будет использован для расчёта цвета точки. При этом выбор точки для расчета может изменяться в зависимости от изменения ракурса камеры, что приведёт к мерцанию объектов и снижению качества всей сцены в целом. При включенном же мип-текстурировании видеокарта будет выбирать наиболее подходящий к размеру объекта размер текстуры, и только потом будет производить выборку из него, что избавит итоговое изображение от нежелательных эффектов.

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

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

Метод интерполяции цветов

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

Пример работы алгоритма интерполяции
Рисунок 2. Пример работы алгоритма интерполяции

При таком подходе не смотря на то, что любое RGB-изображение, сохраненное в RAW формате, может быть использовано в качестве карты цветов (каждый пиксель изображения описывается тремя байтами — значение Red, Green, Blue компонент цвета), важно помнить, что ширина и высота этих файлов должны быть равными размеру карты высот.

Bump mapping

Метод заключается в том, что отклонение каждого пикселя от нормали к поверхности просчитываемого объекта смотрится в карте высот (поле высот) и применяется перед обсчётом освещения. Этот метод позволяет без использования дополнительной детализации создавать иллюзию глубины на поверхности модели с помощью расчетов освещения.

Карты bump, являющиеся одним из старейших типов карт — это черно-белые 8-битные изображения. Назначение карт bump в том, чтобы сообщить 3D-редактору указания по поводу деформации геометрии вверх или вниз. Когда значения карты bump близки к 50% серого, с поверхностью, практически, ничего не происходит. Когда изображение ярче, ближе к белому, детали выдавливаются, а когда изображение темнее, ближе к черному, то детали вдавливаются в поверхность.

Не смотря на то, что данный метод является одним из старейших методов наложения текстур, карты bump отлично подходят для создания на поверхности модели мелкой детализации, например, волн песка или морщин на коже. Кроме того, их сравнительно легко создать в таком 2D-редакторе, как Photoshop, помня при этом, что работать нужно только с черно-белыми цветами. Недостатком метода можно считать то, что детализацию, созданную с их помощью, можно не увидеть, если посмотреть на объект с неверного ракурса. А так же то, что детализация не изменяет силуэт модели, поскольку карты bump создают ложную, а не реальную детализацию.

Nornmal mapping

В трёхмерной графике это один из самых эффективных способов создания реалистичных детализированных поверхностей без использования процедуры увеличения количества полигонов трёхмерной модели. Метод аналогичен ump mapping, но для хранения информации о рельефе используются текстуры, в которых кодируются данные не о высоте точек поверхности, а об отклонении нормалей поверхности.

Карты нормалей или normal-карты — это улучшенные карты bump, которые так же создают ложную детализацию, не добавляя дополнительных деталей геометрии в сцене, но эта иллюзия в корне отличается от той, которую создают карты bump. Normal-карты работают с RGB-информацией, которая соответствует X, Y и Z значениям в 3D-сцене и сообщает 3D-редактору точное направление нормалей к каждому полигону поверхности. Ориентация нормалей поверхности необходима 3D- редактору для выбора цвета полигона (рис. 3).

Normal-карта и результат ее применения
Рисунок 3. Normal-карта и результат ее применения

Normal-карты бывают трех типов:

  • tangent space» — наиболее распространенный тип, используют координатное пространство текстур, сочетают в себе в большей мере оттенки синего цвета; подходят для мешей, которые должны деформироваться при анимации, для персонажей;
  • object spaсe» — используют координатное пространство модели, окрашены в различные цвета, просчитываются немного быстрее карт типа «tangent space»; подходят для статичных объектов, не испытывающих деформаций;
  • world spaсe» — похожи на object spaсe, но зависят от мировых координат; используются только для статичных объектов.

Карты нормалей создаются путём запекания на основе высокополигональных, высокодетализированных реалистичных трёхмерных моделей, после чего они накладываются в канал смещения Bump и начинают работать.

Parallax mapping

Parallax mapping — программная методика в трёхмерной компьютерной графике, также известная как displacement mapping. Основана на применении карт displacement, которые способны реализовать детализацию приближенную к реальной. Используется в случае необходимости создания дополнительной физической детализации объекта сцены. Для создания карт displacement объекту искусственно увеличивают количество полигонов, чтобы хватило разрешения для создания реалистичной геометрии. Т.е. карты влияют на общую геометрию и форму моделей, что в итоге дает достаточно высокую степень детализации объектов.

К достоинствам карт displacement можно отнетсти то, что их можно создать с высокополигонального объекта. Карты displacement, как и карты bump, работают с черно-белыми значениями цветов. При этом с легкостью можно использовать как 8-битные карты displacement, которые более подходят для двумерных сцен, так и 16- или 32-битные карт displacement. Однако, создание дополнительной детализации в режиме реального времени требует значительных дополнительных временных затрат. Кроме того, большинство 3D-редакторов просчитывают displacement уже при рендеринге. Поэтому, по сравнению с картами bump и normal, карты displacement могут серьезно сказаться на времени визуализации.

Кубическое текстурирование

Кубическая текстура — методика в трёхмерной компьютерной графике, которая принимает трёхмерную координату текстуры и возвращает тексел из данной кубической карты.

Суть методики — в использовании кубической карты для отображения трёхмерной координаты текстуры в тексель при построении изображений отражения окружения в поверхности объекта. Кубическая карта представляет собой развёртку шести граней куба, каждая грань которого содержит текстуру. Каждая текстура отображает вид окружения, которое видно из одной точки зрения в шести направлениях. Текстурная координата является вектором, который определяет, как смотреть из центра куба, чтобы получить желаемый тексель. На основе данного метода текстурирования создаются SkyBox`ы, панорамы горизонтов.

Идея скайбокса в визуализации большого куба и размещения зрителя в центре. При движении камеры куб следует за ней, поэтому зритель никогда не достигнет «горизонта» сцены. Это похоже на реальный мир, где мы видим как облака «касаются» земли на горизонте, но когда мы движемся вперед, горизонт остается на том же расстоянии (в зависимости от рельефа).

Специальный вид текстур отображается на куб. Эта текстура создается таким образом, что если ее разрезать и правильно сложить, то ее границы совпадут по рисунку друг с другом, и для того, кто внутри, будет ощущение, что текстура единая.

Пример кубической текстуры
Рисунок 4. Пример кубической текстуры

Данное текстурирование аналогично двумерному текстурированию со скалярным произведением, но здесь вводятся два промежуточных скалярных произведения, три из этих полученных значения используются для доступа к кубической текстурной карте.

Технология мегатекстуры

Данный метод наложения текстур предоставляет возможность распределения текстур и облегчает визуализацию открытых уровней. При использовании данного метода весь ландшафт виртуального мира вместо множества мелких текстур покрывается одной текстурной картой — мегатекстурой. Хранится такая мегатекстура на жёстком диске и, при необходимости, подгружается в память видеокарты. Это позволяет создавать большое количество деталей и разновидностей ландшафта при сравнительно малых объемах используемой оперативной памяти.

Существует несколько версий мегатекстуры на разных уровнях детализации, на каждом из которых выполняется разделение текстуры на квадраты одинакового размера. Например, мегатекстура 32768×32768 пикселей, покрывающая участок в 640×640 метров, при максимальной детализации разделяется на 32×32 квадрата размером 1024×1024 пикселя (20×20 м). Первый уровень детализации состоит из 16×16 квадратов того же размера (1024×1024 px), но вдвое меньшего разрешения (то есть, размер каждого квадрата — 40×40 метров), второй — из 8×8 квадратов по 80 м каждый, и т. д.

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

Процедурное текстурирование

Процедурное текстурирование — это метод создания текстуры, при котором цвет каждого пикселя изображения формируется алгоритмически, что позволяет примененять различных математических функций, например, шум Перлина (Perlin oise), и реализовывать анимацию. При этом такой метод подразумевает неограниченный уровень детализации каждой текстуры, так как текстура генерируется сразу под необходимый для ее отображения размер.

Наиболее часто процедурные текстуры используются в тех случаях, когда возможно сравнительно просто описать объекты математически: разные виды шума (например, fractal noise), дерево, вода, лава, дым, мрамор, огонь и т.п..

По сравнению с традиционными методами процедурная генерация текстур обладает следующими преимуществами:

  • Возможность вносить изменения в любой этап формирования изображения. Практически все приложения, использующие процедурное генерирование текстур, построены на блочной архитектуре, которая позволяет составлять логические цепочки любой сложности с помощью добавления элементарных блоков и создания связей между ними. Такой подход позволяет переходить в разные цветовые пространства на любом этапе (например, собирать/разбирать картинку на RGB или HSL компоненты);
  • Возможность масштабирования текстур без потерь детализации. Так как процедурная генерация строится на математических функциях, а не на растровых изображениях, то какое бы разрешение для объектов мы в дальнейшем не выбрали, чёткость текстур от этого не ухудшится;
  • Высокая скорость формирования новых материалов и подобных текстур на основе существующих путем их модифицирования и комбинирования;
  • Быстрое изменение финальной текстуры путём изменения параметров генератора на любом этапе работы;
  • Возможность использования процедурных генераторов для создания базовой текстуры с дальнейшей её растеризацией и обработкой уже в растровых редакторах изображений;
  • Малый размер хранимых данных. В файл сохраняется только описание алгоритма, занимающее несколько килобайт, а не большие объемы растровых данных по 4 байта на пиксель. При этом одну и ту же текстуру можно использовать как входную сразу в нескольких обработчиках, а не копировать её каждый раз.

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

Выводы

В современном текстурировании метод интерполяции цветов может применяться в случаях если необходимо быстро моделировать ландшафт, его рельеф с как можно малым временем для отображения результатов редактирования. Метод MIP-текстурирования можно применять лишь частично при создании ландшафта, основное его применение это создание текстур для моделей игроков, зданий, мобов.

Bump mapping как и normal mapping как индивидуальные методы более не применяются, на смену им пришел комплексный метод рельефного текстурирования parallax mapping, который использует три вида текстурных карт для создания реалистичного рельефа модели.

Кубическое текстурирование в наше время применяется крайне редко, на его основе создаются в основном SkyBox`ы, панорамы горизонтов.

Технология мегатекстуры активно применяется при создании объектов зданий, ландшафтов и других больших статичных объектов.

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

Читайте также

Список литературы

  1. Яковлев, Д.С. Использование «мегатекстуры» для моделирования ландшафтных изображений / Д.С. Яковлев, М.Н. Фаворская // Автоматика. Вычислительная техника. – К.: Сибирский государственный аэрокосмический университет им. акад. М.Ф. Решетнева, 2010. С. 387-388.
  2. Ian D. Visualization in Landscape and Environmental Planning: Technology and Applications, Taylor and Francis, MA: Boston, 2005. – 320p.
  3. Применение процедурных генераторов в создании контента для real-time 3D приложений: Часть 1. Oil Rush. https://habrahabr.ru/company/unigine/blog/167075/
  4. Применение процедурных генераторов в создании контента для real-time 3D приложений: Часть 2. Valley Benchmark https://habrahabr.ru/company/unigine/blog/184614/
  5. Котов В. К вопросу об импорте 3D моделей в программы с использованием графической библиотеки OpenGL [Электронный ресурс] / В. Котов, О.Ф. Абрамова // Современная техника и технологии. - 2014. - № 1. - C. Режим доступа : http://technology.snauka.ru/2014/01/2965.
  6. Трифанов А.И. Реализация собственного метода визуализации водной поверхности «скользящая текстура» / А.И. Трифанов, О.Ф. Абрамова // Современные наукоёмкие технологии. - 2013. - № 8 (ч. 1). - C. 96-97
  7. Абрамова О.Ф., Книжко А.В. СОЗДАНИЕ РЕАЛИСТИЧНЫХ МОДЕЛЕЙ В ВЫСОКОНАГРУЖЕННЫХ ПРОЕКТАХ // NovaInfo.Ru (Электронный журнал.) – 2016 г. – № 44; URL: http://novainfo.ru/article/5573

Цитировать

Абрамова, О.Ф. Исследование методов текстурирования ландшафта со сложным рельефом / О.Ф. Абрамова, А.В. Книжко. — Текст : электронный // NovaInfo, 2016. — № 55. — С. 33-42. — URL: https://novainfo.ru/article/8950 (дата обращения: 08.06.2023).

Поделиться