Как стать автором
Обновить

3D-сканер за $30

Время на прочтение9 мин
Количество просмотров207K
Профессиональный 3D-сканер, с помощью которого можно оцифровать реальный объект, получив его компьютерную модель, стоит десятки тысяч долларов. Мы же сможем провернуть то же самое с помощью специальной программы, лазерной указки и веб-камеры. Всего долларов за тридцать.



О 3D-сканировании


Многие сферы нашей жизни немыслимы без трехмерной графики. Огромная армия 3D-моделлеров (или попросту 3D’шников) ежедневно создает модели, которые потом успешно используются в самых разных областях, начиная от кинематографа, рекламы, промышленного производства, архитектуры и заканчивая бог знает чем еще. Любой человек, занимающийся моделированием, рано или поздно сталкивается со следующей задачей: нужно создать модель того, что уже существует в нашем трехмерном мире. Это может быть что угодно. Например, модель-прототип, которую на твой стол положил заказчик и попросил сделать «точно так же, только в компьютере». Причем смоделировать нужно не просто чтобы «было похоже», а чтобы объект-прототип и трехмерная модель были как близнецы-братья, разделенные экраном компьютера. Так случилось и со мной. Выполняя очередной заказ по моделированию, я столкнулся с очень жесткими требованиями по соответствию моей модели образцу клиента. После энного безуспешного согласования стало ясно, что в этот раз нужна абсолютная точность модели. Во всяком случае клиент был уверен, что в противном случае если и не наступит Армагеддон для всего человечества, то по крайней мере случится что-то похожее. Что мне оставалось делать? Попробовать, наконец, 3D-сканирование! Я тогда еще подумал: «Это же моделирование для ленивых». Минута дела — и всё, модель готова! К моему великому удивлению (и разочарованию), оказалось, что даже самый простенький 3D-сканер стоит больших денег. Вернее говоря, очень больших. Чтобы его купить, я должен был умножить стоимость этой модели на число с пятью нулями. Но раз нельзя купить, значит, будем делать сами. Ниже я хочу поделиться с тобой опытом, как можно собрать 3D-сканер своими руками. Я не только расскажу, какие компоненты и где купить для этого, но и как этим сканером пользоваться.

Что нам понадобится?


Смастерить свой 3D-сканер, как оказалось, можно буквально из подручных материалов: нам потребуется специальная программа, лазерная указка, веб-камера, а также некоторые самодельные приспособления.

Специальный софт. Самой важной частью сканера, в том числе дорогостоящего профессионального, является его мозг — программное обеспечение, которое выполняет оцифровку. То, что необходимо нам, — это инструменты, которые позволяют сканировать/оцифровывать трехмерные объекты с помощью подручных средств: веб-камеры и лазерная указка. Таковыми являются DAVID-laserscanner и TriAngles, доступные для свободного тестирования, но с некоторыми ограничениями. Последний имеет довольно неприятное ограничение: для его работы необходим равномерно вращающийся столик, на котором будет располагаться сканируемый объект. К тому же предъявляются суровые требования к самому объекту. Его форма должна быть близка к цилиндрической, а еще лучше — сферической. DAVID-laserscanner подобных требований не предъявляет, поэтому я выбрал его. Несмотря на то что программа платная и ее стоимость колеблется от 199 до 229 евро, тестировать ее можно сколь угодно долго — лимитов по времени нет. Единственное ограничение заключается в особенностях сохранения результатов сканирования. Сохранить сканы можно, но в низком качестве. Впрочем, на просторах Сети иногда случаются чудеса, и если тебе удастся найти версию DAVID’а, которая сохраняет в высоком качестве, значит, ты сэкономишь и на этом. А кто ищет — тот всегда найдет.

Веб-камера. Параметры объекта, необходимые для составления объекта, программа считывает с помощью веб-камеры. Она, возможно, у тебя есть. Если так — прекрасно, можешь попробовать провернуть всё с ней. Главное, чтобы разрешение было не меньше 640 х 480. Есть и другие требования: наличие ручной фокусировки (возможности отключать автофокус), минимум шумов при высоком разрешении, качественная линза камеры — линза не должна давать сильных искажений. Камера должна подключаться к USB-порту и работать на WDM-драйверах (т. е., попросту говоря, должна быть видна для выбора в программе DAVID). Большинство современных веб-камер удовлетворяют этим требованиям, но проверить их совместимость с DAVID можем только мы с тобой, поэтому доверимся рекомендациям создателей программы во избежание всяких неожиданностей. Из дешевых камер сам разработчик рекомендует Logitech WebCam Pro 9000 with cam holder, которую можно купить долларов за сто. Я же успешно выполнял сканирования моей Logitech С270 стоимостью около 35 долларов.


Настраиваем сканер

Лазерный модуль. Для работы сканера необходим компонент, который будет давать линию. Именно линию, а не точку. Это важно! На форумах я прочел, что подойдет обычная китайская лазерная указка, но это не так. Как бы быстро ты ни водил рукой, вооруженной лазерной указкой, это всё не то. Чуть позже я объясню почему. Сейчас важно одного — нужен сканер, который дает линию. Красный, зеленый, синий — цвет сканера неважен. Вообще можно обойтись и без сканера, воспользовавшись альтернативными решениями (читай во врезке). Но лазерный модуль — это совершенно точно самый простой и доступный вариант. Я приобрел модуль красного лазера 650 нМ с фокусировкой линии мощностью 5 мВт, он стоил 25 долларов. Такой можно купить где угодно, например в хозяйственном магазине или через Инет, как это сделал я (кажется, в www.greenlaser.com.ua). Модули большей мощности (до 20 мВт) не рекомендую приобретать, так как их использование целесообразно в очень редких случаях. Есть готовые модули с автономным питанием — если найдешь, то купи лучше такой. Мне же для своего лазерного модуля пришлось создать небольшую оснастку, чтобы было удобно держать в руке, включать/выключать. Запитал я его обычной кроной 9 В: красный провод «+», черный «-»: если наоборот, то будет греться и, как результат, выйдет из строя раньше времени.

Калибровочный угол. Ориентироваться в пространстве, получая возможность считывать параметры изображения, позволяет программе специальная приспособа — калибровочный угол. Не бойся, это самый дешевый компонент, представляющий собой два листа со специально нанесенными маркерами, которые нужно расположить под углом 90°. После установки DAVID’а ты найдешь файлы в формате PDF или CDR в корневом каталоге, например “Calibpoints_Scale30_DIN_A4.pdf”. Или с аналогичным именем, но в формате CDR для печати из CorelDraw. Выбери тот файл, название которого соответствует формату бумаги, на которой ты собираешься печатать. Вообще советую исходить от размера сканируемого объекта. Не стоит делать большой угол, если ты собираешься сканировать маленькие объекты. Для начала вполне подойдут калибровочные листы формата А4. Сложнее закрепить их под правильным углом. Свой первый угол я сделал так — просто согнул белый гофрокартон, закрепил его на основе, после чего прикрепил стык в стык калибровочные листы. Лучше их не клеить, так как листы станут волнистыми — это недопустимо. Вместо этого можно аккуратно прикрепить их по краям скотчем. Должен сказать, что после первых же сканов стало понятно, что угол не идеальный. Поэтому пришлось всё переделать: я соединил два куска ДСП, скрепив их уголками. Получилось хорошо: угол 90°, поверхность идеально ровная — всего этого нельзя было бы добиться с гофрокартоном. Словом, тут есть множество вариантов.


Сканирование: со светом и без

Создаем модель


Теперь самое интересное — приступаем к самому́ процессу сканирования. Оглянись вокруг: в комнате наверняка найдутся какие-нибудь сувениры или статуэтки — для экспериментов подойдет любой небольшой объект. Что точно не годится, так это прозрачные или полупрозрачные предметы. Луч лазера должен отражаться, а не поглощаться предметами. Создатели DAVID’а рекомендуют в таких случаях покрывать предметы тальком или, если не жалко, аэрозольной краской. Я не утруждал себя и взял несколько статуэток. Условно в процессе сканирования можно выделить четыре этапа, расскажу о каждом подробнее.

1 этап. Калибровка. Это предварительный этап, поэтому объект для сканирования пока отложим в сторону. Закрепи веб-камеру напротив калибровочного угла таким образом, чтобы все компоненты были неподвижны относительно друг друга. Камеру стоит расположить на уровне нижнего края калибровочных листов. Во время калибровки камеры изображение должно быть ярким. Я выполнял сканирование вечером или днем, но с затененным окном, а калибровочный угол освещал искусственным светом. Сама калибровка осуществляется в DAVID-laserscanner. Выбираем из списка устройств нашу веб-камеру, настраиваем изображение: повышаем яркость, контраст. В результате на экране видны только черные маркеры. Жмем кнопку «Калибровать камеру». Если всё сделано правильно, программа поздравит тебя, что калибровка прошла успешно. В противном случае можно попробовать изменить положение веб-камеры, поиграться с яркостью и контрастом. У меня получилось не с первого раза, но потом радости было как после первой сданной сессии!

2 этап. Размещение объекта. Для сканирования необходимо расположить объект в углу калибровочного угла. Для лучшего результата он должен быть приблизительно посередине калибровочных листов. Если его размеры небольшие, можно использовать подставку: коробку, книги, деревянный брусок подходящего размера. Укажи программе тип используемого лазера. Далее тушим свет! На экране должно быть темно. Если не так — понижаем значения яркости. Не пугайся, если маркеров не видно: программа запомнила их расположение, и теперь они нам не столь важны. Включи лазер и направь его на угол чуть выше нашего предмета. На экране должна появиться ломаная белая линия (программа анализирует черно-белое изображение). Расстояние между камерой и плоскостью лазера (т. е. триангуляционный угол) должно быть настолько большим, насколько это возможно, — это нужно для большей точности. Иначе ты увидишь предупреждение: «Угол пересечения слишком мал». В начале статьи я отговорил тебя от использования точечной лазерной указки, и вот почему. Даже быстро водя точечной указкой, ты не только не получишь ровную линию, но и программа не сможет посчитать величину триангуляционного угла.

3 этап. Сканирование. Процесс сканирования начинается после нажатия кнопки «Старт». Необходимо провести по объекту лучом вниз-вверх несколько раз, чтобы программа через веб-камеру считала параметры объекта. Тут есть важный момент: нужно поворачивать кисть с лазером, а не опускать руку! Скорость не важна, но не старайся делать это очень быстро. При сканировании я чаще смотрел не на объект, а на экран, глядя, как программа анализирует форму предмета, вырисовывая на экране цветные линии. Смотреть на экран удобнее по двум причинам. Во-первых, если линия лазера не будет видна с обеих сторон предмета или недостаточным будет триангуляционный угол, программа сразу выдаст сообщение (и ты сможешь это исправить). Во-вторых, смотреть на лазер утомительно для глаз из-за высокого контраста между черным фоном и ярким лучом. Пройдя по предмету лучом вниз-вверх столько, сколько потребуется, жмем кнопку «Пауза». Теперь можно сохранить результат сканирования в отдельный файл с помощью кнопки «Сохранить». Есть другой вариант — сразу передать изображение для последующего сшивания с другими сканами, нажав кнопку «Перенести». При нажатии «Перенести» скан передается на следующий этап (склейку) без сохранения в файл, но текущий этап мы не покидаем и можем повторить сканирование, изменив положение объекта (не забудь перед новым сканированием нажать на кнопку «Стереть»). Тут важно понимать: для создания модели необходимо сделать несколько сканов. Для простых предметов тебе будет достаточно поворачивать объект, например, на 45º. Если поверхность предмета сложная, то потребуется сканировать его с разных сторон и лишь потом сшивать сканы. Еще один важный момент: сканы обязательно должны перекрывать друг друга, чтобы программе было легче анализировать их.

4-й этап. Сшивание форм. Последний шаг перед получением модели — это склейка сканов. Если ты не сохранял сканы, а передавал их на склейку с помощью соответствующей кнопки, то можешь приступать к сшиванию сразу. В противном случае жмем кнопку «Добавить» и загружаем ранее сохраненные файлы. Процесс сшивания можно разделить на два этапа: стыковка сканов и собственно сшивание. Выбирая попарно сканы, ты указываешь программе на метод стыковки. DAVID справляется с этим очень даже замечательно при условии, что есть чему стыковаться — сканы должны перекрывать друг друга. Если лоскуты не перекрываются, тебе придется вернуться на предыдущий этап и осуществить сканирование из тех положений объекта, которые дадут такое перекрытие. Выполнив стыковку для всех сканов, жмем на кнопку «Сшить». В зависимости от выбранных настроек через несколько секунд мы увидим результат сшивания всех сканов в единую модель. Жмем кнопку «Сохранить». Теперь можно загрузить нашу модель в ZBrush или Mudbox и довести ее до совершенства. Модель готова!
В программе TriAngles благодаря вращению предмета формирование оцифрованной поверхности происходило бы автоматически, это ее преимущество перед DAVID’ом. Но как бы она справилась с формированием поверхности в «мертвых» зонах? Думаю, никак. Либо в этих местах мы бы получили погрешность. Мы же хотели получить модель как можно более точную. Поэтому дополнительные действия по сшиванию сканов будем считать необходимыми издержками.


Дорабатываем готовую модель в 3D-редакторе

Вместо заключения


Собрать 3D-сканер, который будет выдавать более чем приличный результат, вполне возможно дома. Надеюсь, ты в этом сможешь убедиться. К сожалению, для сканирования маленьких объектов (а мне нужно было создать объекты для ювелирных изделий) нужна очень хорошая USB-камера c CCD-матрицей, которой у меня нет (она достаточно дорогая), поэтому мой опыт так и остался опытом: применить его на деле для сканирования ювелирных изделий не получилось. Но я испытал незабываемое удовольствие, получая полноценные модели самых разных объектов с помощью сканера, который был собран буквально на коленке.


Самодельный 3D-сканер позволяет получить неплохой результат


Если нет лазера

Для 3D-сканирования объекта можно обойтись и без лазера (я не шучу). Подойдет проектор с мощной лампой, свет которой нужно направить сквозь узкую щель на сканируемый объект. Получим узкую белую линию — чем не белый лазер? Правда, помимо проектора (который не дёшев сам по себе) нужна еще и серьезная оснастка для удержания проектора в нужном положении. Это геморройно. Можно пойти от обратного — направить яркий свет, а по объекту провести тенью от натянутой нити: такое тоже предусмотрено разработчиками программы. В этом случае программа может инвертировать обрабатываемую картинку. Однако что-то мне подсказывало, что это не даст хорошего результата.

На сайте разработчика www.david-laserscanner.com есть прекрасное руководство на русском языке. Прочти его обязательно! Там очень подробно описаны и требования к оборудованию, и последовательность сканирования, и разные нюансы, которые могут у тебя возникнуть.



image
Журнал Хакер, Октябрь (10) 153
Эдуард Гузь
.

Полистать этот материал в журнальной верстке можно здесь.

Подпишись на «Хакер»


Теги:
Хабы:
+135
Комментарии31

Публикации

Изменить настройки темы

Информация

Сайт
xakep.ru
Дата регистрации
Дата основания
Численность
51–100 человек
Местоположение
Россия

Истории