LINUX.ORG.RU

Опубликованы исходники MoveNoid — бесконтактного арканоида под Linux

 , , ,


3

4

MoveNoid — это бесконтактный арканоид, в котором управление ракеткой осуществляется в воздухе с помощью специально размеченной картонки. Игра написана с помощью библиотеки компьютерного зрения OpenCV и популярного движка двумерной физики Box2D. В качестве фреймверка общего назначения используется Qt 5.9. Исходные коды proof-of-concept были открыты в этом месяце под свободной лицензией GPL v.3 и Modified BSD.

Для игры потребуется компьютер, веб-камера и специально размеченная картонка (чертеж разметки доступен на официальной странице игры). Желательно использовать камеру высокого разрешения с быстрой незамыливающей изображение матрицей. Автор использует бытовую Logitech C270, однако лучше подойдет более продвинутая модель C615, или другие веб-камеры из профессиональных серий.

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

Для интересующихся доступны ссылки:

Официальная страница игры

Видеообзор с демонстрацией процесса игры

>>> Подробности: Новость на сайте автора

★★★★★

Проверено: Shaman007 ()

А ты чего о себе в третьем лице то?

P.S. В сыром подвале на цепи и красноглазием страдая, наш линуксоид там сидит и тихо кодик набивает ::)

Deleted ()

Так то прикольно, в том плане что подумалось, а ведь можно сделать трекинг систему и захватывать анимацию. (Просто мне это интересно сейчас) А захваченое сразу привязывать к костям моделей например проекта makehuman, очень удобно будет. В том же блендере что бы трекинг сделать надо упороться огого как, ну или я неосилятор.

Deleted ()

Чёрт, парни реально круты. Всякие гуглоочки, шлемы виртуальной реальности, m$ кинект, акселерометры и гироскопы в каждой мыльнице, нафиг всё это. Всё что нужно, это хорошая вебкамера и кусок картона!

kirill_rrr ★★★★★ ()
Ответ на: комментарий от Deleted

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

В арканоиде метка одна, и она безошибочно детектится где-то при диагональных наклонах +/- 15 градусов, имеется в виду вот это:

Глазок камеры и метка в разрезе: [) ----- /

Когда метку держишь руками, допустимый угол нетрудно соблюсти.

А когда ты будешь махать руками с несколькими метками на костюме, то такого угла ты не соблюдешь. Единственный способ - просто контрастные метки, но тогда программа не будет понимать, где рука а где голова. И если даже задать и отслеживать, то если метки на изображении сольются при каком-то движении, то после разлияния опять получится неопределенность.

Xintrea ★★★★★ ()

прикольно, только пожалуйста, не произноси больше вслух «фреймвёрк».
ещё интересно, были ли тесты, сколько среднестатистический человек может «бесконтактно» играть, прежде чем результаты начнут ухудшаться?

system-root ★★★ ()
Последнее исправление: system-root (всего исправлений: 1)
Ответ на: комментарий от fluorite

openpose

Штука прикольная, но видно что пропадает то одна конечность то другая. Потому что распознавание именно в таком виде неустойчивое. Там много нужно руками допиливать после анализа видео. Впрочем, если подобрать движения и условия съемки, должно получиться неплохо для домашнего Motion Capture.

Xintrea ★★★★★ ()
Последнее исправление: Xintrea (всего исправлений: 1)
Ответ на: комментарий от system-root

только пожалуйста, не произноси больше вслух «фреймвёрк»

В наших палестинах все только так и говорят, привыкай.

ещё интересно, были ли тесты, сколько среднестатистический человек может «бесконтактно» играть, прежде чем результаты начнут ухудшаться?

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

Xintrea ★★★★★ ()
Последнее исправление: Xintrea (всего исправлений: 1)
Ответ на: комментарий от Xintrea

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

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

anonymous ()

Кстати зачем?

-void GameWindow::onSetLives(int iLives)
+void GameWindow::onSetLives(const int iLives)

ox55ff ★★ ()
Ответ на: комментарий от Xintrea

когда ты будешь махать руками с несколькими метками на костюме, то такого угла ты не соблюдешь. Единственный способ - просто контрастные метки, но тогда программа не будет понимать, где рука а где голова.

катафотные (светоотражающие) метки из полосок или колец из соответствующей ткани. и подсветка от камеры

anonymous ()
Ответ на: комментарий от Xintrea

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

Надувные нарукавники разного цвета.

CrossFire ★★★★★ ()
Ответ на: комментарий от ox55ff

Потому что это сеттер, он iLives не меняет. Мы показываем это компилеру.

Xintrea ★★★★★ ()

работы тут еще ого-го, причем не про плюшки игры. Добавить бы минимальную «фильтрацию» положения картонки в пространстве.

Короче, мне не удалось заставить устойчиво работать картонку.

demidrol ★★★★★ ()
Ответ на: комментарий от Xintrea

Дык, это же не ссылка и не указатель. Мы при всём желании не сможем изменить значение за пределами метода.

Ну да ладно, это холиварный вопрос.

ox55ff ★★ ()
Ответ на: комментарий от ox55ff

Сейчас не ссылка, потом может что-то поменяться. Я обычно стараюсь заранее консты написать везде где значение не меняется.

Xintrea ★★★★★ ()
Ответ на: комментарий от demidrol

Там четыре этапа фильтрации. Многие настройки надо в интерфейс выносить, чтоб было что крутить. Кстати, ты уровень контраста в настроечном окне выставил, как это написано на официальной странице?

Xintrea ★★★★★ ()
Ответ на: комментарий от Xintrea

хм, мне не удалось такую картинку получить. Похоже, что у меня автоэкспозиция все портит. Попробую отключить.

demidrol ★★★★★ ()
Ответ на: комментарий от demidrol

Я специально видео для таких случаев и записывал, чтоб было видно как оно должно быть. А то набежит толпа троллей с криками «нифига не работает».

Кстати, я считаю, что на видео лаг довольно небольшой для наколенного поделия.

Xintrea ★★★★★ ()
Ответ на: комментарий от Xintrea

я так понимаю, ты не особо мудришь с распознаванием краев объектов — просто выше-ниже уровня?

Мне не удается избавиться от изображения своей морды в камере. Ну, и рука тоже. Хотя ты-то в кофте на видео — возможно, это тоже роль играет.

demidrol ★★★★★ ()
Ответ на: комментарий от Xintrea

Кинект, кстати, всё. Не будет больше производится и поддерживаться.

fluorite ★★★★★ ()

Думал, надеялся даже, что стикер будет прикреплен ко лбу для удобства, ан нет

Deleted ()
Ответ на: комментарий от demidrol

Как это не мудрю, там оценивается как минимум форма, площадь, соотношение сторон, предыдущий и текущий угол наклона. Пятно, которое не квадратное и не прямоугольное, сразу будет отброшено.

Xintrea ★★★★★ ()
Ответ на: комментарий от Xintrea

я про нахождение границ объектов. Вижу, что используешь cv::findContours, которому скармливаешь B&W-фрейм. Т.е. информация о градиентах не учитывается.

Я не спец в этой области, но по картинке с камеры видно, что у всех объектов в области видимости, кроме картонки, края размытые.

demidrol ★★★★★ ()
Ответ на: комментарий от Xintrea

а «фильтрация» — это про то, что картонка не может мгновенно из одного края экрана переместиться в другой или вообще перевернуться. Но это опять же к вопросу о настройке камеры.

demidrol ★★★★★ ()

Сделайте нормальную графику, уровни и бонусы как в dxball/sdl-ball, а то только ради самой идеи управления картонкой что-то даже смотреть не хочется. Хотя казалось бы первый раз в жизни я вижу применение камере в ноутбуке.

slovazap ★★★★★ ()
Ответ на: комментарий от demidrol

Да, и от самой камеры многое зависит. У тебя какая модель?

Xintrea ★★★★★ ()
Ответ на: комментарий от demidrol

Тогда играйся с освещением. Пока не получишь контрастную картинку, на которой четко виден только маркер и немного шума, как на официальной странице, дальше можно не ковырять.

Xintrea ★★★★★ ()

отлично!1 добавить немного графона и на стим стричь бабло

bender ★★★★★ ()

Под оффтопик нет? Всего-то либы в .pro добавить.

Кстати, внятного описания на github я не нашел. Надо бы по свободе форкнуть и привести до ума.

Release ()

Круто!
А по сети будет? Чтобы как в настольный теннис с другим играть.

anonymous ()

Да, таки пересобрал под оффтопиком. Интересный проект, давно хотел таким заняться, но руки не доходили.

Release ()
Ответ на: комментарий от Release

Вау, а можешь сборку мне кинуть? Положу вендоюзерам, пусть попробуют. Только со всеми либами. xintrea[цоббакен]gmail.com

Xintrea ★★★★★ ()

Вы там в бложике надпись подправьте, а то у проекта «сраничка», что символизирует.

anonymous ()
Ответ на: комментарий от system-root

только пожалуйста, не произноси больше вслух «фреймвёрк».

Это ты ещё до призношения «лину́кс» не дослушал =)

Xintrea, предлагаю такую идею. Вместо вырезания и раскрашивания картонок можно сделать управление смартфоном. То есть выводить контрастную картинку на экран, и её уже распознавать. Подумай, по-моему это будет удобнее для пользователей.

Crocodoom ★★ ()

NoveNoid — это бесконтактный арканоид

Очепятка в первом же слове новости

Crocodoom ★★ ()

Респект и уважуха :)

Классная штуковина вышла. Но надо идти вперед .... Ну в смысле развивать. Мне, во первых, сразу пришла в голову мысль что картонка это не кошерно(халяльно , православно...). КМК будет удобнее взять настоящую ракетку для пинг понга и на неё наклеить нужную картинку. Эт фёрст. Второе - для облегчения наклейку сделать из светоотражающей ленты и поиграть с опциями камера контрастность, яркость, баланс. Свет от камеры и картинка станет очень легкой в работе. Может я конечно в капитана о. играю - тогда звинайте дядьку.

Но фантазия разыгралась дальше . Если уж сказали «А» надо и Б говорить. Ракетка у Вас в 3D так и мишень в три де просится - ну нарисовать эдакий коридорчик, хоть из проволочек, и в нем расставлены кирпичи ... В художественном ... порядке.

michman-panin ()

И мешающей задержки нет?

gag ★★★★★ ()
Ответ на: комментарий от Xintrea

> однозначные метки, которые будут определяться под любым углом.

Текстуры какие-нибудь. Например, шашечки чёрно-$COLOR, где $COLOR у каждого узла свой. На гладких телах (не стелс-формы) всегда будет участок, видимый под углом <15°. Локоть обмотал и норм. Только вряд ли это будет бумага, что резко усложняет изготовление.

muon ★★★ ()
Последнее исправление: muon (всего исправлений: 1)
Ответ на: комментарий от Crocodoom

Есть подозрение, что кроме удобства светящийся экран смартфона будет лучше виден камере, а баланс белого (если он включён в камере) будет делать фон темнее (не запускал, но из описания показалось, что это будет полезно).

muon ★★★ ()

> Одна из полезностей - стрельба

Понадобится «кнопка». Чем стрелять?

//видео не смотрел

muon ★★★ ()

Затея всем настолько понравилась, что даже не поругали за «Репозитарий».

> Сделать чтобы из кирпичей вылетали призы и полезности

И вредности давай. Только правильные: не чтобы от них уворачиваться, а чтобы получать за страдания дополнительное бабло/ачивки.

muon ★★★ ()
Ответ на: комментарий от Xintrea

Тогда играйся с освещением. Пока не получишь контрастную картинку, на которой четко виден только маркер и немного шума,

А если взять ракетку от настольного тенниса и развести на ней маркеры светодиодами?

anonymous ()

Оптическое позиционирование самое неточное. Даже чел. не может определить на глаз сколько точное расстояние до стены.

mx__ ★★★★★ ()
Ответ на: комментарий от Xintrea

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

Что-то типа светящегося жезла полицейского?

sniper21 ★★★★★ ()
Последнее исправление: sniper21 (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.