Журнал «Компьютерра» №1-2 за 2006 год
Но в кинематографе применяются куда более сложные эффекты. Например, из кадров с полем, по которому скачут два всадника, можно сделать сцену с несколькими десятками людей на конях. И зритель даже не заметит сходства между всадниками. Этот способ особенно хорош для батальных сцен, ведь в большинстве армий мира солдаты одеты в одинаковую форму. Но если всех конников сделать последовательным смещением, то они будут двигаться «в ногу», что наверняка вызовет у зрителя недоверие. Чтобы этого не произошло, каждую отдельно взятую фигуру накладывают со смещением, то есть одна лошадь начинает бежать с правой ноги, а соседняя будет повторять ее движения с некоторой задержкой. Но иногда и этого бывает недостаточно, тогда можно даже слепить одну лошадь из двух других: так, в фильме «72 метра» некоторые чайки были слеплены из трех частей – голова от одной, а туловище и ноги от двух других.
Но даже в идеальной армии все солдаты не могут выглядеть абсолютно одинаково. Возникает необходимость как-то разнообразить персонажей. На них можно накладывать цветокоррекционные фильтры, изменять их размер и пропорции и, как уже было сказано, составлять одно целое из частей разных персонажей. Для этого чаще всего используется метод 2D-трекинга. При этом программа отслеживает положение какой-то заданной на одном кадре точки во всех остальных кадрах последовательности. После чего к координатам точки можно «привязывать» различные объекты, будь то шапка кавалериста или же половина чайки. Только в одном случае шапка «привязывается» к какой-то выразительной точке на голове человека, а в другом – к углу обрезанного тела чайки.
Для того чтобы на отснятый городской пейзаж добавить рекламный плакат, висящий на стене дома, необходимо «протрекать» (получить последовательность координат точки на каждом кадре) точки, соответствующие тем углам дома, за которые будет крепиться плакат, и просто как четырехугольник по четырем углам прикрепить картинку с плакатом. Степень достоверности сцены зависит лишь от мастерства художника. Но при изменении положения камеры освещение может меняться, а так как наш плакат остается двухмерным, то имитировать правильное освещение – достаточно непростая задача. Что при работе с трехмерными объектами перестает быть столь большой проблемой.
Встает проблема совмещения трехмерной и двухмерной информации. Чаще всего приходится работать в трех направления: вживлять 3D-персонажей в отснятый фон (возможно, с актерами), переносить изображения с актерами в 3D-декорации и изменять внешний вида актера при помощи 3D-объектов.
Две видеопоследовательности снимаются разными по своей природе камерами – реальной и виртуальной. Если камера неподвижна, то первых двух проблем не возникает – достаточно лишь подобрать свет и положение камер. Но если нам нужна сцена с пролетом камеры, то обе камеры должны двигаться идентично. Для виртуальной камеры мы всегда точно знаем ее параметры и траекторию движения, ведь они задаются цифрами. А для материалов, отснятых настоящей кинокамерой, обычно известно только фокусное расстояние объектива, да и то если информация не потеряна после съемок.
Конечно, можно перемещать камеру в пространстве по строго определенному закону, но для этого потребуется специальный дорогостоящий робот. Гораздо проще восстановить параметры камеры и способ ее движения по уже отснятому материалу. Метод для восстановления параметров и движений камеры называется мачмувингом. Метод основан на принципах проективной геометрии. Понятно, что если точки на трехмерной сцене, которую мы снимаем камерой, неподвижны друг относительно друга, то они не могут двигаться на видео независимо друг относительно друга.
Входными данными для алгоритмов восстановления параметров камеры являются последовательности координат некоторых точек на каждом кадре. Эти точки могут выбираться программой автоматически – например, как самые яркие или как содержащие пересечение выделяющихся линий (уголки), но более точный результат обычно получается, если они заданы вручную. Человек указывает некоторые точки на одном кадре, после чего программа сама следит за их перемещением и находит их координаты на всех остальных кадрах, если, конечно эти точки все еще видны на них.
Далее при помощи различных математических моделей восстанавливается траектория камеры и трехмерные координаты тех точек, что были использованы в качестве входных данных. Например, для ролика, снятого в комнате, в качестве опорных точек можно выбрать углы стола и комнаты, или яркие колпачки на авторучках, а также другие мелкие хорошо видимые предметы. Результаты работы программы можно импортировать в 3D-редактор, для каждой опорной точки будет создан маркер, а камера будет полностью соответствовать той с помощью, которой был снят исходный ролик. Теперь, чтобы положить на стол новый предмет, надо провести воображаемую плоскость между точками, соответствующими углам стола, и на ней разместить 3D-объект. Если наложить на исходный клип изображение, полученное виртуальной камерой, то вживленный предмет будет выглядеть неподвижным относительно стола, как будто он там просто лежит.
Сразу же встает проблема с освещением. Ведь для того, чтобы «вживленный» объект выглядел органично, его освещение должно соответствовать сцене в целом. Более того, было бы совсем неплохо, если бы он отбрасывал тень на другие части сцены. С освещением все делается достаточно естественным путем. Если есть информация о свете, который был установлен на съемочной площадке, то делается подобная структура из виртуальных осветительных приборов, а потом их параметры подгоняются, грубо говоря, на глаз. Если же такой информации нет, то сразу переходим ко второй стадии – подбору параметров, только теперь необходимо подобрать еще количество и расположение источников света.
А вот для реализации теней потребуется достроить в 3D те части сцены, на которые будет падать тень. Эти части делаются таким образом, что их не видно при финальной отрисовке сцены, но тень, которая падает на них, будет представлять собой полупрозрачное темное пятно. То есть фон (отснятый материал) будет просвечивать, он будет затемнен, одним словом мы получим именно тень. Можно, конечно, поступить и проще – «прилепить» на композинге к 3D-объекту снизу полупрозрачное черное нечто, нарисованное в «Фотошопе», но опять же непонятно, как это нечто будет меняться при повороте камеры.
Если же отснятых актеров необходимо внести в 3D-среду, то тут сначала вся сцена продумывается, создается четкий план. После чего актеры снимаются на зеленом или синем фоне, при этом камера должна «проехать» именно так, как в финальной сцене. Далее в дело снова вступает программа. Только теперь при съемках по фону следует расставить маркеры, которые будут использоваться программой как опорные точки. Маркеры могут быть какими угодно, главное, чтобы они были хорошо видны на основном цвете фона и чтобы впоследствии их было легко убрать. Например, в качестве маркеров часто применяют обычные шарики для пинг-понга, которые хорошо видны при любом освещении. Правда, необходимо следить за тем, чтобы в каждом кадре одновременно оставалось не меньше чем минимально допустимое число маркеров. Это число зависит от конкретной программы, обычно оно не превышает пяти. После восстановления траектории движения камеры действия очень походи на предыдущий случай, только теперь персонажи будут заслонять собой цифровой фон, а через те части кадра, которые были зелеными, фон будет просвечиваться. Ну и с привязкой актеров к поверхности, по которой они ходят, придется немножко повозиться.
В некоторых фильмах приходится изменять облик артистов. Например, нам необходимо «прицепить» к голове персонажа какой-то сложный имплантат – допустим, заменить глаз цифровой камерой. Для этого можно было бы изготовить специальный прибор, который и разместить на голове у актера. Но если персонаж должен выполнять какие-то действия, хотя бы вращать кольца объектива, применение механических «протезов» сильно осложняется. Нам необходимо «прицепить» 3D-объект к голове актера.