2015-06-09 5 views
-1

Я работаю над пианино AR, и я попытался решить эту проблему. Проект состоит из бумажного пианино, в котором пользователь сможет играть на бумажном пианино, а через AR приложение распознает, какие клавиши воспроизводятся.Выполнение дополненной реальности Фортепиано

Моя цель изображение очень похоже на это: enter image description here

I'm с помощью Vuforia вместе с Unity 3D для проекта, и что I've сделано до сих пор является добавление виртуальной кнопки на каждую клавишу , Это очень хорошо работает с камерой прямо над целью изображения, но у меня возникает проблема, когда пользователь играет на аккордах, есть другие скрытые ключи, заставляя записи приложений играть, которые он не должен играть. То же самое происходит, когда пользователь играет черную клавишу.

Я видел другие подобные проекты на YouTube и обнаружил, что это делает очень хорошую работу, признавая черные ноты и аккорды:

https://www.youtube.com/watch?v=FHJ_I6DmFNw

Большая разница между видео и моим проектом является то, что они don' t поставьте телефон прямо над целью изображения. Помещение телефона перед пианино, как в видео, помогает, потому что камера теперь видит, какие конкретные клавиши нажаты, остальная часть руки скрывает другие клавиши. Еще одна вещь, которую я заметил, это то, что у пианино нет букв на клавишах, и в моем проекте, если я удалю имена заметок, я не могу заставить виртуальные кнопки работать, потому что виртуальные кнопки должны быть размещены на богатых изображениях которые отличаются от остальной части цели изображения.

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

Должен ли я изменить цель изображения, чтобы поместить его в перспективе? Или я использую неправильный AR SDK для этой цели? Также как я могу удалить имена заметок и распознать положение пальцев пользователя?

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

Спасибо

ответ

1

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

Итак, если вы пытаетесь сыграть черные клавиши, у вас может возникнуть проблема с функцией block(), которая обнаруживает, когда черные клавиши, а также две белые клавиши ниже/рядом с ней, будут закрыты. И, следовательно, играйте только тон черной клавиши, если это произойдет.

Для, например: Если F # воспроизводится, то

if(pressed(Fsharp) && pressed(F) && pressed(G)){ 
playsound(Fsharp); 
} 

И чтобы он эффективно работает, попробуйте сделать что вы проверить эти условия первой перед проверкой, если один ключ щелкнул. Таким образом, вы могли бы начать в CheckNumberofKeysDown(); и только затем запустить поток, который проверяет, если ключи вместе с помощью клавиш в пределах перечисления или массива keys[] и использовать условие как

//Second touched key compared with the first key's neighbor 
if(key[touched[1]]!=key[touched+1]){ 
playsound(touched[0]); 
playsound(touched[1]); 
} 

Так это всего лишь несколько идей который перешел мне в голову, пытаясь понять это. Угол, который они использовали, почти нереальным.Но наличие камеры с вами с другой стороны было бы идеальным, так как вы получили бы лучший обзор всех ключей.

Да, очевидно, вам нужно много R & D, чтобы работать отлично. Надеюсь, вам это поможет. И удачи!

+0

Большое спасибо за вашу помощь :), я попробую ваши идеи и опубликую любое открытие, которое я получаю. –

Смежные вопросы