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