2009 год. На конференции E3 Стивен Спилберг (да, да — тот самый) вместе с старшим вице-президентом Microsoft Доном Мэттриком (Don Mattrick) презентуют Project Nata. Именно его весь мир узнает как Kinect, сокращение от слов kinetic и connection. Старт продаж был оглушительным, даже в Книгу рекордов Гиннесса попали. Аксессуар для Xbox 360 обещал подарить новый игровой опыт и поэтому многие, не задумываясь, выкладывали за него 149,99 $.

С тех пор много воды утекло. Две реинкарнации в виде Kinect for Xbox One и Kinect for Windows в итоге были переведены в статус discontinued. В феврале 2019 года Microsoft представила Azure Kinect уже не как игровой аксессуар, а как продвинутый датчик для разработки приложений всего за 399 $. Спустя четыре года производство было свернуто и корпорация вновь похоронила проект. Но там, где закончилась эта история, пока что есть множество энтузиастов (включая меня), которые по-прежнему используют значительно подешевевшие датчики в своих проектах.

В свой очередной поход на барахолку я как раз наткнулся на замечательный экземпляр Kinect Xbox 360, который обошелся мне в смешную сумму 10 €. Я давно хотел пощупать такой девайс, поэтому решил попробовать сделать из него 3D-сканер. Тогда я еще не представлял, насколько этот путь непрост.

Подключение

USB, но не совсем
USB, но не совсем

Первым препятствием для использования станет проприетарный разъем, очень похожий на USB. На самом деле, это обычный USB, но с дополнительным питанием. Датчику, помимо 5V, требуется еще линия 12V 1.5A. С одной стороны, можно было сделать примерно так:

Схема подключения. Источник
Схема подключения. Источник

Резать кабель мне очень не хотелось, так что я решил поискать готовый переходник с питанием. Еще 10 € на Aliexpress, и спустя 2 недели ожидания он до меня доехал:

Фабричный переходник
Фабричный переходник

Теперь можно пробовать подключать его к компьютеру, пока что под управлением Windows 11. Первый неприятный звоночек прозвучал, когда я услышал звук подключения/отключения USB-устройства. Погуглил, но оказалось, что это нормальная ситуация для Kinect 360, если в системе не установлен Kinect for Windows SDK v1.8. Ставить SDK старше не имеет смысла, они уже рассчитаны на более свежие устройства и не работают со старыми.

Софт для Windows

После установки чехарда с переподключением прекращается и Kinect готов к работе. Дело за малым — найти тестовый софт, который умеет превращать данные сенсоров в 3D-модель. Мне даже казалось, что я подобное видел в качестве стандартных приложений Windows 11. Выяснилось, что существует Microsoft 3D Scan, но работает лишь с Kinect One, да и из магазина приложений его давно выпилили:

На свой страх и риск вы можете найти оригинальное приложение, которое осталось в виде архива у некоторых пользователей. Помните, что, есть ненулевой шанс нарваться на вредоносное ПО.

Продукт устарел, софт вам более не нужен
Продукт устарел, софт вам более не нужен

Значит, есть смысл посмотреть на сторонние приложения и самым первым из них будет ReconstructMe от австрийских разработчиков из PROFACTOR. Актуальные версии пока можно скачать по ссылке, но, подозреваю, их скоро не будет. Крайний раз оно обновлялось 3 года назад.

Работает следующим образом. Вначале происходит инициализация устройства, которая длится несколько секунд. Для взаимодействия используется стандартный драйвер из ранее установленного SDK. Вместе с обычным RGB-изображением, девайс передает поток глубины (Depth). Во многих источниках это называют RGB-D. Далее софт использует эти дополнительные данные, чтобы выстраивать карты расстояний от датчика до объектов.

Магия Kinect 360 работает на базе ИК-прожектора, рисующего узор с заранее нанесенным паттерном, формируя тем самым сетку точек. Чтобы зафиксировать, как далеко находится каждая точка, используется ИК-камера, считывающая отраженный узор. Затем он сравнивается с эталонным паттерном, вычисляется смещение и по нему определяется глубина:

Сетка ИК-точек, снято камерой наблюдения Xiaomi без ИК-фильтра
Сетка ИК-точек, снято камерой наблюдения Xiaomi без ИК-фильтра

Следующие поколения Kinect решили отойти от этого принципа, взяв на вооружение измерение времени за которое ИК-импульс отражается от объекта. На практике это означает лучшую работу на дальних дистанциях, выше разрешение глубины, меньше провалов на глянцевых или темных поверхностях.

Сканирование

Пример снимка с RGB-камеры Kinect 360
Пример снимка с RGB-камеры Kinect 360

Помимо ИК-прожектора и ИК-камеры, в Kinect есть самая обычная RGB-камера с весьма скромными характеристиками. Разрешение 640×480 при 30 кадров в секунду. Есть также возможность повысить его до 1280×960, но фреймрейт в этом случае уменьшится вдвое. Вертикальное поле зрения составляет 45 градусов, а горизонтальное 58. Таким образом, максимальный размер сканируемого объекта не может превышать 3,5 м. На практике имеет смысл ограничиться областью в 1,2 м.

Основным препятствием для сканирования станет необходимость плавного ведения камеры. Сильно дрогнула рука или резко ускорилась — сцена будет потеряна и придется все делать заново. Проще всего начать с чего-то небольшого на вращающейся подставке для блюд. Равномерность вращения даст возможность датчикам корректно обрабатывать поступающие данные и правильно сформировать облако точек.

3D-модель стола автора, отснятая на Kinect 360
3D-модель стола автора, отснятая на Kinect 360

Сразу стоит сказать, что цвет будет посредственным, а разрешение низким. Тем не менее если добавить пост-обработку в Blender или другом редакторе трехмерной графики, то результат улучшится. Такую модель можно будет потом отправить на печать или использовать иначе, например, загрузить в игру.

Источник изображения

Есть также интересный способ, совместить изображения с отдельной DSLR-камеры и данные о глубине с Kinect. Снятое при помощи такого комплекта видео наделало немало шума в 2012 году, о нем писали все крупные издания. Оно мне очень напомнило по стилю брейндансы из Cyberpunk 2077:

Кадр, снятый с помощью DSLR-камеры и Kinect. Источник
Кадр, снятый с помощью DSLR-камеры и Kinect. Источник

Проблема лишь в том, что сайт проекта давно исчез из сети и найти тот самый RGBD Toolkit очень непростая задача. Еще неплохой вариант называется KScan 3D. Его главная особенность в том, что он использует собственный драйвер. Это позволяет работать чуть быстрее и точнее. Но это же создает сложность, ведь другие приложения перестают видеть Kinect. Решение — удалить текущие драйверы и Windows вновь установит свои штатные.

Софт для Linux

Пока пользователи Windows вынуждены целиком и полностью полагаться на устаревший SDK, на Linux ситуация более интересная. Существует такой проект, как OpenKinect, который продвигает собственный драйвер libfreenect. Он имеет открытый исходный код и позволяет захватывать все данные с сенсоров Kinect, в том числе и с массива микрофонов.

Установить его можно двумя способами. Если вы пользуетесь операционной системой Ubuntu, то драйвер доступен для инсталляции стандартным пакетным менеджером apt:

$ sudo apt install freenect

Для других дистрибутивов его можно собрать из исходников самостоятельно. Клонируем репозиторий:

$ git clone https://github.com/OpenKinect/libfreenect

Переходим в скачанную директорию:

$ cd libfreenect

Создаем папку build:

$ mkdir build

Открываем:

$ cd build

Запускаем конфигурирование со штатными параметрами:

$ cmake -L ..

На этом этапе можно кастомизировать сборку, например, добавить поддержку Python3:

$ cmake .. -DBUILD_PYTHON3=ON

Собираем:

$ make

После компиляция помещаем бинарники в систему:

$ sudo make install

Далее, можно запустить инструмент freenect-glview:

Стоит понимать, что это лишь базовая проверка работоспособности сенсоров. Для 3D-сканирования потребуется установить дополнительные приложения вроде первых версий FabScan. Актуальная FabScanPi вместо данных с Kinect заточена на лазерный луч. Проще всего в этом плане воспользоваться RTAB-Map, которая доступна для большинства дистрибутивов Linux, а также может быть запущена в виде Docker-контейнера.

Заключение

Когда я только купил себе Kinect 360, то наивно полагал, что смогу без проблем отсканировать множество объектов. На деле же оказалось, что процесс довольно сложный, требующий определенной сноровки и практики. Чтобы получить более-менее приемлемый результат, пришлось примерно час потратить на бесплодные попытки, которые заканчивались ошибкой трекинга объекта.

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

Опять же, помимо 3D-сканирования, Kinect 360 можно приспособить для различных роботов — от движущихся платформ до манипуляторов с грипперами. Если дополнять изображения картами глубины, то, вероятно, получится достичь большей точности управления объектами и ориентирования в окружающем пространстве.

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

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


  1. infund
    04.06.2025 08:39

    Много лет назад приобрел специально Kinect for Windows, он заточен под работу с более близкими расстояниями до объекта, по сравнению с сенсором для XBox. Но, честно говоря, руки так и не дошли до «поиграться».

    Кстати, статью вполне можно добавить в хаб "Старое железо".

    На фасаде надпись Kinect, а не XBox 360



  1. Faurt
    04.06.2025 08:39

    Я ни в коем случае не осуждаю половые отношения с kinect. Сам иногда нахожу себе идею чем бы эдаким поизвращаться, чтоб еще и подзадолбаться.

    Но для галочки напишу, что все же есть относительно бюджетные решения для 3д сканирования. Тот же сканер от Creality Ferret SE за 15 тысяч рублей. Относительно, ибо это явно дешевле чем сканеры за 70-300 тысяч рублей. Ну и половых отношений с этим сканером явно будет меньше, чем с кинектом. Если что, это не реклама. Присматривал себе бюджетный инструмент для 3д сканирования. И то даже не инструмент, а больше как дорогую игрушку, ибо у меня большие проблемы с монетизацией идей и какого-то коммерческого применения этому сканеру я скорей всего не нашел бы.


  1. Gregdev
    04.06.2025 08:39

    Вот таким стал пользоваться, что попытаться сделать ортопедическую стельку. Единственная не удобность - не все порты юсб его видят, только 2 первых на мат.плате. вин10. Проблем с программи не возникло ( год назад). Потом несколько попыток сканирования было неудачных, но примерно за час приловчился. Стельки печатаю.


    1. ToXaHeretic
      04.06.2025 08:39

      Тоже купил от Xbox One несколько лет назад. Теперь стоит на полке сверху, пылится, потому что качество моделей получается просто отвратительное. Пробовал сканировать мотошлем и всякую мелочёвку. Ну и проблема в минимальной дальности фокусировки - объект нужно держать довольно далеко от камеры. В общем ничего адекватного с этих Кинектов не получить. И объёма, как мне видится, не в железе, а в софте. Вообще очень жаль, что такая инновационная технология была заброшена - очень прикольные игры были


  1. igrblkv
    04.06.2025 08:39

    А с камерой от PlayStation 5 такое нельзя провернуть?
    Её на распродажах за 500-900 рублей отдают (так она у меня и появилась).

    Или она только двух объективная, а никаких глубин и прочего в неё не завезли?


  1. outlingo
    04.06.2025 08:39

    Кинет был офигенной штукой для активных игр типа спорт ривалс, фруктониндзи и дансцентрала. Обидно что проект закрыли :-(


  1. r1dg3
    04.06.2025 08:39

    У нас в Ставрополе есть музей Россия - Моя История, там есть интерактивные столы, над каждым из них висит проектор и кинект, и столом можно управлять жестами. Таких столов там стоит чуть ли не под сотню, если не больше. Достаточно оригинальное применение.