Фильтр CyberMesh

Фильтр 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 программе.

Игорь СИВАКОВ

Версия для печатиВерсия для печати

Номер: 

25 за 1997 год

Рубрика: 

Графика
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!