Как проблематичные могут оказаться оптические искажения, например, при Motion-Tracking. Чем меньше фокусное расстояние, тем более выраженный искажающий эффект проявляется к краям, поэтому нужно решить, можно ли непосредственно использовать исходный материал или требуется предварительная обработка изображения или видеоматериала или коррекция 3D-элементов. В этом учебнике я представлю оба варианта. В качестве отправной точки я использовал простой снимок на смартфон.
Проекты Cinema 4D, исходное изображение и полученный профиль объектива вы найдете, как обычно, в рабочих материалах к данному учебнику.
Подготовка инструмента линзового искажения
В отличие от Motion-Tracking или калибровки камеры, для создания профиля объектива в Cinema 4D нет отдельного объекта, а только инструмент Линзовое искажение в меню Инструменты.
Этот инструмент в своем диалоговом окне настройки предлагает все необходимое для создания профиля объектива. На странице Изображения мы находим базовые настройки для отображения загруженного изображения. Для этого как обычно используем кнопку рядом с полем Изображение.
Через диалоговое окно выбора мы загружаем изображение для вычисления искажения в поле Изображение инструмента Линзовое искажение.
Если не установлено автоматически, соотношение сторон будет адаптировано к загруженному изображению. Тем не менее, не помешает проверить эту настройку после импорта.
Создание профиля объектива
На странице Линзовое искажение находятся функции для определения Линзового искажения и расчета профиля объектива на его основе. Определение искажения происходит по так называемым n-точечным линиям, которые мы размещаем на редакторсской панели в подходящих местах изображения. Нажатием кнопки Добавить n-точечную линию мы создаем первую линию для нашего изображения.
Эта первая n-точечная линия теперь находится угловато в центре нашей редакторской панели, где мы можем редактировать ее с оранжевыми точечными маркерами. Так как фон загруженной картинки изначально достаточно светлый, мы временно затемняем изображение во время работы с n-точечными линиями.
Для этого мы переключаемся на страницу Изображения диалогового окна настроек и уменьшаем Яркость загруженного изображения на примерно 10 % до 15 %.
Теперь n-точечные линии гораздо лучше видны перед изображением, и также хорошо видны соответствующие элементы изображения. Для моей первой n-точечной линии я выбрал нижний край верхней полки. При перемещении точек мы видим позицию точки увеличенной с помощью функции лупы.
Поскольку в моем исходном изображении нет крайнего искажения, особенности кромки на изображении можно точно воссоздать с помощью трех точек n-точечной линии. Дополнительные точки, кстати, можно добавить, щелкнув мышью с зажатой клавишей Ctrl в нужном месте линии.
Первая n-точечная линия правильно размещена, поэтому мы сразу же создаем еще одну n-точечную линию в диалоговом окне настроек, нажав кнопку Добавить n-точечную линию.
После того как мы воссоздали с помощью первой n-точечной линии идущий в глубину край, наша вторая линия должна как можно больше охватить ширину изображения. В нашем случае это от заднего угла внизу слева …
… до момента, когда книга закрывает край.
Большее количество встроенных n-точечных линий не всегда означает обязательно лучший результат. Мы ограничиваемся контурами краев на изображении, которые являются действительно однозначными и охватывают максимально возможные области изображения. К ним, конечно же, относятся и задняя кромка книжной полки …
… так же как передние края полки …
... а также ламели роллеты для полки, насколько они достаточно хорошо выделяются от фона для нанесения n-точечных линий.
Поскольку мы знаем, что искажения оптических линз увеличиваются по краям, особенно важно искать подходящие места для наших n-точечных линий именно там.
Когда все ключевые области изображения заполнены n-точечными линиями, мы вычисляем с помощью этой информации профиль линзы.
В диалоговом окне настроек инструмента линзовых искажений на странице искажения линзы мы находим меню с распространенными моделями линзовых искажений. Для нашей съемки на смартфон выбираем модель 3DE Стандартный Классик.
Нажав на кнопку Автоматически рассчитать, мы получаем параметры линзовых искажений, вычисленные из n-точечных линий.
В редакторском режиме искажение можно увидеть по слегка подушкообразной форме по краям. Также заметно, что для правой стороны мы почти не предоставили информации в виде n-точечных линий, поэтому здесь искажения практически нет. Впрочем, для наших целей достаточно хорошо охваченной основной области действия.
Теперь мы можем использовать этот готовый профиль линзы как для исправления исходного изображения, как показано в редакторе, так и для легкого искажения 3D-элементов в соответствующих областях, чтобы они соответствовали неизмененному исходному изображению.
Прежде чем мы кратко рассмотрим обе варианты в этом учебнике, давайте сохраним этот профиль линзы с помощью соответствующей кнопки.
Чтобы явно показать, что наш недавно созданный профиль линзы принадлежит съемке полки, имеет смысл зафиксировать это и в имени файла, используемом при сохранении.
Использование профиля линзы для коррекции съемки
Хотя мы видим исправленную съемку в редакторском режиме, это связано исключительно с инструментом линзовых искажений и еще не является частью нашей сцены. Чтобы использовать изображение в качестве фона для сцены, нам нужно выполнить калибровку камеры в сочетании с объектом фона.
Для информации о калибровке камеры есть отдельное подробное учебное пособие на сайте PSD-tutorials.de, поэтому ограничу себя здесь лишь функциями, важными для искажения линз. Для калибровки камеры создаем новый объект камеры и назначаем ему через контекстное меню правой кнопкой мыши или через меню Tags>CINEMA 4D Tags менеджера объектов тег Calibrate Camera.
В диалоговом окне тега Calibrate Camera мы открываем страницу Image и загружаем нашу съемку с полки в поле Image. Во втором разделе диалога находим поле Lens Profile, через правую кнопку "Load" которого открываем менеджер файлов ...
... и загружаем сохраненный нами профиль линзы для съемки с полки.
Благодаря загруженному профилю линз теперь мы можем использовать искаженное изображение для калибровки сцены.
Мы отложим калибровку в сторону и займемся вопросом, как в итоге включить искаженное изображение в сцену при рендеринге. Создаем на странице Calibrate удобно через кнопку Background Object правильно отображенный фон вместе с нашей съемкой с полки в виде присвоенного материала.
Открывая материал через менеджер атрибутов, в канале Цвет как текстуру мы находим привязанной нашу съемку с полки, однако она все еще версии с искажениями. Чтобы исправить эту текстуру с помощью нашего профиля линзы, мы загружаем вспомогательным меню Эффекты шейдер линзовых искажений.
Поскольку мы прежде не удалили текстуру полки, она автоматически добавляется в шейдер как текстура при загрузке шейдера линзовых искажений. Теперь нам нужно только загрузить профиль линзы через правую кнопку в соответствующее поле.
Теперь мы, наконец, можем обратиться к распределенным изображениям при рендеринге. Для калибровки сцены или камеры для установки 3D-элементов у нас уже есть распределенная запись, которая была уже в теге Калибровка камеры.
Аналогично тегу Калибровка камеры, мы можем использовать созданные нами профили объектива для распределения материала в движения-трекера. Благодаря распределению мы также получим лучшие результаты трекинга.
Использование профиля объектива для искажения 3D-сцены
Как уже упоминалось, мы также можем использовать созданный нами профиль объектива для легкого искажения 3D-элементов, чтобы приспособить их к оригинальной записи. В данном случае мы отказываемся от распределения изображения в теге калибровки камеры и также в Материале для фона.
Для этого второго примера я удалил объект фона и убрал распределенный профиль объектива в настройках тега калибровки камеры.
Таким образом, калибровка камеры или сцены осуществляется на основе оригинальной записи. На поверхности стойки лежит констрейнт плоскости для определения оси X и Z. Гвоздь для определения начала сцены я поместил в угол заднего левого угла.
Для рендеринга фона нам также не нужно распределенное изображение. Вы можете либо сгенерировать новый фонный объект, нажав кнопку Создать фон в теге калибровки камеры, либо удалить шейдер линзового искажения, перенеся текстуру стойки из шейдера в поле Текстурного канала цвета.
Чтобы соответствовать трем мраморным пирамидам в записи стойки, я создал объект Пирамида в Cinema 4D и применил к ней делформер Укругляющий. Точечный источник света обеспечивает адаптированное к записи освещение 3D-объекта Пирамида.
Благодаря калибрированной сцене, пирамида успешно интегрируется в сцену, в моем первом тесте я поместил ее в центр изображения рядом с другими тремя пирамидами.
Как и следовало ожидать, позиционная пирамида также выглядит хорошо при рендеринге, здесь также эффект искажения от оптического объектива минимален.
Чтобы гарантировать, что пирамида (и, конечно, все остальные 3D-объекты) соответствуют искажениям объектива, мы применяем рендер-эффект для легкого искажения 3D-элементов. Как и все другие эффекты, эффект искажения объектива находится в настройках рендеринга, которые можно найти в меню Рендеринг.
Таким образом, мы активируем эффект Искажение объектива через кнопку Эффекты... в настройках рендеринга для рендеринга.
На соответствующей странице эффекта в настройках рендеринга мы находим поле для нашего Профиля объектива. Подключив созданный нами профиль объектива, эффект искажения объектива обеспечивает соответствующее искажение 3D-элементов при рендеринге.
Для тестирования взаимодействия между оригинальной записью и искаженной геометрией мы помещаем пирамиду в передний правый угол стойки и запускаем рендеринг в виде или в менеджере изображений.
Поскольку у нас обычное изображение смартфона, а не широкоугольная съемка, эффект искажения, конечно, не слишком выражен. Пирамида выглядит немного плоской и сжатой по сравнению с видом в редакторе. Благодаря нашему профилю объектива Cinema 4D теперь автоматически адаптирует геометрию к нашей оригинальной записи.