Текстура как она есть - Компьютерная графика и ее аппаратная реализация (обзор видеокарт)

При описании процесса рендеринга не был затронут один важный этап -- текстурирование. Не будь текстур, играли бы мы сейчас с вами в экшены с квадратными комнатами, где среди однородных стен сражаются серые чертики, которые могут разве что присниться в страшном сне... Итак, что же такое текстура и зачем она нужна? Выгляньте в окно. Если там не глубокая ночь и не пепелище после атомной бомбардировки, вы увидите много интересного и красивого. Вот, например, простые стволы деревьев. Они испещрены бороздками, их цвет меняется от светло-коричневого до черного, и так далее. У противоположного дома кирпичная кладка тоже не так проста, как кажется на первый взгляд. Каждый кирпич выдается вперед, он не однороден, его украшают щербинки и тени от листьев соседнего тополя. Между кирпичами цемент принимает самые причудливые формы, особенно если дом строили не в совсем трезвом виде (для России привычная картина). И как все это чудо смоделировать? Сколько миллионов полигонов уйдет на реалистичное отображение всех этих красот? На акселераторе какого поколения все это сможет отобразиться с приличными FPS? Представьте, что мы каждый кирпич сделали красным параллелепипедом, а между ними проложили серые плоскости, призванные изобразить цемент. Смотреться все это будет ужасно. И даже такая простая "стена" отъест несколько тысяч полигонов. Так что же делать? Ответ прост -- накладывать текстуры!

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

По аналогии с обычной картинкой, которая состоит из пикселей, текстура состоит из текселей. Есть две основные модели представления цвета и света в трехмерной графике. Первая -- знакомая многим RGB или RGBA. Здесь: R -- красная составляющая, G -- зеленая, B -- синяя, и A -- коэффициент прозрачности. Составляющая A стала поддерживаться на уровне операционной системы только в WinXP. А в графических библиотеках (Glide, DirectX и OpenGL) она поддерживалась с самого начала. Другая распространенная модель -- HSB. Ее составляющие: Hue (H) -- длина волны отраженного от объекта или поглощенного света (это также угол между вектором чистого красного и текущего цвета, символизирует цвет объекта), Saturation (S) -- насыщенность цвета, количество серого по отношению к цвету, и Brightness (B) -- яркость. На практике RGB выражается целым числом. В играх очень часто можно выбрать разрядность цвета между 16 и 32 битами. Сегодня уровне операционной системы только в WinXP. А в графических библиотеках (Glide, DirectX и OpenGL) она поддерживалась с самого начала. Другая распространенная модель -- HSB. Ее составляющие: Hue (H) -- длина волны отраженного от объекта или поглощенного света (это также угол между вектором чистого красного и текущего цвета, символизирует цвет объекта), Saturation (S) -- насыщенность цвета, количество серого по отношению к цвету, и Brightness (B) -- яркость. На практике RGB выражается целым числом. В играх очень часто можно выбрать разрядность цвета между 16 и 32 битами. Сегодня шестнадцатибитный цвет -- анахронизм. Если позволяет ваша видеокарта, всегда выбирайте 32 бита.

Текстура накладывается строго по координатам. Координаты разработчики обычно включают в сопроводительную информацию о полигонах. Очень важно грамотно "растянуть" текстуру по поверхности объекта и присвоить ей нужные координаты.

Похожие статьи




Текстура как она есть - Компьютерная графика и ее аппаратная реализация (обзор видеокарт)

Предыдущая | Следующая