ТЕМА НОМЕРА: Прибытие «Кошечки»
ТЕМА НОМЕРА: Прибытие «Кошечки»
Автор: Леонид Левкович-Маслюк
«Прибытие поезда» — так назывался самый первый кинофильм. Сегодняшние тематические материалы посвящены «Кошечке» — одному из первых в истории опытов компьютерной анимации, осуществленному тремя математиками Московского университета почти сорок лет назад. Сюжет прост: за сорок секунд кошка несколько раз проходит по экрану из угла в угол. Гораздо интереснее сюжет, связанный с работой над фильмом, его забвением на много лет и недавним возрождением в цифровой форме.
Проследив за этим сюжетом, мы в не совсем привычной перспективе увидим очень интересный эпизод из истории развития информатики в нашей стране. Авторы фильма поставили перед собой и блестяще решили совершенно новаторскую по тем временам задачу. В первом из материалов темы речь идет об основных идеях, лежащих в основе этой работы, во втором — о мотивах авторов и об обстановке, в которой она велась.
Что, как и когда
Впервые я услышал о «Кошечке» еще учась в школе. Идеолог проекта — Николай Константинов, известный всей математической Москве создатель сети математических кружков и школ и сам замечательный математик, — но о нем речь ниже. Так вот, Константинов заглянул к нам в класс и пригласил в актовый зал «посмотреть мультфильм, который нарисовала машина». Я не пошел и упустил редчайшую возможность познакомиться с работой, кардинально обогнавшей свое время. Дело было то ли в 1968, то ли в 1969 году, когда Константинов регулярно показывал этот фильм в школах и на математических олимпиадах.
Увидел же я «Кошечку» лишь несколько месяцев назад, в перерыве одного из курируемых Константиновым школьных турниров под названием «Математическая регата». Грязно-серый, слегка дрожащий, как в старинной кинохронике, фон, на котором появились имена авторов, а затем и сама кошечка, составленная из хорошо заметных тусклых квадратиков, все это не предвещало ничего захватывающего. Но кошка сделала шаг, другой — и стало ясно, что перед нами совсем не окаменелость из музея. То, что мы увидели, было живым, нахальным и независимым, и самое приятное — не имело ничего общего ни с диснеевскими, ни с союзмультфильмовскими игрушечными зверьками. Константинов, как всегда, оказался предельно точен в формулировке: это рисовал не человек при помощи машины — рисовала именно машина, обеспечивая не условно мультяшный, а буквальный, повседневный реализм движений.
С недавних пор, благодаря команде сайта «Математические этюды», каждый может самостоятельно оценить «Кошечку», найдя ее на www.etudes.ru. Там же и оригинальная статья о технологии создания фильма, напечатанная в журнале "Проблемы кибернетики" только в 1974 году. Попробуем уточнить место этой работы на эволюционной шкале компьютерной анимации.
Честно говоря, начиная исследовать историю «Кошечки», я одно время даже думал, не окажется ли она самым первым примером компьютерной анимации. Но это, конечно, не так. Например, Юрий Баяковский, один из активных участников «героического периода» становления компьютерной графики, после просмотра «Кошечки» припомнил, что еще во второй половине 50-х в ИПМ имени Келдыша РАН на машине «Стрела» (где память была на электронно-лучевых трубках, единичные биты светились, нулевые — нет) инженеры «делали анимации, заполняя соответствующим образом память ноликами и единичками». Можно предположить, что и на Западе у компьютерной анимации был длительный период «фольклорного» развития. Похоже, что официальной хронологии у компьютерной анимации пока нет, так как временные шкалы, составляемые разными исследователями, не во всем согласуются. В любом случае, «Кошечка» попадает в довольно малонаселенную зону. Компьютерная анимация в конце 60-х еще только готовилась стать индустрией, а работы первых художников, применивших ее в творчестве, иногда сразу оказывались в лучших музеях современного искусства.
Зато вполне возможно, что две базовые для анимационных технологий идеи были впервые реализованы именно в этом фильме, причем задолго до их появления в мэйнстриме.
Представление трехмерной пространственной формы в виде иерархической структуры данных. Структура напоминала октодерево (octree), задающее любую пространственную форму так: в нулевом приближении это куб, содержащий наш объект, в первом приближении — совокупность кубиков половинного размера, содержащая объект, и так далее. «Кошечка» задавалась более экономичной, адаптивной иерархией «брусков» (усеченных пирамид), аппроксимирующих ее торс, ноги, усы и т. д.
Задание траекторий движения тела при помощи дифференциальных уравнений.
Первая из идей, при всей ее важности (Мэттью Уорд даже выделяет октодерево как отдельный этап в истории компьютерной графики, относя его к 1982 году — четырнадцать лет спустя после «Кошечки»), все-таки кажется мне принципиально более простой в придумывании и реализации, чем вторая. Легко представить, что в «фольклоре» подобные методы к тому времени уже существовали (другое дело, что авторы не были связаны с этим только возникавшим тогда сообществом и сами изобретали все с нуля). А вот вторая идея значительно глубже концептуально и сложнее технически. Современные обзоры по моделированию движения человека для целей анимации (обзоров, посвященных специально кошкам или другим животным, я не нашел) относят первые работы такого типа — анимацию ходьбы на основе решения уравнений прямой или обратной кинематики и динамики — к началу или середине 80-х. В биомеханике, без всякой связи с компьютерной анимацией, первые попытки (двухмерного!) моделирования движения человека на основе задач оптимизации, приводящих к дифференциальным уравнениям, делались в начале 1970-х[Computer animation of Human Walking: a Survey (1999), Franck Multon, Laure France, Marie-Paule Cani-Gascuel, Gilles Debunne]. Вполне возможно, что подобные исследования велись в момент создания «Кошечки» и в робототехнике. Рекорды и приоритеты дело тонкое, и я бы не хотел сейчас всерьез углубляться в эту тему. Но из литературы совершенно очевидно, что вплоть до начала 80-х основной технологией компьютерной анимации оставались те или иные формы интерполяции между кадрами, различные варианты морфинга и т. п. — вещи, принципиально более простые, чем реалистичное матмоделирование живого движения, примененное в «Кошечке».
Отметим, что уравнения «Кошечки» не выводились напрямую из физических моделей мышц и суставов. Они лишь качественно воспроизводят типичные паттерны кошачьей ходьбы (неожиданные подробности читайте в интервью с Константиновым в этом номере). Реализм движений, тем не менее, очевиден. Причем не только мне. Свое мнение во врезке высказывает Рик Парент, профессор Университета Огайо (одной из колыбелей компьютерной графики), автор монографии «Computer Animation: Algorithms and Techniques», специалист по анимации человеческих фигур, а также по истории компьютерной анимации. Благодаря Паренту мы смогли проиллюстрировать этот материал кадрами одного из первых трехмерных компьютерных фильмов «Not Just Reality», сделанного Барри Весслером в Университете Юты в 1973 году.
Юрий Баяковский
Когда речь заходит о первых работах по компьютерной графике в нашей стране, сразу же вспоминается имя Юрия Баяковского (в 1990 году на конференции SIGGRaPH ассоциация aCM присвоила ему титул «Computer Graphics Pioneer»). Сейчас Юрий Матвеевич возглавляет в МГУ Лабораторию компьютерной графики и мультимедиа на факультете ВМК (graphics.cs.msu.su), но продолжает работать и в Институте прикладной математики им. Келдыша РАН, где он много лет заведовал отделом компьютерной графики и где еще в 1964 году в соавторстве с физиком Тамарой Сушкевич выполнил первую в СССР работу по «машинной графике». Это была как раз анимация, небольшой фильм об обтекании цилиндра плазмой. В 1971 году в ИПМ был разработан более совершенный софт для создания компьютерных фильмов и установлена камера для съемки кадров с экрана дисплея. При помощи этой системы вскоре были сделаны еще две впечатляющие анимации. Одна визуализировала движение робота, другая — смоделированное "приливное взаимодействие" двух галактик.
Как видим, в нашей стране первые исследования по компьютерной анимации велись в рамках научной визуализации. На мой вопрос о работах, где бы ставились и решались задачи анимации «живых объектов» при помощи нетривиальных математических моделей, Юрий Матвеевич ответил: «Таких работ в России я не знаю. Мой студент Саша Савенко занимался этим, но в Англии, там и защитил диссертацию на эту тему». Таким образом, не исключено, что «практический контекст» для работы Константинова и его соавторов в России все еще не появился.
Кто, зачем и почему
Самое замечательное в истории возникновения «Кошечки» — команда ее создателей и двигавшие ими мотивы. Уже упоминалось, что инициатором проекта и автором ключевых идей был Николай Николаевич Константинов. Если потребуется назвать самого популярного математика в Москве, им окажется, вне всякого сомнения, Константинов. Очень многие нынешние столпы этой науки начинали в его кружках — а сегодня работают в основанном им Независимом Московском университете, новом математическом центре мирового уровня. Константинов — президент Турнира городов, крупнейшего математического состязания для школьников на территории бывшего СССР, член правления Международной федерации национальных математических соревнований (World Federation of National Mathematics Competitions), где отвечает, ни много ни мало, за всю Европу. Наконец, Николай Николаевич действительный член (по секции применения математики к биологии) Московского общества испытателей природы, старейшего научного общества России (основанного в 1805 году; среди иностранных членов были Ламарк, Дарвин, Фарадей). Для нашей темы важнее всего, что Константинов уже много лет остается кристаллизующим центром живой, активной, самоорганизующейся среды, которая объединяет как молодых, так и маститых исследователей и преподавателей, как вундеркиндов-олимпиадников, так и просто увлеченных наукой студентов и школьников.
Весьма показательно, что такой замечательный проект возник именно в этом (никак не формализованном) сообществе и исключительно на основе фундаментального, натурфилософского интереса. Главный урок «Кошечки», на мой взгляд, — каким ярким может быть результат, когда талантливые люди берутся за интересную фундаментальную задачу, не ограничивая себя искусственными рамками «программирования», «анимации» и т. п., — и честно решают ее, не оглядываясь ни на карьеру, ни на планы, ни на рынок (иногда — как в данном случае — нечаянно обгоняя этот самый рынок лет на десять-пятнадцать).
Но как быть с тем, что все эти замечательные идеи столько лет не находили отклика — ни в той самой «Константиновской» среде, ни за ее пределами? Это важный вопрос. Он среди прочих обсуждается в беседе с Константиновым на следующих страницах. Могу только добавить, что спустя много лет эта работа возвращается к жизни в той же самой среде: на свет божий (то есть в цифру и в Интернет) фильм вытащил один из соратников Константинова по олимпиадно-кружковой и научно-популярной работе Николай Андреев, а широкого читателя с ним знакомлю, как видите, я — тоже прошедший когда-то через Константиновские матшколы (сначала как ученик, потом как преподаватель).
Ну а теперь пора торжественно сказать «спасибо». Я благодарю:
— создателя сайта образовательных математических анимаций www.etudes.ru Николая Андреева, который очень помог мне с фото— и видеосъемкой и без которого многие никогда бы не увидели «Кошечку»;
— Юрия Баяковского за ценные консультации и важные ссылки на литературу;
— Николая Константинова за интересную беседу и помощь в работе над материалами;
— Рика Парента за ответы на мои многочисленные вопросы, за профессиональный комментарий к «Кошечке» и за доступ к фильму «Not just reality».
Рик Парент
Разыскивая обзоры по истории компьютерной анимации, я обнаружил в цифровой библиотеке IEEE доклад профессора Университета Огайо Рика Парента (Rick Parent) «Компьютерная анимация: алгоритмы и технология — исторический обзор» на конференции IEEE Computer Animation 2000" — и тут же сочинил письмо автору с просьбой о консультации. Вот его отзыв о «Кошечке»:
"Для своего времени эта анимация кошки поистине замечательна. Уровень анимации в тот период в США (и во всем мире, насколько могу судить) лучше всего характеризует фильм «Не просто реальность» («Not Just Reality»), сделанный в 1973 году Барри Весслером (Barry Wessler), учившимся тогда в Университете Юты. Для анимации ходящей и говорящей фигуры использовался скриптовый язык. Фильм был снят покадрово камерой, помещенной перед экраном векторного дисплея. С помощью цветовых фильтров отдельно записывались и потом совмещались красный, зеленый и синий компоненты каждого кадра, а анимация кошки делалась съемкой картинок, напечатанных на бумаге.
Замечательной картину делает не техника записи, а качество передачи движения. Движение ног более плавное и естественное, чем то, которого удавалось достичь компьютерным аниматорам того времени. Очень естественно выглядел и поворот головы в конце двух проходов кошки.
Хотя приводимые в статье уравнения движения и модель четвероногой походки навеяны биомеханикой, тем не менее они были специально разработаны для данного фильма. Моделирование движения использует аналитическую обратную кинематику, дерево решений, управляющее выбором подходящего в данный момент уравнения и механизм обратной связи, синхронизирующий движение ног.
Применив эти методы для анимации, авторы обогнали свое время. Насколько я знаю, это был первый случай использования таких уравнений движения при создании компьютерной анимации.
Часть очарования фильма обусловлена сочетанием примитивных технических средств (видны, например, складки на бумаге) и высокого качества полученного движения. Я благодарен Леониду Левковичу, познакомившему меня с этим замечательным эпизодом истории компьютерной анимации".
Не удержусь от того, чтобы привести первую реакцию Рика на просмотр «Кошечки»: «Это ПРЕКРАСНАЯ анимация! Я от нее в восторге. Если не возражаете, я покажу ее сегодня студентам на занятиях. Использовались ли данные кинематики, записанные с реальной кошки?»