Компания
173,40
рейтинг
14 декабря 2011 в 12:23

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

Профессиональный 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
Эдуард Гузь
.

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

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


Автор: @gorl

Комментарии (31)

  • +1
    Очень круто. А эксперементировали с размерами и детализацией объектов? В том смысле, насколько хорошо передаются мелкие детали? Потому что и фигурка горностая и толстого котэ имеет мало мелких деталей.
    • 0
      Судя по скринам — с мелкими деталями беда, но результат действительно впечатляющий.
      • +2
        Оговорено ведь, что это триал программы, который умеет сохранять только в низком разрешении.
  • 0
    А текстуру с привязкой умеет снимать?
  • +2
    Очень хорошее решение, при минимуме затрат, максимум удовольствия. Правда есть одно дополнение, можно использовать готовый сканер Штрих кодов, любой лазерный такой www.itscan.ru/catalog?action=commodity&id=1244& или любой другой, правда цена будет по больше 20 $…
  • +1
    Я-бы все-таки включил стоимость ПО в решение, то есть в заголовке должна быть сумма 230$. Иначе это читерство :-)
    • 0
      Но ведь автор использовал ограниченную версию программы.
      • 0
        Вполне возможно :-)

        Однако тому, кто захочет вместо сканера за 100500 (с пятью нулями) использовать способ, представленный в статье, для коммерческих целей (как у автора в статье), скорее всего, демо версия программы не подойдет из-за лицензии.

        А статья отличная — я её сразу в закладки положил.
  • 0
    При первом взгляде на статью показалось, что сканируют живую кошку (или мангуста).

    И мысль — «ничего себе как быстро скан идет, что кошка сидеть не устала»!

    Спасибо за статью!
  • +1
    Вместо вебкамеры можно использовать фотоаппарат подключённый к usb на некоторых моделях есть функция live-view.
    • 0
      или просто мобильник=)
      я бы так и сделала
      • 0
        некоторые ксениумы работают в режиме веб-камеры при подключении по микро-усб :)
    • +2
      Если развить идею то, можно записать видео сканирования модели на камеру или фотоаппарат высокого разрешения, и использовать видео как источник для эмулятора веб камеры.
  • +1
    Помнится. читал я об этой программе ещё в журнале Игромания, где-то за 2002-2003 год, точно не помню.
  • +1
    В случае с мощным источником света (проектором) и щелью можно воспользоваться поворотным зеркалом, тогда не надо будет громоздкий проектор трогать.
  • 0
    А можно подробнее, почему не получилось применить опыт для сканирования небольших предметов? Если поставить увеличительное стекло — точность не увеличится?
  • +1
    Впрочем, на просторах Сети иногда случаются чудеса, и если тебе удастся найти версию DAVID’а, которая сохраняет в высоком качестве, значит, ты сэкономишь и на этом.

    Это такой тонкий намек на кряк?
    • +2
      Зачем уточнять очевидное? :)
    • +2
      Судя по слову «версия», автор здесь всё-таки подразумевает раннюю версию DAVID'a, в которой ограничения на качество ещё не было вшито. Мой опыт с работой с иным shareware-софтом подтверждает такую возможность.
      • –1
        Какой вы наивный оптимист :)
  • 0
    >На форумах я прочел, что подойдет обычная китайская лазерная указка, но это не так.
    А кто-то, не так давно, использовал для этих целей именно указку плюс цилиндрическую линзу.
  • 0
    Я вот задумался о небольшой модернизации Вашего способа: чтобы не держать лазер в руке, прикрепить его к моторчику, на моторчик подавать пониженное напряжение, чтобы он не вращался быстро и через временное реле менять полярность, получится так, что лазер будет водить линию вверх и вниз. Помимо этого, сделать регулируемую круглую подставку и установить на нее круглый транспортир, чтобы точно выставлять поворот ну и регулировать по высоте подставку. Все описанное по цене будет незначительным, но добавит немного удобства.
  • –2
    Статья отличная и самодостаточная. Но фамильярный метод повествования, присущий журналу как вызывает негативные эмоции.
  • 0
    Для мака есть Strata Foto 3D CX
    Она такое просто из набора фотографий, снятых под разными углами, делать умеет.
    Тем, кому хочется без лазера и калибровок, может пригодится.
    Описание на сайте впечатляет!
    Версия за 40$ из AppStore видимо чуть попроще.

    image
    • +1
      Упс… image
  • 0
    Ага, а для Windows — 3DSOM, тоже правда платная, почти 1000 евро.
    Но да, на просторах сети встречаются чудеса =)

    image
    image
  • +3
    Всем привет!
    Постараюсь ответить на некоторые вопросы.
    1. Мелкие объекты отсканировать возможно, но… В этом случае должна быть хорошая камера с высоким разрешением и объект должен заполнять кадр, а не выглядеть маленькой точкой. В последней версии программы допустимо приближение к объекту таким образом, что калибровочные листы видны не полностью, а только центральные крупные маркеры (их 6 штук). В этом случае при правильном расположении объекта возле маркеров калибровка пройдет успешно. На сайте разработчика есть примеры сканирования мелких деталей: монета в 1 евро — детализация там очень хорошая.
    Вот мои результаты попытки сканирования объекта с хорошей детализацией:image
    Как видно из сканов — мелкие детали были «съедены». А верхушку елки мне так и не удалось отсканировать.
    На блестящих поверхностях программа «не видит» отражения лазера, поэтому и не строит там полигонов.
    Я не утверждаю, что отсканировать такое невозможно. Просто нужно приложить дополнительные усилия.
    Кстати, идею с шаговым двигателем, которым управляет контроллер люди успешно осуществляют. При этом как результат — более равномерное сканирование и более лучшие результаты.

    2. Использование линз не допустимо. Ведь используя макронасадки мы добиваемся таким образом увеличения не только объекта сканирования, но и линии лазера на нем!

    3. Я не писал о коммерческом использовании программы. Все описанные действия были направлены на тестирование программы, так сказать, в самом дешевом варианте в домашних условиях. Как только пользователь поймет, что результаты сканирования его удовлетворяют, то тут вступают в силу следующие факторы: модернизация сканирующей оснастки — покупка шаговых двигателей, контроллеров, стойки, камеры с хорошим разрешением и покупка программы для сохранения результатов сканирования. На сайте программы есть замечательный форум, где люди из разных стран делятся своим опытом улучшения результатов сканирования. Там же можно узнать что и где было приобретено для этих целей.
    Конечно в таком случае стоимость всего комплекса возрастает! Бесплатный сыр только в мышеловке.
    А для любительского уровня и для получения «референса» для моделирования результатов сканирования более чем достаточно.
  • +3

    картинка почему-то не отображалась
  • +1
    белый лазер
    ох, лол. физику-то учили?

    а в остальном интересная статья, спасибо
    • 0
      Вообще говоря понятие «белый лазер» существует.
      ru.wikipedia.org/wiki/Лазеры_сверхкоротких_импульсов.
      Но я не физик и в этом не силен.
      Со школьной программы помню, что лазер должен быть монохромным. Когда писал «чем не белый лазер» имел в виду яркую тонкую полоску белого света.
      Кстати о проекторах: в новой версии DAVID'а можно использовать проектор, но не для создания узкой полоски белого света, а в качестве источника структурированного света. Это когда на сканируемый объект с проектора посылаются последовательно изображения черно-белых полос. Последовательно посылаются несколько кадров (назовем их так) ширина полос в которых уменьшается от кадра к кадру. Подобные разработки сканирования объектов тоже велись и разработчики не проигнорировали эту возможность. В youtube можно посмотреть как это делается в DAVID'е: www.youtube.com/watch?v=0PqmUMt_wJQ
      Такой подход использования проектора уже более интересен.
  • 0
    зачем вам лазер?)) анализируйте саму картинку

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.

Самое читаемое Разное