Пиксель. История одной точки - Элви Рэй Смит
Шрифт:
Интервал:
Хорошее приближение получается, если мы смешаем идею случайной неравномерной «дрожащей» сетки с идеей субдискретизации. На рисунке 8.6 показан массив подвыборок 4 на 4, связанных с одним пикселем (большой точкой), без случайного «дрожания» слева и с таким «дрожанием» справа. То, что слева, мы видели раньше при обсуждении подвыборки (рис. 7.10). Сравните схему выборки справа с фотографией сетчатки обезьяны. Математика, используемая для смещений подвыборок, обеспечивает ограниченный тип случайности без слипания выборок или больших областей, где отсутствуют подвыборки.
Рис. 8.4
Математика показывает: это «обезьянье» решение заменяет неприемлемый регулярный алиасинг (например, зубцы по краям) допустимым шумом. Низкоамплитудный шум мы просто не видим. В нем нет заметной закономерности. Это «дрожание» применяется по-разному, и не только в компьютерной графике. Общая идея называется методом Монте-Карло (в честь знаменитого казино в Монако). Именно он использовался при моделировании взрывов водородных бомб и стал первой программой, выполненной на ENIAC+ (который соревновался за звание первого компьютера с Baby, во всяком случае по нашей версии).
Подумайте о дерзости подобного решения в компьютерной графике: только один цвет в итоге передает огромную сложность, существующую в визуальной сцене внутри одной ячейки воображаемой сетки-экрана. Чтобы лучше разобраться, посмотрите на рисунок 8.7, где показан знаменитый лохматый персонаж Джеймс П. «Салли» Салливан из мультфильма «Корпорация монстров» студии Pixar (2001) (здесь мы на мгновение отклоняемся от строгой временной шкалы закона Мура, чтобы подчеркнуть важный момент; дополнительную информацию о мехе читайте в комментариях на сайте). Рядом с его изображением — крупный план меха Салли из одной ячейки сетки-экрана. (Признаюсь честно: персонажи «Корпорации монстров» не моделировались в таком очень высоком разрешении! Это просто пример, что предложила бы базовая модель меха, если бы она рассчитывалась при таком разрешении.) Решение для компьютерной графики, которое мы ищем, — это один цвет (цвет пикселя, расположенного на месте большой белой точки), который передаст оптическую сложность этой мохнатой ячейки на изображении Салли слева. Согласно нашей идее, нужно использовать субдискретизацию с «дрожанием», потому что вычисление фактического среднего цвета окажется слишком сложным. Нам не нужно знать все цвета в каждой точке квадратной ячейки справа. Нам достаточно знать только цвета в 16 случайно выбранных точках.
Рис. 8.5
Рис. 8.6
Рис. 8.7
Об аппроксимации
Давайте вернемся к приближению маленьких квадратиков, прежде чем двигаться дальше. Я утверждал, что окончательный цвет пикселя — это среднее значение цветов, видимых в каждой ячейке сетки-экрана. Другими словами, предположим, что этот ячеечный фильтр будет использоваться в качестве разбрасывателя для восстановления цветовой непрерывности из дискретных пикселей. Такой фильтр дает каждому отсчету из подвыборки равный вес. Но из главы о Котельникове мы знаем, что подобный фильтр — это худший разбрасыватель из всех, которые допускается использовать в теореме отсчетов.
Ячеечный фильтр и близко не достигает точности идеального фильтра или даже нескольких известных приближений к идеалу, таких как разбрасыватель Катмулла — Рома или B-сплайн с их средними пиками и плавными плечами. Они не назначают подвыборкам одинаковый вес и всегда учитывают вклад областей вокруг соседних пикселей. Тем не менее компьютерная графика десятилетиями использовала именно ячеечный фильтр как грубое приближение — главным образом потому, что закон Мура только недавно обеспечил достаточную вычислительную мощность для более качественной выборки и реконструкции. Более точные приближения к правильной выборке геометрически определенного мира с более подходящими разбрасывателями сейчас только изучаются, поскольку закон Мура продолжает работать. Цель по-прежнему заключается в улучшении качества изображения.
Размытие движения
Я пропустил один очень важный шаг в приведенном выше обсуждении рендеринга фильма. В главе про кино и анимацию мы говорили, как размытие движения в кадре классического фильма на кинопленке подсказывает нашему мозгу, как воспринимать движение из неподвижных кадров, которые проецируются 24 раза в секунду. Мы быстро поняли, что анимация без размытия движений потерпит неудачу — классическим провалом обернулись дергающиеся скелеты Рэя Гаррихаузена в «Ясоне и аргонавтах» (1963), которые также обсуждались в той главе.
Эд Катмулл, еще в Нью-Йоркском технологическом институте, постоянно напоминал остальным сотрудникам лаборатории о необходимости размытия движения и сам начал работать над решением, позволяющим реализовать его в компьютерной анимации еще тогда, в середине 1970-х годов. Позже в Lucasfilm он подчеркнул актуальность проблемы и объявил конкурс на лучшее решение. Наверняка он считал, что сам одержит победу, потому что уже много лет занимался его поисками. Удивительно, но выиграл не он сам, а его лидерские качества. Роб Кук, Лорен Карпентер и Том Портер — гениальная троица сначала в Lucasfilm, а затем в Pixar — решили проблему.
Роб и Лорен придумали метод «дрожащей» подвыборки для сглаживания в пространстве. Потом Том понял, что та же идея сработает и с выборкой во времени. Так и получилось. Один прием решил обе проблемы. Идея заключается в разделении времени, в течение которого затвор виртуальной камеры открыт, на «подкадры». Например, предполагается, что каждая квадратная область, которая подвергнется субдискретизации массивом 4 на 4 «дрожащих» субдискретизаций в пространстве, разделена во времени на 16 субкадров, 16 интервалов времени между открытием и закрытием затвора (рис. 8.8). Затем каждая (пространственная) подвыборка берется в отдельном (временнóм) подкадре и случайным образом смещается в пределах временного интервала, занимаемого подкадром. Результаты усредняются в пространстве и времени, чтобы один цвет представлял ячейку с размытием движения. Пространственные подвыборки предыдущего изображения размером 4 на 4 со случайным смещением помещаются во временнýю область, по одной на каждый из 16 подкадров, и далее случайным образом распределяются в пределах временнóго интервала, занимаемого подкадром. Каждая пунктирная линия начинается с подкадра «затвор открыт». Подробно показаны пространственные и временны´е координаты для двух подвыборок, для седьмого и двенадцатого подкадров. Для ясности показаны только две пунктирные линии, продолженные до подкадра «затвор закрыт».
Том Портер создал зрелищную иллюстрацию, изображающую бильярдные шары, для этого прорывного момента Центральной Догмы (рис. 8.9). Естественно, он назвал ее «1984» и в том же году продемонстрировал ее на Siggraph. При ее создании использовалась подвыборка с «дрожанием» для имитации размытия движения, а также решались некоторые другие проблемы, такие как мягкие тени. Удивительная команда из Кука, Карпентера и Портера — я назвал их Пролетарин
Поделиться книгой в соц сетях:
Обратите внимание, что комментарий должен быть не короче 20 символов. Покажите уважение к себе и другим пользователям!