📚 Hub Books: Онлайн-чтение книгРазная литератураПиксель. История одной точки - Элви Рэй Смит

Пиксель. История одной точки - Элви Рэй Смит

Шрифт:

-
+

Интервал:

-
+
1 ... 103 104 105 106 107 108 109 110 111 ... 170
Перейти на страницу:
и утомительный процесс. Нам достаточно знать геометрию всех объектов и расположение источника света. Таким образом, легко вычислить, какие поверхности находятся в тени. Этим фактом можно воспользоваться позже, чтобы определить, какой цвет отобразится на дисплее, если мы будем смотреть на объект из точки, расположение которой не совпадает с источником света. Позже рост вычислительной мощности — в соответствии с законом Мура — позволил использовать несколько источников света с разной протяженностью и цветом. И, как обычно, благодаря Усилению программистам достаточно просто разработать алгоритм — наши компьютеры добросовестно выполнят его миллионы и миллиарды раз.

Карты текстур

До сих пор мы видели только треугольники с однотонным сплошным цветом — это простейшая из моделей затенения. Они максимум меняли яркость, если находились в тени или поворачивались к источнику света. Специалисты в области компьютерной графики быстро научились создавать изображения более причудливыми способами, поскольку закон Мура уже давал им больше возможностей. Например, яркость цвета изменяется по мере увеличения расстояния от виртуальной камеры (глубины) или удаления от известного источника света (рис. 7.16, слева). Треугольники могут быть частично прозрачными (рис. 7.16, второй слева). Треугольники заполняются текстурой — пикселями из другого изображения, например травы или джинсовой ткани (рис. 7.16, третий слева). По сути, здесь используется метод наложения текстур, о котором я вкратце говорил при обсуждении симулятора NASA-1. А еще можно использовать комбинации всех трех методов (рис. 7.16, справа). Это лишь несколько примеров из бесконечного множества. Отображение текстур основано на фундаментально очень мощной идее. И это яркий пример сочетания Цифрового Света на основе пикселей с Цифровым Светом на основе геометрии. Согласно этой идее одно цифровое изображение управляет тем, как выглядит другое. На ее основе разработано немало методов. Наложение текстур — первый из них.

Рис. 7.16

Мы уже видели, как Род Ружло и Боб Шумахер реализовали аналоговую версию этой идеи в симуляторе NASA-1 для проекта «Аполлон». Поскольку строка сканирования через геометрический треугольник преобразовывалась в цвет на телевизионном дисплее, он получался в результате геометрического вычисления, которое обращалось к растровому массиву цветных геометрических фрагментов. После соответствующего вычисления цвет (аналоговый) отправлялся на дисплей.

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

На рисунке 7.17 в левом верхнем углу изображен треугольник. У треугольника, хранящегося во внутренней модели компьютера, нет цвета. Все его цвета косвенно хранятся в карте текстур, изображенной справа в виде фотографии желтой розы.

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

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

Рис. 7.17

Таким образом, роза — это пример изображения, которое используется для управления цветами другого изображения. Воспринимайте наложение текстуры как наклеивание на треугольник наклейки или переводной картинки. Или думайте о треугольнике как о формочке для печенья, а о текстурной карте — как о тесте. Прилепите наклейку или вырежьте кусочек печенья под любым углом, например 10 градусов, как здесь на рисунке. Но наклейки и тесто для печенья — это гладкие непрерывные вещи. Смысл этих метафор открывается, только если помнить, что текстурную карту всегда можно реконструировать в гладкое непрерывное изображение, «разбрасывая» и складывая пиксели в соответствии с теоремой отсчетов.

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

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

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

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

Затенение становится более реалистичным

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

1 ... 103 104 105 106 107 108 109 110 111 ... 170
Перейти на страницу:

Комментарии

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

Никто еще не прокомментировал. Хотите быть первым, кто выскажется?