脳波 x Unityでドラッグレース

先日、脳波でネコミミを操作するデモ動画をみてから、脳波おもしろい!ということで。
http://www.youtube.com/watch?v=w06zvM2x_lw

Neurosky社から発売されているMindSetを購入して、やってみました。
https://store.neuro-bridge.com/index.php?main_page=product_info&cpath=1&products_id=1
これは、APIも公開されているので、色々と遊べます。


こんな感じ


自分の脳波の集中力(Attention) VS リラックス(Meditation)でドラッグレース

動画をアップしました。
プレイしてる様子、、、ただ見てるだけ、、、笑

MindSet2台を接続して、2人の脳波(Attention)で対戦するのもやってみました。
なかなか面白いのですが、思ったようにコントロールするには修業が必要なようです。


で、MindSetを買うと、Unityのプラグインが付いてきますが、プラグインはUnityのプロバージョンでしか使えません。
データはBlutooth接続からシリアルポート経由で取得できるので、
ということで、付属していたCベースのソースコードC#に書きなおして、無料のUnityでも使えるようにしてみました。
折角書いたのでGPLで公開します。(あまり需要無さそうですが)
http://www.cis.sojo-u.ac.jp/~izumi/codes/MindsetUnity.unitypackage


使い方:
1.パッケージをインポートします。
インポートすると、いくつかエラーが出ます。
シリアルポートからの読み込みにSystem.IO.Portsパッケージを使っていますが、このパッケージはUnityが使用している.NET 2.0 Subsetには含まれていません。


2.Edit->Project Settings->Playerを開きます
3.Optimization- > Api Compatible Levelを .NET 2.0にします
4.Unityを再起動します
5.MindsetReaderをMainCameraなど(シーン中のオブジェクトなら何でもいい)に追加します
6.インスペクターでCom Portの値を、Mindsetを接続したシリアルポートの名前に変更します
これで基本的な準備完了です。
MindsetReaderのStartReadingを呼び出せば、読み込みが始まります。
MindsetLogger, MindsetLighter, MindsetLoggerGUIがサンプルとして付属しています。


7.MindsetLoggerGUIを適当なGameObjectに追加します(MainCamera)でもOKです
8.インスペクターでMindsetLoggerGUIのReaderに5でMindsetReaderを追加したオブジェクトをドラッグします
プレイして、MindSetが正しく接続されていれば、データが送られてきます。


MindsetLoggerGUIの中でハンドラを登録しています。
このハンドラは、Mindsetからのデータを読みだして、必要に応じて呼び出されます。
新しくMindsetReaderから値を呼び出したい場合は、新しいスクリプトでハンドラを登録するように記述して、7〜8の作業を行って下さい。
Logger, Lighter(ライトに追加してください), LoggerGUIのサンプルが参考になると思います。