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

– от простых до сложных –

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

Предлагаю Вам способ для совмещения фотографии и 3d окружения.

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

sofa

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

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

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

paralax

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

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

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

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

sofa mask

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

Render Setup

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

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

camera match menu

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

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

camera match spline

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

camera match axis

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

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

Hide plane

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

Background Source

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

See-Through

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

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

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

Camera Map Per Pixel

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

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

Box material

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

render

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

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

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


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

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

merge file

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

Group place

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

Render aspect

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

final render

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