Выбрать главу

ТЕМА НОМЕРА: Прибытие «Кошечки»

Автор: Леонид Левкович-Маслюк

«Прибытие поезда» — так назывался самый первый кинофильм. Сегодняшние тематические материалы посвящены «Кошечке» — одному из первых в истории опытов компьютерной анимации, осуществленному тремя математиками Московского университета почти сорок лет назад. Сюжет прост: за сорок секунд кошка несколько раз проходит по экрану из угла в угол. Гораздо интереснее сюжет, связанный с работой над фильмом, его забвением на много лет и недавним возрождением в цифровой форме.

Проследив за этим сюжетом, мы в не совсем привычной перспективе увидим очень интересный эпизод из истории развития информатики в нашей стране. Авторы фильма поставили перед собой и блестяще решили совершенно новаторскую по тем временам задачу. В первом из материалов темы речь идет об основных идеях, лежащих в основе этой работы, во втором — о мотивах авторов и об обстановке, в которой она велась.

Что, как и когда

Впервые я услышал о «Кошечке» еще учась в школе. Идеолог проекта — Николай Константинов, известный всей математической Москве создатель сети математических кружков и школ и сам замечательный математик, — но о нем речь ниже. Так вот, Константинов заглянул к нам в класс и пригласил в актовый зал «посмотреть мультфильм, который нарисовала машина». Я не пошел и упустил редчайшую возможность познакомиться с работой, кардинально обогнавшей свое время. Дело было то ли в 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 году.