Как нам отсканировать 3D?
АрхивДумал ли Репин о компьютерах, дорисовывая в картине Айвазовского "У моря" фигурку Пушкина? Вряд ли. Но мнение Мастеров, что совершенство должно создаваться профессионалами, вполне справедливо. Впрочем, я не об искусстве и даже не о профессионализме, а скорее о специализации.
Изображение человека - вообще болезненная тема. Вы, наверное, обращали внимание на то, что шестирукие семиглавы о пяти ногах и с большущими зубами получаются, как правило, куда реалистичней среднестатистических человеческих персонажей, как в роликах, так и в компьютерных игрушках. Впрочем, можно поступить по Валеджевски (Вальеховски?) - фотографируем и дорисовываем нужные запчасти. Правда, картинки получаются плоские, немодные по нонешним временам, да и объемы у такого решения... А вот трехмерные картинки стоят ой-ей-ей - ежели их заказывать профессионалам, - а у самоделкиных чаще всего получается как в известной пословице насчет мужичка, палки и чурбачка.
К счастью, многие функции человека можно перевалить на технику, но и тут нас, бедных, подстерегает пренеприятнейшее известие: дорогущая она, эта техника. Давным-давно, когда компьютеры были большими и звались ЭВМ, я видел статью про систему искусственного зрения, которую янкесы делали для своих вояк. Они использовали специальную лазерную подсветку "в сеточку" и строили по результатам "трехмерные модели гребных винтов подводных лодок для контроля качества изготовления" (так в тексте было). А не далее как неделю назад открываю в Инете страничку некоей британской фирмочки (www.3dscanners.com) и... думал, дежа вю, ан нет: слазил на чердак, выудил из пыльной кучи древнюю книжку - те же картинки столетней (ну хорошо, десятилетней) давности преподносятся как форпост мировой трехмерной мысли и уже не для вояк, а для штатских профессионалов от видео. Хотят за стационарный аппарат, монтируемый в специальной студии, 6999 у. е. (один из вариантов) и предлагают купить прямо с сайта. Впрочем, на оной конторе свет клином не сошелся. Предложения подобной экзотики проскакивают хоть и не часто, но вполне регулярно, и порядок цен совпадает.
Меня лично система за 6999 у. е. не волнует за отсутствием этих самых условных единиц. Но рисовать человеков иногда все же приходится - и это проблема. Довольно долго в нашем сумасшедшем доме рисованием занимались художники, и подход у них был соответствующий. Хуже всего, что весь художественный опыт тут насмарку, нужен конструктор, а конструкторов (как меня, например) учат рисовать не лица, а железки. Знаете, как получались наилучшие результаты? Скульптор лепит модель, ее режут на пласты, кладут на бумагу в клеточку, координаты заталкивают в 3DS и наслаждаются плодами. Попытки удешевить процедуру приводили к таким садистским технологиям: зимой в картонную коробку из-под обуви набивается снег, в снег тыкается физиономия модели, затем (все на морозе!) повторяется процедура с нарезанием слепка на дольки и промерами оных. Единственным полезным результатом всех вышеописанных издевательств стал небольшой, но очень важный вывод: сканируемый объект надо смещать не линейно, а вращая вокруг некоей условной оси симметрии! В этом случае даже от руки иногда получается нарисовать профили, которые после 3DS'тудизации превращаются во вполне удобоваримое лицо. Естественно, рисовать такое каждый раз вручную - не только тяжелый труд, но и (с точки зрения инженера) - себя не уважать.
Первый порыв - покрыть физиономию подопытного координатной сеткой, что и было проделано на себе (сгоряча перепутал фломастер и маркер, так что отмывался потом дня три). Теперь берем видеокамеру и... вуаля, после некоторой возни получаем профили, которые дают результат очень даже ничего. Но метод не оперативен, рисование правильной сетки занимает немало времени; если ее разрешение не устраивает - надо все стирать и рисовать заново; из-за низкого разрешения камеры иногда тяжело отличить одну линию от другой... Со всеми вытекающими печальными последствиями. Я уж молчу про реакцию моделей, когда им начинают объяснять, что от них требуется! Вот если бы на каждом кадре да получать только одну линию! Вот это было бы да.
Но... Все новое - давно забытое старое, и то, что янкесы придумали в семидесятых для милитаризьму, мы возьмем да и перекуем на мирные цели. "Сеточку" можно нарисовать лазером, благо этого добра стараниями Юго-Восточной Азии в магазинах игрушек навалом, а компьютер у меня на столе стоит небось покруче того, из семидесятых. Да и нужна, в общем-то, не сеточка, а одна-единственная вертикальная линия. Поначалу я вообще хотел привязать лазерную указку к камертону, поставить в соседнем углу - и вперед. Но по здравому размышлению такой режим работы для лазера не полезен - ну не любят они почему-то вибрацию, - и окончательный вариант светильника представлял собой вращающееся зеркальце, на которое направлен луч. Знаете такие круглые пластмассовые точилки с наклеенным зеркалом? Вот прямо берем, насаживаем этим пластмассовым боком на вал двигателя и все. Вид у этой штуки, словно из фильма ужаса сбежала, но работает. Если не жалко сотни (не у. е.), покупайте указку и творите. А если жалко, то можно еще проще, вообще без лазера.
Нам ведь что надо? Плоский не расходящийся луч света. А таковой можно получить безо всяких там лазеров. Курс начальной физики помним? Если свет от обычной лампочки проходит через булавочное отверстие, получается световой конус, а если еще раз, то тонкий не расходящийся луч. КПД, конечно, как у паровоза и даже много хуже, лучевую пушку не сделать, а вот светильник - вполне. Только берем не булавочные дырки, а тонкие щели и светим вертикально стоящей лампой дневного света, а еще лучше - ДРЛкой (у обычных ЛБ яркости может не хватать). Я использую светильник с шириной щели 4 мм и длиной от лампочки до выходной щели 500 мм (параметры подбирались "от фонаря", но результат устроил, - так все и осталось). Реальный угол расхождения луча составляет ~1 см на 1 м. Учитывая, что яркость луча максимальна по центру и сильно ослабевает по краям, пользоваться вполне удобно.
Но подсветка еще не все. Надо как-то снимать данные и обрабатывать их. Я не знаю, как это делали в том военческом устройстве, но в большинстве подобных систем, как я понял по рекламным проспектам, используется что-то вроде лазерного дальномера. У меня же на руках была только бытовая видеокамера - значит, будем использовать именно ее. Если камеру направить на любой объект, подсвеченный щелевой лампочкой, то на картинке получится почти идеальный профиль. Конечно, чтобы превратить набор кадров в набор профилей для 3DS, нужно повозиться, но для этого есть маленькая утилитка scan3D, исходники которой я кинул на magictower.htmlplanet.com (исходники, поскольку мало ли кому что поправить захочется).
Остался еще один элемент - само сканирующее устройство, должное выставлять объект в нужное положение для каждого кадра. Дабы не городить огород, продаю ноу-хау за полпончика! Роль механики "сканера" играет диск "Здоровье", на который наклеена прозрачная линейка-прицел, а под диск подложена шкала. В процессе сканирования все сооружение вращаем ручками.
Вот и все. Надеюсь, картинки вам понравились. Желаю здравствовать, ну и - заходите, если что...