ТИТАНОМАХИЯ #2: Анри Гуро. Генерал иллюзий
Приветствую! Меня зовут Константин, я UI/UX-инженер и программист в студии Elverils. Недавно завел личный блог в Тelegram, чтобы публиковать свои мысли, но достаточно быстро уткнулся в пределы формата. Понял, что такой материал уже стоит оформлять в виде статей. Render.ru мне кажется наиболее удачным порталом в плане интерфейса и сообщества, поэтому надеюсь публиковаться здесь. Будем знакомы!
Этим постом я хочу начать цикл рассказов Титаномахия. О ключевых гениях, повлиявших на игровую индустрию и 3D-графику. О титанах мысли, идеями которых мы пользуемся по сей день. Данный рассказ получается по номеру вторым. Первый мини-рассказ про Иоганна Ламберта не дотягивал до уровня статьи, поэтому при желании вы можете прочесть его отдельно в моем телеграме.
________________
ГЕНЕРАЛ ИЛЛЮЗИЙ
Могут ли рождаться титаны от титанов? Может ли гениальность передаваться по наследству? Анри Гуро был родом из прославленной семьи военных, из которой вышел не один французский полководец. Его дед-тезка руководил одной из французских армий на полях Первой Мировой и своими талантами увековечил себе имя не только среди французов, но и был награжден орденом лично Николаем II. Неудивительно, что Анри с юности был воспитан в любви к воинской культуре, которая в его жизни сыграет немалую роль.
Начиная с 1968го года, в университете Юты образовалась мини-диаспора французских аспирантов, именуемая в их среде «французским связным». Они приезжали по одному, по два, волнами, зазывая своих коллег из Европы. Среди них был и Анри Гуро, молодой аспирант, искавший для себя возможности послужить науке. Как он сам признавался, тогда он ничего не знал о 3D-графике (потому что тогда о ней мало кто вообще знал) и попал в Юту, кузницу будущей индустрии, по совету коллег:
«Я прибыл в Юту осенью 68-го со своей женой Сильвией. Я был новичком, у меня не было никакого представления об исследовательской культуре в США. Они сказали мне, что вот деньги на дорогу, отправляйтесь в Сан-Франциско, там осенью проходит Объединенная компьютерная конференция (Joint Computer Conference), вы многому научитесь. И там я впервые услышал обсуждения про матричный умножитель (Matrix Multiplier). отсекающий делитель (Clipping Divider) и прочее. Я ни с кем там не познакомился, был застенчив. Я ходил вокруг, впитывая все, что слышал, и вернулся оттуда с горящими глазами»
Вернувшись с конференции, Анри тотчас же пошел аспирантом к Айвену Сазерленду, отцу-основателю компьютерной графики, работать с ним над насущными задачами графики трехмерной.
Так сложилось, что незадолго до этого, в начале 60х, сразу два французских инженера-математика, работавших в автопроме, Поль де Кастельжо в «Ситроен» и Пьер Безье в «Рено», независимо друг от друга изобрели алгоритм моделирования кривых. Этот алгоритм был назван кривыми Безье. На основе него, Стивен Кунс, профессор Массачусетса, создал их трехмерный аналог, свои знаменитые лоскуты (Coons patches). Но они, будучи удобными в векторной графике, требовали трудоемких вычислений, что не вполне подходило для графики растровой.
Анри заинтересовался этой проблемой. Не только по причине того, что ей занимались его соотечественники, но и также потому, что увидел распутье на который встала 3D-графика: между гибкими, сложно обсчитываемыми полигонами (сплайнами), что затормозило бы развитие 3D-графики по причине требований к мощностям компьютеров, и плоскими полигонами, которые были легче в обсчете, но не могли передавать плавные изгибы. Распутье, которое разрешить суждено было ему.
Сверху: Пример вычисления нормали вершины на лоскуте Кунса в диссертации Гуро,
Снизу: Сравнение Flat и Smooth shading'a
Анри осознал, что отказываться от плоских полигонов при построении кривых поверхностей нельзя и нужно каким-то образом создать иллюзию их изгибов. Но как это сделать? Разгадка таилась в особенностях человеческого восприятия. Гуро стал посещать лекции легендарного профессора Томаса Стокхэма, титана-создателя цифрового аудио. На этих лекциях Стокхэм рассказывал о том как сетчатка глаза обрабатывает изображение перед отправкой его в мозг. Его лекции произвели на Анри большое впечатление и он попросился помогать ему в его разработке высокоточного дисплея, о котором будет рассказано ниже.
«Теории Томаса Стокхэма позволили мне увидеть вещи под другим углом. Я понял, что сетчатка всегда работает над тем, чтобы выделить детали изображения: крошечную точку на белом изображении, границы между полигонами. Это также причина, по которой уменьшение размера полигонов было иллюзорным решением, поскольку это не только увеличивало время вычислений, но и для достижения плавности перехода потребовало бы значительное увеличение разрешения экрана. Именно это натолкнуло меня на идею тонировать полигоны, чтобы размыть границы между ними и придать изображению визуальную непрерывность»
Для этой цели он решил поменять правила игры: сместить акцент с плоскостей на вершины, эти плоскости соединяющие. Но у вершин не было нормалей для вычисления света по Ламберту (в формуле которого, к слову, Гуро не изменил ни йоты). Анри это не смутило. Он пошел вопреки всем геометрическим понятиям и ввел абстракцию нормалей для вершин, что до него не делал никто! Абсурдное, не укладывающееся в голове понятие, т.к. нормали мыслились всегда перпендикулярами по отношению к поверхностям, но не абстрактным точкам. Здесь проявился его гений. Такое допущение позволило суммировать значения нормалей полигонов окружающих вершину и «записать» в ее условную нормаль изгиб самой поверхности.
Это открыло аспект иллюзорности в графике, как подтверждение того, что она не подчинена классической геометрии, а является чистой информатикой. Никаких нормалей у вершин, конечно же, нет. Сегодня это строчка в структуре вертекса, которую Гуро изящно назвал нормалью, но которая создала у людей ложное представление о геометрическом происхождении данного понятия. Таким образом, с самого раннего этапа 3D-графика показывала себя как отдельная дисциплина, теоретическую часть которой позднее назовут «машинной геометрией».
В то время память была сильно ограничена, поэтому его метод подразумевал предварительный расчет всех «нормалей» у вершин (они не сохранялись) и после применения к ним формулы Ламберта назначение параметра «I» (Intensity, т.е. освещенности) четвертым параметром в координатах вершины. У этого подхода была оборотная сторона. Метод Гуро в его изначальном виде перерасчитывал все нормали при смещении источника света. Эта проблема решилась с увеличением объемов памяти — нормали стали сохраняться, а вместо них каждый кадр рассчитывалось Intensity.
Но что такое освещенность вершины? Бесполезная на первый взгляд информация. Если полигон имел четкие границы и в их рамках можно было задавать освещенность, то как задать границы освещенности вокруг вершины? Здесь Гуро также нашел неожиданное решение — границ освещенности не предусматривалось, значение Intensity должно было интерполироваться на каждый пиксель от вершины к вершине. Таким образом контуры областей освещения становились свободными, размытыми, распространяясь градиентом по поверхности. Такое освещение было специфическим, не похожим на реальное и противоречащим даже представлениям оптики. Если в реальной жизни свет бомбардирует фотонами каждую точку на поверхности, то у Гуро только на углы этих поверхностей, что выглядело абсурдным. Но таково было художественное допущение, стилизация, благодаря которой решались ключевые проблемы.
По часовой стрелке: Высокоточный дисплей Томаса Стэкхема (1, 2), Томас Стэкхем (3), модель учебного самолета T-37 (4),
снимок первой сферы с примененным smooth-затенением на Polaroid (5)
Теории в данном случае было мало, нужно было реализовать задуманное. Это было непростой задачей, ведь растеризация в тот момент была только изобретена и даже сам Сазерленд скептически по началу отнесся к разработкам Гуро, предлагая больше внимания уделить векторной графике и ее вычислениями лоскутов Кунса, чем проблеме их отображения.
По удачному стечению, напротив кабинета Гуро располагалась мастерская Гэри Уоткинса, еще одного титана, изобретателя растрового realtime-рендеринга. Он добился ощутимого результата в отрисовке растровых поверхностей, хотя и признавал на тот момент невозможность такой отрисовки в реальном времени из-за текущих возможностей оборудования.
Оборудованием выступал тот самый высокоточный дисплей Томаса Стокхэма, над которым Анри уже работал. Дисплей был в виде трубы длиной в метр и весил под тонну, устанавливаясь на прочные инженерные балки. Отрисовка одного кадра занимала приблизительно 2 минуты. Кадр делался с плоского осциллографа на фотокамеру, поставленную на долгую выдержку и накрытую плотным коробом, не пропускающим свет. Можно было пользоваться и Polaroid'ом, чтобы не тратить время на проявку фотографий. Так, например, было сделано первое фото гладкого шара по методу Гуро.
Анри тогда попросил у Гэри копию программы рендера, которую тот написал на фортране. Посидев с ней, он внес около 30 строк кода изменений, которые и стали революцией в 3D-графике. Сделав первую фотографию сферы, он сразу показал ее Айвену, но тот только пожал плечами: «Это здорово, но не так уж и необычно».
Спустя несколько недель Айвен снова обратился к Анри с вопросом мог бы он применить свой метод сглаживания для другого объекта. Анри ответил, что для какого угодно, нужен только набор полигонов. В то время почти все диссертации по 3D-графике финансировались министерством обороны США. ВВС были заинтересованы в новых дисплеях и возможностях отрисовки графики как для моделирования, так и в реальном времени. Это был один из немногих источников финансирования, который можно было найти в те годы: автомобильная промышленность и армия. Мало кто стал бы вкладывать такие существенные деньги в долгосрочные проекты с туманной перспективой. Айвен понял, что военных может заинтересовать находка Гуро и распорядился штатному моделлеру оцифровать пластмассовую модельку учебного самолета Т-37. Когда он увидел изображение этого самолета с шейдингом Гуро, он сказал: «Ну все, у тебя есть докторская степень. Пиши диссертацию!».
По часовой стрелке: Сильвия Гуро с размеченными полигонами на лице (1, 3), модель лица Сильвии с flat и
smooth shading'ом (2), Айвен Сазерленд помогает Гуро делать снимки Сильвии (4)
Перед Гуро встала задача превратить 30 строк кода в многостраничную диссертацию. Он сделал несколько примеров с кузовами автомобилей, другими самолетами, но чего-то не доставало. И однажды за ужином он осознал, что нужно сделать «что-то мясистое», не относящееся к строгим геометрическим фигурам. «Что может быть сложнее для воспроизведения, чем лицо?!» — воскликнул он.
Это было еще одно его озарение: разделение 3D-моделирования на hard surface и organic. Он попросил свою супругу Сильвию помочь ему в этом. Он нанес на ее лицо полигоны, а сам Сазерленд помогал со съемкой. Это была первая органическая 3D-модель в истории. Применение сглаживания на ее примере сработало идеально. Модель ее лица была напечатана на обложках технических журналов и хранится до сих пор в музее науки Бостона. У Анри были планы и по лицевой анимации, но эту задачу решил уже Эд Катмулл.
В диссертации он называет свою штриховку Smooth shading, смягченное затенение. Это название до сих пор встречается в 3D-редакторах. Наименование «Gouraud shading» даст его последователь, француз вьетнамского происхождения, Буй Туонг Фонг, который присоединится к «французскому связному» в Юте уже после выхода диссертации Гуро. Чтобы различать одну модель затенения от другой, Фонг решит их проименовать, что в итоге и приживется в 3D сообществе.
При подготовке диссертации Анри прочел труд Пьера Безье в оригинале на французском, включив как приложение разбор его алгоритма. Впоследствии он встретился с ним лично, демонстрируя чего добился с помощью имитации кривых на нормалях вершин. Безье, по воспоминаниям Анри, не был впечатлен увиденным и в целом не воспринимал компьютерную графику всерьез, интересуясь не иллюзорными изображениями на дисплее, а четкими расчетами для САПР программ. Он говорил, что хотел бы взглянуть на эти модели после их изготовления, но с этим была загвоздка.
Уже позже Анри столкнется с одним из своих почитателей и тот будет весьма раздосадован тем, что использовал его модель сглаживания для своих моделек. Он расскажет, что когда попытался их распечатать на 3D-принтере, то они вышли угловатыми, вовсе не такими какими он видел их на мониторе. Гуро только улыбнется в ответ, его иллюзорная реальность, не имеющая классического геометрического представления, могла жить только в дисплее и в восприятии людей, но не могла быть перенесенной в наш мир даже через 3D-принтер. В этом и заключалось его достижение. Благодаря его революционному взгляду, 3D-графика окончательно потеряла связь с реальным миром, как и с классической геометрией, осознав себя самостоятельной иллюзией, какой и была по своей сути. Ее реалистичность не имела геометрического обоснования, поэтому те, кто искал в ней копию реальности, достаточно быстро осознали ее невозможность.
После получения докторской степени, Анри по зову сердца отправился служить в ВВС Франции, хотя ему было уже 27 лет и оставался год до окончания призывного возраста. В 1997м он получит национальный орден «За заслуги» лично из рук почтенного генерала Фошона де Вильпле, убежденного рыцаря-христианина и близкого друга его семьи. Так его судьба переплелась со славной историей предков, где он также выступил генералом, но уже войск по ту сторону дисплея, признанными не только военными всего мира, но и другими генералами иллюзий — разработчиками игр.