Camera mapping или оживляя фотографию

О себе: 26 лет. Живу в Беларуси в г.Новополоцке. Компьютерной графикой начал заниматься, когда в 2000 году, будучи студентом радиотехнического факультета Полоцкого государственного университета, впервые увидел 3DS MAX 4. Поначалу это было просто увлечение, но жизнь в общежитии с другими компьютерщиками дала толчок к тому, чтобы начать этим заниматься более серьезно. В данный момент работаю дизайнером на местной фирме по производству металлоконструкций. Занимаюсь тем, что выполняю визуализацию изделий до того как они будут пущены в производство. Параллельно на местном телеканале выпускаю программу посвященную новинкам мирового кино. Характер нордический. Не женат.



Идея написания данного урока появилась после того как, посмотрев видеодневники постпродакшена фильма "Кинг-Конг", где упоминалась техника Matte Painting для создания окружающей среды, и, поискав информацию в сети Интернет, я случайно, на одном англоязычном сайте, посвященном архитектуре, наткнулся на описание техники Camera Mapping в 3ds max, которая использовалась для анимации экстерьера здания. Последующий поиск в сети дал еще несколько англоязычных уроков и один испанский (искал конкретно по 3ds max). На русском языке, разумеется, ничего конкретного небыло. Поэтому данный урок посвящен всем русскоговорящим и русскопонимающим "тридэшникам", которые хотят узнать что-то новое для себя.

Урок не претендует на полноту изложения по технике Camera Mapping, т.к. основывается на собственных исследованиях по данной теме. Также этот урок предназначен для пользователей, которые уже владеют базовыми знаниями программы 3ds max (т.е. знают куда нажимать или где это искать). Что-то для профессионалов CG индустрии может показаться "древним" или неправильным. В таком случае запрещается "бить автора лопатой по рукам", а лучше наставить на "путь истинный".

Часть 1. Немного теории

Техника Camera Mapping ("нанесение карт из камеры") предназначена для создания анимации из статических 2D изображений или видеофрагментов, снятых с одной стационарной точки. Техника нашла широкое применение в кинопроизводстве, для "оживления" эпизодов снятых статичной камерой, а также в технике Matte Painting ("матовая живопись") для создания иллюзии нахождения в трехмерном пространстве, тогда как окружающая среда остается двухмерной проекцией.

Для лучшего описания данной техники представьте проектор, который проецирует некую картинку на плоскость, а между проектором и плоскостью стоит человек, на которого, естественно, также проецируется картинка. Например, многие пробовали пройтись перед работающим проектором на какой-нибудь конференции или выставке, да так, чтобы все это видели. А вы стоите прямо за проектором. Представили? Хорошо. Теперь, если отойти немного в сторону, то вы замечаете как картинка, проецируемая на человека и на плоскость, остается неподвижной, а ракурс меняется. Так и в технике Camera Mapping. Одна камера выполняет роль проектора и проецирует изображение, а вторая меняет ракурсы съемок.

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

Теперь отгоните этого надоедливого человека, который начал собак на проекторе руками рисовать, т.к. мы переходим к практике.

Часть 2. Первые шаги

Для первых шагов я создал и сфотографировал вот такую простую сцену:

Реальный размер

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

Реальный размер

Данная фотография предназначена для заполнения участков газеты за кубиком. Т.к. наша будущая камера будет огибать кубик, то в процессе анимации за ним откроются, не видные на первой фотографии, участки. Но она нам понадобиться не полностью а только тот участок, который занимает кубик на первой фотографии. И поэтому, после нехитрых движений в любом графическом редакторе, например Photoshop, у нас должно получиться следующее:

Реальный размер

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

Далее открываем 3ds max. При активном виде Perspective открываем диалоговое окно Viewport Background. Кликаем на Files и выбираем в качестве фона для активного вида нашу первую фотографию. Обязательно указываем соотношение сторон как Match Bitmap. Последнее означает, что будет сохранено соотношение сторон фотографий.

Далее, в окне Perspective настраиваем координатную сетку так, чтобы она совпадала с плоскостью стола. Для этого мы можем воспользоваться щелью на стыке двух столов и краем газеты:

Реальный размер

Теперь рисуем кубик, который по размерам повторял бы размеры кубика на фотографии и грани обоих совпадали, а т.к. кубик на фотографии был сделан "кривыми руками", то и в максе кубик пришлось подправить с помощью модификатора EditMesh:

Реальный размер

Рисуем плоскость, которая соответствовала плоскости стола и при этом выходила бы за границы видимости:

Реальный размер

Теперь, при активном виде perspective, создаем камеру:

Реальный размер

Открываем окно MaterialEditor. В любом свободном слоте переходим во вкладку Maps. Кликаем на кнопку Diffuse Color. И в открывшемся Material/Map Browser выбираем Camera Map Per Pixel. Жмем ОК:

Реальный размер

Перед нами появились настройки Camera Map Parameters. Щелкаем на кнопку Camera и в любом из видовых окон кликаем на уже созданную камеру. Далее щелкаем на кнопку Texture. В открывшемся Material/Map Browser выбираем Bitmap и далее выбираем нашу первую фотографию. Должно получиться следующее:

Реальный размер

Возвращаемся на уровень вверх и во вкладке Blinn Basic Parameters для параметра Self-Illumination ставим значение 100. Теперь обзовите полученный материал как Front и примините его на кубик. Скопируйте материал в соседний слот. Перейдите в настройки Diffuse color и в качестве Texture назначьте третью фотографию (без кубика, но с тенью от него). Обзовите материал Back и примените его на плоскость. В итоге мы имеем:

Реальный размер

Теперь выделите созданную ранее камеру и скопируйте ее. Вид клона выберите Copy, чтобы случайно не нарушить параметры первой камеры. Активируйте вид из полученной камеры. Нажмите на Auto key и создайте анимацию как задумывали ранее. В ходе этого вы можете делать Quick Render для контроля создания анимации. Вот скриншоты и рендеринги первого и последнего кадра, которые получились у меня:

Реальный размер Реальный размер

Здесь вы можете посмотреть полученную анимацию (QuickTime 7, 170 kB).

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

Реальный размер

Как видите на задней стенке кубика ничего нет и слева появился черный участок. Это произошло потому, что, в первом случае, первая камера не может "спроецировать" изображение на заднюю стенку кубика, а во втором, плоскость вышла из поля зрения камеры.

Дальше, для эксперимента, добавим в сцену дополнительных элементов. Недолго думая, я нарисовал вот это:

Реальный размер Реальный размер

А здесь готовая анимация с кубиками (QuickTime 7, 170 kB). Как видите, никакого Camera Tracking не использовалось, но тем не менее, кубики остаются на своих местах. В качестве "домашнего задания" попробуйте, например, применить на дополнительные кубики ранее созданный материал Front и посмотреть что получится. Для этого вот вам файл сцены (3ds max 8, 174 kB).

Часть 3. А вот задачка посложнее

Как следует из заглавия данной части урока, мы усложняем задачу. Набрав в поисковике "new-york street" я нашел фотографию улицы города New-York с высоты птичьего полета.

Реальный размер

Как раз то что нужно, что бы наглядно показать как используется технология Camera Mapping в кинопроизводстве. Почему именно New-York? Да просто там чаще всего в кино происходят "апокалипсисы". И еще раз "поиздеваться" над ним, не будет лишним. И еще. Заранее извиняюсь, если нарушил американские авторские права на эту фотографию. Я готов бесплатно и в любом количестве предоставить фотографу снимки города Полоцка или Новополоцка :-).

Итак. Действуем по той же схеме. Для начала "разбиваем" фотографию на элементы. Не будем сильно усложнять себе задачу и "разобъем" на простые кубы, которые будут повторять очертания зданий.

Реальный размер

Определяемся с движением камеры. Например, камера немного "опускается" на улицу. Для этого, нам, как и в прошлой части, понадобится вторая фотография. В данном случае в Photoshop'е мы клонируем часть улицы и часть здания. Описание техники как это сделать, выходит за рамки данного урока. Поэтому вам придется разобраться самим. Если вы делаете урок над какой-нибудь другой фотографией, то вам пригодятся дополнительные материалы с той же улицы для фотомонтажа. А т.к. у нас их нет, то и получилось, что окна у здания выглядят однообразно и дорога какая-то непонятная.

Реальный размер

То, что нужно было для создания анимации мы стерли, и теперь переходим в 3ds max. Для окна проекции perspective фоном устанавливаем первую фотографию города. Незабываем поставить Match Bitmap. В окне perspective настраиваем координатную сетку так, чтобы она совпадала с плоскостью земли:

Реальный размер

Далее строим из кубов город. Наверно, в детстве все любили кубики. Вот и вспомните, как это делается. Вот что получилось у меня. Честно признаюсь, некоторые здания пришлось "накренить", чтобы грани кубов совпали с углами зданий:

Реальный размер Реальный размер

Создаем камеру и рисуем плоскость, которая должна совпадать с плоскостью дороги и обязательно выходить за края поля зрения камеры:

Реальный размер

Переходим к созданию материалов. Как и в предыдущей части данного урока создаем два метериала Front и Back. Соответственно для front мы берем первую фотографию, а для Back - измененный ее вариант. Только материал Front применяем на самое близкое к камере здание (черное слева), а материал Back - на все остальное.

Копируем уже созданную камеру и анимируем по заранее задуманной траектории:

Реальный размер Реальный размер

Здесь готовая анимация (QuickTime 7, 300 kB), а здесь файл сцены (3ds max 8, 190 kB):

Далее, как и в третьей части, мы добавим в сцену дополнительный элемент и посмотрим что получится. Тут я предлагаю коснуться темы "летающих чайников". Т.к. во всеми известном фильме "День независимости" над Нью-Йорком уже были "летающие блюдца", то пускай сейчас по улицам этого города полетает чайник. Итак. Добавляем в сцену чайник. Разворачиваем по ходу его движения и задаем ключи для анимации:

Реальный размер Реальный размер

Теперь для достижения более реалистичной картинки я предлагаю переключиться на какой-нибудь внешний рендер с поддержкой Глобального освещения. Далее я пользовался Vray 1.50.09. Но сперва для материалов Front и Back параметр Self-Illumination поставьте на 0. Иначе не будет теней. Далее я создал источник света Target Directional:

Реальный размер

Со следующими параметрами:

Реальный размер

Теперь переходим в окно Render Scene. Во вкладке Assign Renderer для Production выбираем Vray (любой, который у вас установлен, но желательно не ниже чем 1.47). Вот параметры для Vray, которые использовал я в своей сцене:

Реальный размер

Переходим во вкладку Common диалогового окна Render Scene. Отмечаем Active Time Segment, а в Render Output, щелкнув по кнопке Files указываем в какой тип файла сохранять анимацию. Т.к. этот процесс может затянуться на долго, то я предлагаю сохранять в последовательность картинок, а потом в любом видеоредакторе их можно будет "склеить" в финальную анимацию. Вот первый и последний кадры полученной мной анимации:

Реальный размер Реальный размер

Здесь готовая анимация (QuickTime 7, 280 kB), а здесь файл сцены (3ds max 8, 215 kB):

Часть 4. И напоследок

Надеюсь данный урок был полезен для вас и вы пополнили свой багаж знаний еще одной техникой анимации под названием Camera Mapping. Далее вы можете поэкспериментировать сами, т.к. в уроке не все было рассказано о данной технике. Наример, если у вас есть камера со штативом, то снимите из окна ваш двор или улицу, и используйте полученные кадры вместо фотографий в уроке. Эффект превосходит все ожидания.

Дополнительную информацию по данной теме (и не только) вы можете найти на сайтах:

www.mattepainting.org

www.cgarchitect.com

www.3dfluff.com/cameramapping/

718 0 850 101
53
2006-11-22
А вы знаете, вот мне очень пригодится. Я как раз хотел поэксперементировать с этим делом, а тут даже урок. Вообщем, спасибо.
2006-11-22
прикольно...
2006-11-22
отличный урок! Пожалуй конкуренцию может составить только урок про трехмерные изображения...
2006-11-22
Чайники наступают)) А вообще довольно интересный урок. Оригинально и свежо...
2006-11-22
http://www.digitalartform.com/archives/2004/11/camera_projecti_1.html[/url] А вот и оригинал урока
2006-11-23
Очень полезный урок, спасибо
2006-11-23
4/5 Oчень ка-ра-шо!
2006-11-23
Отлична! 5+
2006-11-23
Замечательный урок!!! Я думаю, он может пригодиться в 9 случаях из 10. Очень полезная и нужная вещь!
2006-11-23
Прикольно - подобных уроков очень мало. Эту тему еще можно долго развивать.
2006-11-24
Немного запутался в объяснение) Наверно на английском прочитать проще было б. Но безусловно 5 за оригинальность, очень интересный урок!)
2006-11-24
2 Olegich: Я видел этот урок, как и много других. Если вы заметили, то данный англоязычный урок неотносится к программе 3ds max, а ориентирован на пользователей Maya. От туда была взята идея использования самодельного кубика, как самого простого элемента для моделирования в 3Д. К тому же, я не использовал оригинальные фотографии из того урока, а делал свои. Что не является нарушение авторских прав.
2006-11-24
отдельное сенкью вери матч за ссылки вконце! очень хорошие линки! за них 5/5 =)
2006-11-24
Клевый урок! Могу от себя добавить, что можно не париться так с обьектами, а расставлять плейны нарисовав текстурку прозрачности, получается точнее и аккуратнее, в придачу это возможно со сложными обьектами например кустами, как здесь: http://www.render.ru/forum/images/upload/97851.jpg
2006-11-24
А еще, после установки всего и вся, можно отрендить текстурки. Проверял, рендятся правильно но только сканлайном:( Что обеспечит зверскую свободу рендера!
2006-11-24
Спасибо от всего сердца, именно сейчас, именно этот прием скорее всего позволит мне заработать кучу денег. С меня пиво.
2006-11-24
2 Absent: Держу на слове :-)
2006-11-25
хороший урок, огромное спасибо.
2006-11-25
А эта карта Camera map Per Pixel только с 8 МАКСА появилась или есть и для 6-й версии? За урок 5/5, КЛАСС :)))
2006-11-25
2 fewks: Спасибо. По поводу 6-ого непомню, а в 7-ом есть.
2006-11-27
Молодчина!
2006-11-27
Спасибо. С меня 5/5!
2006-11-27
вопрос к автору. Почему раньше работало а теперь нет? Первый кадр анимации рендится, остальные такие же. Нету анимации не рендится она в чем может быть дело? Все сделано по инструкции!Камера назначена в материал. Материал камера мэп. Камера анимирована. Ноль эмоций. Обьекты движутся, рисунок стоит.
2006-11-27
О боже до меня доперло... Что за день... Надо оставлять материалу неподвижную камеру, а анимировать другую... Санта мария.
2006-11-27
2 Absent: Я рад что все в порядке. У меня тоже было такое, только я сидел 2 часа и не мог понять, в чем дело! Дело доходило даже до переустановки макса.
2006-11-27
+5+5!!!Большое спасибо!!!
2006-11-27
Урок класный! Всё супер просто!
2006-11-28
ДЕйствительно, отличный урок. Вот только как зафиксировать на обьектах текстуру? а то когда я пытаюсь чтоото двинуть, у меня все нафик слетает.
2006-11-28
2 biomech: Техника Camera Mapping не предназначена для движущихся предметов, если только вместо фотографий неиспользуется видео с двигающимися предметами. Тогда "геморой" составит отслеживание движения этих самых предметов. Или я что-то не так понял?
2006-11-28
biomech, помоему можно "вшить" текстуру в объект, попробуй сделать Render To Texture.
2006-11-29
GRAFT, а можно ссылочку на те самые "видеодневники постпродакшена фильма "Кинг-Конг", где упоминалась техника Matte Painting для создания окружающей среды"? :)
2006-11-29
xen32 Да тут совсем все просто. Берешь стилос в зубы и рисуешщь из фоток бэк. Это и есть МатиПати.
2006-11-29
2 xen32: К сожалению ссылки нет, потому что у меня 2-х дисковое издание "Кинг-Конга". А дневники постпродакшена на втором диске.
2006-11-29
Клас!! с кубиком с первого раза получилось:), спасибо
2006-11-30
Да, урок отличный! Попробовал, получается интересно! В процессе возник вопрос, а можно как-либо спроецировать и задние текстуры объектов? Сделать фото с противоположного ракурса и наложить, чтоль ?...
2006-11-30
2 x2com: Да, можно. На каждую грань объекта можно наложить свой материал.
2006-12-01
супер.нечего сказать 5\5
2006-12-02
вот это прорыв! :0 не видел еще чтоб так быстро взлетали по баллам, молодец и урок отличный! так держать, больше бы уроков по теме...
2006-12-02
[quote]...больше бы уроков по теме...[/quote] уже работаю
2006-12-03
[b]2 GRAFT [/b] [quote]Да, можно. На каждую грань объекта можно наложить свой материал.[/quote] Да, я уже догадался. Получается отлично, обзор на 360. Круто! :)
2006-12-04
Класс!! 5/5!!!
2006-12-06
Спасибо всем за ваши голоса и за комментарии. Даже недумал что урок покажется кому-нибудь интересным. А тут оказалось совсем наоборот. Даже сам загорелся продолжить уроки на данную тему. Предложения по личке. Еще раз спасибо за высокие оценки и комменты. ЗЫ. Absent, а за тобой пиво! Ты помнишь? :-)
2006-12-08
Спасибо, друг! Никогда не перестаю удивляться возможностям макса и жизни вообще!
2007-03-02
Респект! С меня тоже 5/5. Только вот проблема - в случае с кубиком вроде все делаю по инструкции, но все равно при изменении ракурса камеры "режется" фоновая плоскость, получается как на той картинке, где ты заранее описал баги. Плоскость при этом все время заполняет фон. Что делаю не так?
2007-03-02
А так - эффект просто головокружительный! Двинем вперед графику в отечественной рекламе! GRAFT, ты молодец!
2007-03-04
InSider, проверь камеры. Одна должна оставаться все время на месте, а вторая создавать анимацию.
2007-03-20
Этот урок явился для меня откровением! Класс! [b]GRAFT[/b] Респект тебе и огромное спасибо!
2008-03-26
очень хороший урок! столько пользы извлек! спасибо!
2009-04-21
Ух ты, я тоже из Новополоцка! Вот уж не думал, что в Новополоцке кому-то нужны трёхмерщики)
2009-10-30
У меня не правильно текстура проецируется. И я так понял автор создал камеру сразу настроенную по вьюпорту perspective? Как это сделать?
2010-05-11
[quote=GizmO_FBI] на активном вюпорте ctrl+c
2016-08-02
Сколько ненужной болтовни, неужели нельзя было в двух словах объяснить.
2018-12-07
Круто, спасибо, очень пригодилось)
RENDER.RU