Это база: Зачем нужна математика в повседневной жизни - Йэн Стюарт
Шрифт:
Интервал:
Закладка:
Слева: грубая полигональная сетка для Tyrannosaurus rex.
Справа: сетка, прикрепленная к рудиментарному скелету
На первом этапе создается трехмерная цифровая модель динозавра, поверхность которого представляет собой сложную сетку из плоских многоугольников – треугольников, прямоугольников, менее правильных четырехугольников. Программа, используемая для этой цели, показывает форму геометрически, и вы можете двигать объект, вращать его, приближать и т. д. Каждое движение при этом отображается на компьютерном экране. Однако непосредственно программа работает не с геометрией как таковой, а со списком координат точек, где стыкуются многоугольники. Мало того, математика, которую при этом использует программа, помогая рисовать динозавра, примерно та же, что задействуется для анимации результата. Основное различие состоит в том, что на этом этапе динозавр как бы закреплен, а вращается и переносится точка наблюдения. При анимации закрепленной может быть точка наблюдения, а динозавр движется, или, как с летящим драконом, точка наблюдения может двигаться тоже.
Так что теперь у нас имеется грубый и жесткий динозавр. Как заставить его двигаться? Чего мы точно не делаем, так это того, что приходилось делать художникам во времена Микки-Мауса: мы не перерисовываем изображение с динозавром в чуть разном положении сотни раз. Мы хотим, чтобы компьютер делал за нас всю рутинную работу. Поэтому мы сводим нашего динозавра к рудиментарному скелету – небольшому числу жестких стержней («костей»), концы которых соединены. Мы пропускаем эти стержни через туловище, конечности, хвост и голову динозавра. Это не анатомически корректный скелет, а просто рамка, которая позволяет изгибать основные части животного. Скелет также представлен в виде списка координат для двух концов каждой кости.
Очень эффективный способ получения реалистичных движений, особенно людей и других гуманоидных существ, – захват движения. Актер проделывает необходимые движения перед камерой или несколькими камерами, если нужно получить трехмерные данные. При этом на ключевых точках его тела, таких как ступни, колени, бедра и локти, закрепляются белые кружки (точки), а затем компьютер, анализируя полученное видео, получает данные о движении этих точек. Эти данные используются для анимации скелета. Именно так был анимирован Голлум в трилогии «Властелин колец». Естественно, если вам нужны странные нечеловеческие (но при этом реалистичные) движения, то и актеру приходится двигаться соответствующим образом.
Каким бы способом ни анимировался скелет, как только результат нас устраивает, мы «набрасываем» на него подготовленную сетку. То есть мы объединяем два списка координат, определяя дополнительные связи между положением костей и положением окружающих их кусочков сетки. Затем на большую часть процесса мы забываем о сетке и занимаемся исключительно анимацией скелета. Именно на этом этапе очень кстати оказывается наша работа, связанная с жестким движением, потому что каждая кость является жесткой, и мы хотим, чтобы они двигались в трех измерениях. Кроме того, мы должны наложить на движение ограничения, благодаря которым скелет будет оставаться целым. Если мы двигаем одну кость, концы костей, прикрепленных к ней, тоже должны сдвинуться, так что мы переносим координаты этих концов в правильные позиции. Затем можно жестко двигать и эти кости тоже, что, конечно, влияет на кости, прикрепленные уже к ним… так, кость за костью, мы заставляем весь скелет слегка изогнуться. Можно сдвинуть ступни, чтобы заставить динозавра идти, изогнуть хвост вверх, вниз или в сторону, открыть ужасные челюсти – но все это мы проделываем на скелете. Это проще, быстрее и дешевле, потому что у скелета намного меньше частей.
Когда характер движений скелета нас устраивает, мы набрасываем на скелет сетку, начиная с первого кадра движения. А программа анимации заставляет следовать за движениями скелета на последовательных кадрах, причем нам уже не нужно ничего делать, за исключением, возможно, одного-двух кликов мышкой. Это позволяет убедиться, что анимация по-прежнему выглядит реалистично, когда весь динозавр следует за тем, что происходит с его скелетом.
Далее можно заняться творчеством и поиграть разными параметрами. Мы можем сдвигать положение «камеры», менять точку зрения, используемую программой, приближать объекты, получая крупный план, или, наоборот, рассматривать бегущего динозавра издалека – все что угодно. Мы можем создавать других существ, например стадо травоядных, убегающих от чудовищного тираннозавра. Делается это аналогично – сначала скелеты, на которые затем набрасывается сетка. Можно анимировать каждое существо отдельно, а затем собрать их вместе в единую сцену охоты хищника.
Поскольку скелеты – это всего лишь схематичные фигурки, на этом этапе мы, пожалуй, еще ничего не сделали, чтобы предотвратить появление двух существ в одном и том же объеме пространства. Дополнительные настройки программы позволяют ей предупреждать нас о столкновениях такого рода. Когда мы набрасываем на скелеты сетки, те многоугольники, которые оказываются впереди, перекрывают те, что сзади, и, поскольку динозавры непрозрачны, приходится убирать те области, которые должны быть скрыты. Все это делается при помощи простых вычислений координатной геометрии, но таких вычислений оказывается довольно много. До тех пор пока компьютеры не стали по-настоящему быстрыми, это было невыполнимо. Теперь это рутина.
Дел остается еще немало, поскольку динозавр, похожий на скопище многоугольников, не слишком впечатляет. Нужно задрапировать многоугольники реалистичным кожным узором, затем разобраться в цветовой информации, может быть, создать какие-то реалистичные текстуры – мех выглядит совсем иначе, нежели чешуя. Каждый шаг требует отдельного программного обеспечения и применения соответствующих математических методов. Этот этап называется отрисовкой, и именно на нем собирается окончательная картинка, которая появляется на экране, когда мы смотрим кино. Но в сердце всего лежат миллиарды вычислительных операций, обеспечивающих жесткое движение точек и ребер.
Эти математические методы обладают и еще одним преимуществом. На любом этапе, когда нас что-то не устраивает, мы можем изменить соответствующую деталь. Если мы хотим, чтобы динозавр был зеленым, а не коричневым, то не нужно перерисовывать все заново. Мы воспользуемся тем же скелетом и той же сеткой, возьмем те же движения и ту же текстуру кожи, но поменяем ее цвет.
Занимаясь созданием фильма или игры, команды специалистов используют целый ряд стандартных пакетов программ, разработанных для обеспечения этих процессов. Чтобы дать вам хотя бы примерное представление о сложности происходящего, я назову некоторые из компаний и программных пакетов, использованные при создании фильма «Аватар».
Основной объем анимации обеспечивала компания Weta Digital в Новой Зеландии, известная своей работой над «Властелином колец» и «Хоббитом». Почти две сотни видеопоследовательностей –