Фильтр CyberMesh фирмы Knoll Software относится к фильтрам, подключаемым к графическому редактору Adobe Photoshop. После установки его можно видеть в меню File>Export>CyberMesh... Многие из известных мне фильтров замечательны, однако CyberMesh, на мой взгляд, является самым выдающимся и наиболее близок к магии, волшебству. Назначение его - генерировать из 2D-картинки трехмерный объект. Идея, положенная в основу работы фильтра, проста. Каждому пикселу изображения, в зависимости от значения яркости (0-255), сопоставляется полигон, находящийся на определенной высоте от основания. При этом для расчета высоты полигона применяется прямая зависимость: яркость точки изображения - высота полигона, т. е. чем светлее точка, тем выше она находится. Вообще говоря, с точки зрения физики, в реальных процессах поглощения и рассеяния света поверхностями объектов дело обстоит гораздо сложнее. Зависимость между положением точки относительно наблюдателя и ее освещенностью определяется множеством параметров и не является прямой. Поэтому вроде бы и фильтр не должен работать. С хорошими идеями всегда так - при более пристальном рассмотрении оказывается, что для их воплощения нужно еще много чего... Но давайте вернемся к обсуждению этого вопроса чуть позже.
На рис. 1 представлены 2D-карта и 3D-объект - голова мужчины (сверху и снизу соответственно). Это пример работы CyberMesh, он поставляется в комплекте с фильтром. Впечатляет, не правда ли?
Рис. 1 |
Попробуем сделать что-либо подобное, но прежде познакомимся с интерфейсом модуля.
Итак, на рисунке 2 представлен интерфейс модуля CyberMesh.
Рис. 2 |
Назначение регулировок:
"Лупа" - увеличивает (уменьшает с нажатой клавишей "Shift") содержимое окна предварительного просмотра;
"Рука" - прокрутка изображения модели в том же окне;
"Поворот вида" - позволяет вращать объект;
"Каркас" - быстрая схематичная прорисовка модели в виде каркаса;
"Оттененный каркас" - прорисовка контура, поверхности и общего вида модели;
"Сплошной" - показывает вид модели после экспортирования в 3D-программу (если установлена опция Perspective в поле Display);
"Map Altitude" - Управляет диапазоном высот, в которые переводятся пикселы с разными значениями яркости;
"Radial Offset" - работает только для сферического и цилиндрического типов проецирования и управляет общим объемом модели.
Примечание. Два последних регулятора позволяют создавать приблизительно похожие модели.
Если Вам не удается достичь с их помощью нужного результата, вернитесь в Photoshop и попробуйте применить фильтр Brightness/Contrast.
"Scale" - масштабирует физические размеры экспортированного DXF-файла;
"Cyl. Length" - работает только с типом проецирования Cylindrical Mesh, изменяя длину базового цилиндра;
"Polygons", "X Range", "Y Range", "Z Range" - геометрическая информация о текущем объекте: общее количество полигонов модели и ее x,y,z - размеры. Полезна для оценки размера конечного файла после экспорта;
"Mesh type" - здесь выбирается тип проецирования карты или способ создания 3D-модели:
- Rectangular тип проецирования, идеально подходящий для создания трехмерных ландшафтов и объектов с "ландшафтноподобной" геометрией (например, кисть руки человека);
- Cylindrical карта "натягивается" на цилиндр, используется для объектов с цилиндрической симметрией. Так модель головы мужчины на рис.1 создана с использованием именно этого типа проецирования;
- Spherical карта оборачивается вокруг сферы, полезна при создании объектов, обладающих сферической симметрией, например, глобуса;
"Format" - определяет формат DXF-файла, используемый при экспорте;
"View" - определяет точку зрения наблюдателя на объект для окна просмотра (Top, Front, Left и т.д.);
"Resolution" - важный параметр, влияющий на конечный размер создаваемого файла и, в конечном итоге, на время его обработки в 3D-программе. Определяет соотношение количества точек изображения и количества полигонов модели. "Full" - каждая точка преобразуется в один полигон, 50% - две точки - один полигон и т.д.
"No polys for black pixels" - если опция установлена, для черных точек не создается полигонов. Важно для прямоугольного типа проецирования - автоматически убирает "подложку", если она не нужна.
При создании 2D-карты будущего трехмерного объекта следует соблюдать следующие правила.
Прежде всего, изображение должно быть Grayscale - типа, разрешение - 72 dpi, размер приблизительно 5x5 сантиметров. Впрочем, последнее требование не носит обязательного характера, гораздо важнее, чтобы количество полигонов модели не превышало 4 - 10 тысяч (хотя, если Вы счастливый обладатель компьютера на базе процессора PII, то это ограничение - не для Вас).
Я попробовал с помощью CyberMesh создать 3D модель руки. Исходные изображения, две фотографии - тыльной стороны и ладони - были получены с использованием планшетного сканера, кисть располагалась параллельно плоскости сканирования. В качестве установок сканирования выбирались: разрешение 150 dpi, grayscale, формат файла - TIF. Полученные фотографии представлены на рис.3. Затем изображения были обработаны в PhotoShop: копировались на отдельные слои, помещались точно друг над другом и обрабатывались по контуру для достижения точного их совпадения. После этого изменялось разрешение до 72 dpi и был применен фильтр Gaussian Blur со значением 6.7. Полученная таким образом двухслойная карта 2D-карты дважды использовалась, для получения верхней и нижней половины руки, в модуле CyberMesh со следующими значениями параметров: Map Altitude = 10, Format = 3D Face DXF, Resolution = 50%, Mesh Type = Rectangular, опция "No polys for black pixels" включена. В процессе работы потребовалось несколько раз возвращаться к редактированию исходных карт, выполняя, где необходимо, размытие, осветление и затемнение областей карт, создававших нежелательные артефакты в 3D моделях (они хорошо были заметны в окне предварительного просмотра при включенной опции Perspective. и нажатой кнопке "Сплошной" в окне Display). Количество полигонов в обоих случаях составило около 4 тысяч, а размеры DXF-файлов на диске около 1Мбайта каждый. Дальнейшая обработка полученных файлов проводилась в 3D Studio (R4, DOS) и заключалась в импорте и слиянии DXF-файлов, выполнении операции Union для соединения двух половинок в единый объект - кисть, назначении карт для визуализации и сглаживании поверхности объекта. На основе полученного объекта была составлена сцена, которую Вы можете видеть на рис.4.
Рис. 3 |
Рис. 4 |
Возвращаясь к обсуждению корректности работы фильтра с физической точки зрения, нужно сказать, что результат лучше, чем можно было ожидать. Создание качественной 3D модели по фотографии требует просчета и точного сопоставления освещенности в каждой точке двумерного изображения и положения этой точки в реальном трехмерном пространстве (фотография, человеческого лица, к примеру, и есть карта такой освещенности). Но точное сопоставление невозможно в принципе, поскольку на освещенность влияет и рассеяние света, которое в немалой степени обусловлено 3-мерной геометрией объекта (т.е. тем, что мы и пытаемся определить). Получается замкнутый круг.
CyberMesh - выход из этого порочного круга, хотя и не универсальный. Используя режим предварительного просмотра и редактируя вручную нужные участки карты, можно добиться достаточно хорошего соответствия получаемой модели и реального прототипа. Однако совершенно ясно, что с его помощью вряд ли можно получить 3D модель автомобиля. Тем не менее, фильтр может быть незаменим в случаях, когда необходимо создать трехмерный объект, не имея ничего, кроме его фотографии, хотя бы для создания заготовки для последующего точного редактирования в 3D программе.
Игорь СИВАКОВ
Горячие темы