Совмещение фотографии и 3d окружения

aaa.jpg

Совмещение фотографии и 3d

Оригинал статьи лежит на моем сайте

logo4copy.png

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

1.jpg

Хочу сразу сделать замечание, если фотография сделана, например, с расстояния 2м от обьекта, то при совмещении фотографии и 3d, Вы получите рендер с такого же расстояния. Лишь в малом диапазоне Вы можете корректировать положение камеры, иначе непременно получите искажение модели.

Обьясняется это тем, что камера по мере удаление от обьекта вносит коррективы в отображение формы обьекта. На картинке снизу два куба размерами 1х1х1м, наложеные друг на друга, для наглядности.

Фотография темного куба, сделана с расстояния 1м, а оранжевого с расстояния 2м, но увеличенного до размеров первого для наглядности.

2.jpg

Видите, как изменился обьект в зависимости от сьемочного расстояния. Это значит что физически будет не правильно, если вставить фотографию обьекта в 3d окружение на расстояние, отличное от сьемочного. Другими словами, интерьер является 3D обьектом и его искажение будет контролироваться в соответствии с положением камеры в 3d пространстве, а фотография не может быть скорректировна, так как не является 3d обьектом.

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

Надеюсь, что с этим всё понятно и продолжим далее.

Еще нам понадобится черно-белая маска изображения дивана. Сделать её можно в любом графическом редакторе. Черным цветом зальем все вокруг дивана, а белым сделаем сам диван. Вот такого вида:

1m.jpg

Открываем редактор 3ds max. Зайдите в настройки рендера Render Setup и в свитке Assigned Render выберите в качестве Production рендера Default Scanline Renderer. Он наc вполне устроит, так как достаточно быстрый.

12.jpg

Для того чтобы получить в редакторе камеру с параметрами соответствующей сьемочной, воспользуемся скриптом Camera Match .

Перетягиваем скрипт в окно редактора, в любую проекцию. В появившемся меню выбираем исходную фотографию.

3.jpg

В окнах проекции появится plane с картинкой и сплайн осей. Сдвиньте, но не закрывайте, окно скрипта, он нам еще понадобится.

Перейдите в окно фронтальной проекции и выберите режим отображения Smooth+highlights. Теперь нам предстоит самая ответственная работа, от которой зависит качество совмещения фотографии и 3d. С помощью вертексов нам нужно выставить оси, которые позволят правильно настроить расположение камеры. Соответствие сегментов сплайна осям можно увидеть на картинке:

4.jpg

После расстановки вертексов, как на картинке, нажимаем кнопку SOLVE

5.jpg

И скрипт создаст 2 камеры, камера с именем 111_cm_camera нам не нужна, её можно удалить. А вот камера 111_cm_cameraAligned настроена на нужный ракурс, она нам и потребуется в дальнейшем.

Удалите plane с фотографией, сплайн осей и закройте окно скрипта, больше они не нам не нужны.

8.jpg

Выберите камеру в окне Perspective. Нажмите комбинацию ALT+B, и загрузите изображение в Background Source. Расставьте галки в соответствии с картинкой:

6.jpg

Теперь фотография обьекта у нас на заднем фоне. Создайте примитив Box, переведите его в Edit Poly. Установите флажок See-Through на вкладке Display, это сделает обьект полупрозрачныи и сделает более удобным подгонку обьекта к фотографии.

7.jpg

Перемещяя вертексы, сделайте так, чтобы габаритные размеры Box были чуть-чуть больше габарита дивана.

Теперь наша задача создать материал, для Box.

Откройте Material editor, выберите любой слот с материалом, например первый, и в слот Diffuse вставьте карту Camera Map Per Pixel

10.jpg

Нажмите на слот Camera в карте Camera Map Per Pixel и выберите в окне проекций камеру 111_cm_cameraAligned. Теперь в слот Texture установите фотографию дивана, которую Вы ставили на скрипт и задний фон.

Скопируйте эту карту в слот Opacity того же материала, откройте скопированную карту и замените файл в слоте Texture, на картинку с черно-белой маской для дивана. Параметр Self Illumination выставьте на 100. Вот так должно быть:

9.jpg

Примените материал на Box. Выберите окно проекции камеры. и нажмите F9 (рендер). Если Вы все сделали правильно, у вас должен появится рендер дивана:

11.jpg

Такое чудо получилось благодаря Camera Map Per Pixel в слоте Difuse материала, т.е. Вы создали своего рода проектор, где камера была проектором изображения дивана, а Box служил полотном на которое проецировалось изображение. Вспомните кинотеатр, если кто-то впереди встанет и перегородит луч проектора, то на проекционном экране будет виден силует человека. Но здесь всё намного лучше, так как камера ничего не видет до самого Box. И ничем нельзя перекрыть проекционный луч.

А вот карта Camera Map Per Pixel в слоте Opacity материала с черно-белой маской, обрезала все лишнее кроме самого дивана. Для тех кому, интересно... уберите карту из слота Opacity, нажмите на рендер и посмотрите, как бы получилось без использования маски.

Сгрупируйте камеру 111_cm_cameraAligned и Box. Остальноё все можно удалить. Сохраните сцену и закройте редактор.

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

Откройте любой готовый интерьер, в который Вы хотите вставить диван. Перекиньте в окно проекции Top сцену с настроенной камерой и боксом с помощью Merge

13.jpg

Далее, выберите нашу камеру 111_cm_cameraAligned в качестве источника для рендера. Переместите группу из камеры и Box, в нужное место на сцене, так группа может не соответствовать действительным размерам дивана, при необходимости воспользуйтесь масштабированием. Но только группы целиком, не разгруппировывайте её.

14.jpg

Зайдите во вкладку Render Setup и выставьте разрешение рендера такое же, как и на фотографии исходника, главное чтобы соотношение сторон было такое же как и на исходнике.

15.jpg

Переходим на окно проекции камеры и жмем F9 (рендер). Вот что получилось:

16.jpg

Вот и всё!. Надеюсь, что урок был Вам полезен. Совмещение фотографии и 3d таким способом, дает довольно качественный результат. Готовые работы с применением такого метода, можете помотреть в галерее в разделе 2D+3D.

фотоcamera matchcamera map per pixel

Комментарии (32)

0
3Delli
Для новичков самое оно. Плюсую за проделанную работу. Я такие вещи обычно на глаз и композом в фотошопе.
0
E_tayson
"На глаз", это конечно, можно, но по мне так проще и точнее.
+2
Yehat
Здорово, когда удачно совпадает свет в сцене и освещённость дивана со всеми его бликами.
+1
E_tayson
На то, как диван будет реагировать на свет и тень, отвечает параметр Self illum., чем он выше тем слабее воздействие. При 100, не будет никакой тени на диване, ни света. А для того чтобы свет и тень ложились правильно, нужно, делать не просто модель бокса, а моделировать под диван конкретно. Бокс - это простейший вариант.
+8
faust24
Получилось конечно здорово, но по моему проще было смоделить диван и потом делать с ним что захочется
+1
E_tayson
и сколько бы это потянуло по бюджету? Смысл же в том чтобы дать заказчику возможность выбирать под свой бюджет варианты. Тем более вряд ли, в разумных пределах цены, можно смоделировать диван по качеству не уступающий на фото.
+1
faust24
Если это делается для каталога и заказывает солидная фирма то вряд ли она поскупится на моделирование, + диван можно показать с разных сторон, в разной обивке, из разных материалов, разных размеров и к если он раскладной то можно сделать анимацию механизма, обычно крупные фирмы заказывают именно такой набор.
+3
E_tayson
Я не претендую на то, что всё нужно делать таким методом. Конечно, если заказчик не скупится, то можно и накрутить интересное. Но всякое в жизни бывает и надо иметь арсенал, что можно предложить. Фирмы разные бывают и крупные и мелкие. А чтобы красиво товар выглядел, хотят все.
0
Kusanagi
Оо, как Вы заблуждаетесь! На деле крупные мебельные фирмы стараются экономить на всем, что можно и нельзя.
Среднячковый Каталог - это около 60 страниц с иллюстрациями. На каждой в среднем 3-4 предмета мебели. Сами понимаете, сколько нужно моделировать. А еще потом заплатить за верстку и многотиражную полноцветную печать и т.д. Поэтому как раз на визуалиации пытаются сэкономить (к сожалению).
Приемом совмещения фото и 3д пользуются очень многие мебельные фабрики.

Так что спасибо большое, статья интересная и полезная!
0
naumov-studio
Комментарий удален
+1
Parik
Оу...один из первых, если не первый, действительно полезный и тематически актуальный пост в блогах. ++

Хотя ,конечно, путь выбран не самый простой))
+1
ygoryan
Вы что, серьезно этим часто пользуетесь в визе текучки?
Намертво привязав камеру к одному ракурсу?
Не верю!
0
E_tayson
Так не один же раз такое делается для всех моделей.. Под каждый диван своя сцена с настроенной камерой.
+4
jppasha
в 14 максе это делается в три клика... там есть специальный инструмент перспектива для этого
0
train88
А не подскажете где посмотреть? А то только перешел на 14макс.
+3
jppasha
вкладка Utilities инструмент Perspective Match... дальше думаю разберетесь, там все на уровне интуиции....
0
ch_1_m
а можно по конкретней об инструменте? для новичков?
0
Flyboy
Полезно. Не знал про это. Надо будет попробовать)
0
Marra_MM
За урок в любом случае спасибо, новые знания никогда лишними не бывают. А по поводу каталогов выскажу свое мнение из личного опыта. Мебельщики, желающие экономить, вообще не заморачиваются с 3D - они все клепают в фотошопе, безо всяких рендеров вставляют фото дивана в фото интерьера. Полистайте сайты большинства российских мебельных фабрик, там это аляповатое чудо сплошь и рядом, многие даже не обращают внимания на углы падения света и теней. Те, кто хотят нормальный каталог, делают масштабную фотосессию в интерьерах, а кто умнее и современнее - заказывают полное 3D (это выходит дешевле и практичнее), тем более что модель потом можно использовать многократно - ставить в другие свои интерьеры, "переодевать" в другие обивки, поворачивать, анимировать, использовать в программах расстановки. Так что я соглашусь с faust24.
0
zzaba
Супер. Спасибо.
А то можелить это все хозяйство нет ни времени обычно, ни желания. А так - попробуем!
Отдельное спасибо за скриптик
0
soroka
+1 Спасибо.
0
lance_lot
Хорошая статья, есть еще способ с использованием инструмента Camera Match:
Можно обтравить фотографию в Фотошопе, Потом в самом фотошопе построить линиями оси (места пересечения осей используются для инструмента Camera Match в Max'е). Для ориентирования можно смотреть на фон фотки, если там есть стены (для вертикальных осей), потолки, пол (для горизонтальных) и прочее, эти оси в местах пересечения образуют как бы габаритный контейнер дивана. В этом уроке оси строились скриптом. а это как бы в ручную. Фотку с диваном и осями поставить фоном в Максе.
потом в Максе создать бокс под размеры дивана (знать надо, в уроке этого не требовалось, значит + этому уроку, а не моему способу) и с привязкой к вершинам добавить CamPoint'ы из вкладки Helper'ов в выпадающем списке Camera Match. А потом с помощью самого инструмента Camera Match выставить камеру (указываешь созданные CamPoint'ы и щелкаешь мышью в местах пересечения осей, потом нажимаешь Create camera и получаешь камеру, выставленную в ракурсе дивана, ну или должен получить.) В идеале точки бокса, должны бы совпадать с пересечениями осей, но для инструмента Camera Match нужно 3 точки в одной плоскости и еще хотя бы одна в другой. Можно подогнать камеру вручную. Потом из этой камеры отрендерить интерьер (в разрешении как у фотки) и в фотошопе наложить обтравленный диван сверху. потом там же в фотошопе поправить яркость и освещенность, нарисовать тени. и конечно же лучше интерьер делать под освещение дивана. Включенный торшер, например, ставить со стороны освещенного подлокотника и тд.
инструмент Camera Match и для других подобных вещей используют, вписывание архитектуры в фото, например.
Урок хороший, узнал про полезный скрипт и интересный способ. спасибо.
0
greshnovk
Спасибо за наглядный пример. В отсутствие свободного времени очень выручит. Зачёт...))))
0
Гульма
Спасибо, лично для меня очень полезный урок =)
0
insane
Спасибо, очень полезно
0
werterwer
Супер, спасибо за мануал, все получилось и пришлось кстати
0
alex-3DS
Почему у меня грани на таком боксе засвечены по
разному?http://yadi.sk/d/dtig-VNRRi2HN 
0
E_tayson
Параметр Self Illumination выставьте на 100.
0
alex-3DS
У меня на 100
+1
alex-3DS
Вобщем вопрос не решен
0
lana-ssn
А у вас все материалы в сцене Standart? Как можно настроить материал VrayMtl для бокса?
0
kadikey58
Почему у меня нет тени от объекта?(