Когда я попал в компьютерную графику, я также погрузился в историю анимации. Я читал про Уолта Диснея, Текса Эйвери, Чака Джонса, Шамуса Калхейна и других. Я ясно помню, как подумал, что как только мы закончим разработку всего этого чудесного программного обеспечения, мы с несколькими друзьями легко сможем сделать анимационный фильм. Мальчик был я неправ. Сложность анимации намного превзошла наши скромные усилия в области программного обеспечения.

Так что в Neo-Visuals рендеринг и графический интерфейс были на руку. Далее: моделирование и анимация.

Белый кит, которого мы (нереально) пытались приземлить с помощью нашей технологии моделирования, был GM. Для целей развлекательной анимации полигональные модели были тем, как строились формы. Но конструкторам автомобилей GM требовалась математическая точность сплайновых кривых и поверхностей. И не просто какие-то старые сплайны. Им нужны были NURBS (неоднородные рациональные B-сплайны) и такие стандарты, как формат IGES (начальная спецификация обмена графикой).

У нас никогда не было ресурсов, чтобы сделать полноценное решение для промышленного дизайна (да и оборудование тоже не было готово). Но приманка кого-то вроде GM, покупающего сотни лицензий для своих дизайнеров автомобилей, была заманчивой, если вообще недостижимой.

Я работал над программным обеспечением для анимации. Идея заключалась в том, чтобы иметь интерактивные кривые, которые контролировали интерполяцию значений преобразования (перемещение, вращение и масштаб) объекта во времени. У меня были проблемы с матрицами преобразования. Анимация выглядела неправильно, когда я интерполировал матрицы между двумя ключевыми кадрами.

Я помню, как коллега вез нас на ужин в китайский ресторан, который мы часто посещали, и я думал вслух, объясняя ему проблему, когда ко мне пришло решение: мне не следует интерполировать матрицу преобразования; Я должен интерполировать значения перемещения, поворота и масштаба и пересчитывать матрицу для каждого кадра. На следующее утро я переписал код, и он сработал как по маслу.

В это время я начал разрабатывать объектно-ориентированную среду для C на основе книги Брэда Кокса, которую я назвал XForm. Он предназначался для 3D-системы следующего поколения (которой так и не суждено было сбыться). Я также читал и немного программировал в SmallTalk-80, который показался мне удивительно элегантным.

Но позвольте мне завершить мои приключения нео-визуалов, рассказав вам об игре «Timestoppers». Это была игра одного из художников, которую я придумал поздно вечером в офисе. Один игрок стоит в дверях комнаты, полной кабин, и держит в руках дешевый пластиковый секундомер. Он запускает секундомер и бросает его куда-то в комнату. Другой игрок, также находящийся в дверях, должен добраться до секундомера и остановить таймер. Побеждает самое короткое время. Мой друг-художник был суперспортивным бывшим военным. Он продемонстрировал, что пройтись по столу быстрее, чем обойти его. Он выиграл. Я потерял.

Дизайн и код

Изображение выше является результатом нескольких шагов процедурного моделирования, как показано в листинге кода. Профиль перемещается по траектории с применением некоторого скручивания и сужения, и результат создается 8 раз с вращением вокруг оси Y. Цвет по вкусу.

Я хочу придумать более компактное представление кода для этого типа последовательных/вложенных операций, возможно, используя макросы, а затем исследовать возможности.

Моя идея состоит в том, чтобы иметь представление, которое поддается генетическому программированию, что меня заинтересовало с тех пор, как я прочитал статью Карла Симса Siggraph 1991 года «Искусственная эволюция для компьютерной графики».

P.S.

Читатель отметил, каким захватывающим был электронный театр Siggraph. Я всем сердцем поддерживаю это. Это были два часа лучшей компьютерной анимации года, представленной с ультрасовременной проекцией и звуком. А в те дни, когда еще не было Youtube, это был первый (а иногда и единственный) шанс увидеть анимацию. Во многих случаях я выходил в изумлении и на высоте.

Следующая серия