Пиксель. История одной точки - Элви Рэй Смит
Шрифт:
Интервал:
Фракталы
Лорен Карпентер прислал самое впечатляющее резюме из всех, которые я просмотрел, пока «отмывался» в Лаборатории реактивного движения. Он отправил даже не резюме — просто несколько цветных фотографий 8 на 10 с компьютерными изображениями горы, напоминающей гору Рейнир в Сиэтле, неподалеку от офиса Boeing, где он работал. Очевидно, что Лорен освоил мастерство создания фракталов, нового способа моделировать природные сцены (такие, как заснеженные горы) с убедительными естественными деталями. Лорен — очень умный парень. Он отлично знал, что ему нужно лишь показать нам фотографии, и мы сразу всё поймем. Конечно же, мы захотели заполучить его!
Я тут же позвонил ему, но Лорен отказался что-либо обсуждать, пока я не увижу компьютерный анимационный фильм, который он делал для предстоящей Siggraph, большой ежегодной конференции по компьютерной графике, которая намечалась в конце лета 1980 года в Сиэтле. Мы с Эдом сидели в первом ряду, когда Лорен показывал свой короткометражный фильм «Vol Libre». В нем демонстрировались фрактальные горы — с чайником, утопающим в огромном «естественном» ландшафте, — и, когда зажегся свет, аудитория взорвалась аплодисментами. Сразу после его короткого выступления я бросился на сцену и потребовал: «Сейчас?» «Сейчас», — ответил он. Мы сразу же взяли его в Lucasfilm.
Рис. 8.1
Фракталы — отличный способ использования Усиления для превращения одного треугольника графической модели в миллионы. Эта простая идея показана на рисунке 8.1. Единственный явный шаг, который делаем мы, жалкие человеческие существа, показан в верхнем ряду: мы берем точку на одной из сторон и смещаем ее в трех измерениях на небольшую величину. Например, мы поднимаем среднюю точку над плоскостью исходного треугольника на расстояние, незначительное по сравнению с длиной стороны. Точно так же смещаем точки на двух других сторонах. Фактическое смещение в каждом случае происходит в случайном направлении и на произвольное расстояние, а получившиеся точки соединяются друг с другом прямыми линиями. Другими словами, исходный треугольник заменяется четырьмя меньшими треугольниками, как показано на рисунке, и они оказываются в трехмерном пространстве вместо плоскости. Это шаг 1.
Наша человеческая работа завершена. Компьютер со своей потрясающей способностью Усиления вступает в игру и применяет тот же трюк к каждому из четырех треугольников, только что созданных на шаге 1. В результате получится первая картинка слева в нижнем ряду. Четыре треугольника превращаются в шестнадцать. Это шаг 2. Затем компьютер делает то же самое с каждым треугольником, созданным на шаге 2, чтобы получить второе изображение в нижнем ряду. И так далее, пока наш первоначальный треугольник не станет очень похож на гору. Усиление заменило один треугольник в нашей модели на 1024 треугольника всего за пять шагов. Каждый шаг становится все труднее для человека, но не создает проблем для компьютера. За десять шагов фрактальная техника превращает наш маленький треугольник в гору из более чем миллиона треугольников. А пятнадцать шагов дадут более миллиарда крошечных треугольников. Трудно найти более яркий пример потрясающей работы Усиления. Это также свидетельствует, как легко нас одурачить сложностью.
Лорен прислал мне фотографии фрактальной горы, созданной именно таким образом. Он раскрасил каждый треугольник в соответствующий цвет, чтобы рисунок выглядел как заснеженная гора землисто-коричневого и древесно-зеленого цветов. Было очевидно, что он мастер фрактальных технологий.
Избавиться от пластмассы
Теперь мы знали, как делать горы, но еще одна проблема заключалась в том, что поверхности объектов компьютерной графики всегда казались сделанными из пластика. Посмотрите на пример затенения Фонга с шагом 10X, примерно 1973 год (рис. 7.19). Шар блестяще-синий, с белым, резко очерченным бликом. Он похож на синий пластиковый мяч.
В то время бытовало немало предубеждений о том, как должны выглядеть компьютерные изображения. Люди полагали, что все, созданное на компьютере, будет выглядеть жестким, зубчатым или граненым — одним словом, «компьютерным». По мере устранения проблемных характеристик понятие «компьютерное» эволюционировало, и новым стандартом для внешнего вида компьютерных изображений стало «пластмассовое». Нашему стремлению сделать кино на компьютере вряд ли бы помогло то, что слово пластмассовое по отношению к компьютерной графике воспринималось как синоним примитивного или искусственного.
Однако Роб Кук, один из аспирантов Дона Гринберга в Корнелле, придумал, как преодолеть «пластмассовость». Его новая техника позволяла визуализировать поверхности, которые казались сделанными, скажем, из меди, дерева или алюминия, а не из пластика. Он включил в компьютерную графику больше физики, а именно взаимодействие света с материалами. Цвет светового блика и его форма дают людям представление о материале, отражающем свет. Матовый он или глянцевый — тоже имеет значение. Все это относится к факторам внешнего вида компьютерной модели. С появлением этого понятия затенение приобрело еще большее значение.
Этот парень тоже должен присоединиться к нам! Поэтому я позвонил Робу и предложил ему работу. Он уточнил, сможет ли на некоторое время остаться в Корнеллском институте и получить степень магистра. «Предложение в силе только сейчас», — ответил я, и он согласился. Позже я узнал, что Дон Гринберг собирался организовать бизнес, основанный на огромном таланте Роба. Однако он счел несправедливым лишать того возможности присоединиться к замечательной группе в Lucasfilm, хотя и очень сожалел об этом. Тем не менее Роб в итоге получил степень у Гринберга.
Язык затенения — концептуальный скачок
В Lucasfilm гений Роба Кука расцвел. Он довел процесс затенения до концептуального предела с помощью языка затенения, или шейдинга. То есть он создал грамматику для разговора о затенении. Переход от программ, написанных под конкретную задачу, к языку — это всегда значительный прогресс в компьютерных науках. С похожей идеей от Кука немного отстал Кен Перлин из Нью-Йоркского университета.
Компьютерные вычисления, как описано в главе о Тьюринге, — это список тщательно определенных шагов, выполняющих бессмысленные действия, такие как замена каждой единицы на 0 и наоборот или сдвиг всех битов на одну позицию вправо. Сам Тьюринг сделал первый шаг к компьютерному языку, предложив понятие подпрограммы: короткий список бессмысленных шагов, который часто используется, получает имя; тогда программист может думать о вычислениях как о списке таких подпрограмм, а не как о лежащих в их основе утомительных пошаговых инструкциях.
Я сравниваю понятие подпрограммы с разбиением книги на главы, глав на абзацы, а абзацев на слова. Такая иерархия помогает нам отслеживать огромное количество крошечных бессмысленных шагов — или слов в случае с книгой. Программист обычно знает и бессмысленные шаги, и подпрограммы, как автор знает и слова, и их организацию в абзацы и главы.
Следующий
Поделиться книгой в соц сетях:
Обратите внимание, что комментарий должен быть не короче 20 символов. Покажите уважение к себе и другим пользователям!