忍者ブログ

nyaruratoの製作記録

フィギュアやプラモデルについてもそもそと語っていきます。 最近は電子工作・ゲーム製作に興味アリ

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

necomimiをUnityで使う

追記:<注意>内部でどういう処理がされてるか分からない以上、出てくるデータが脳波とは言いきれません。2014.7.18

動いたのでとりあえずのまとめ。

http://developer.neurosky.com/docs/doku.php?id=using_thinkgear_with_unity
ここのUnity3D Package, available hereと書いてあるところからダウンロード。
どうやらIntroductionから下は古いっぽいので読まなくてもいいと思います。
unity3d packageをプロジェクトに突っ込んでその中にあるreadmeを読んだほうがいいと思います。

前提条件としてThinkGear Conectorが必要です。起動もしておいてください。

使い方ですが
1.NeuroSkyAssets>NeuroSkyTGCController
の中にあるNeuroSkyTGCControllerのprefabをHierarchyにつっこむ。
2.NeuroSkyAssets>NeuroSkyScripts
の中にあるDisplayDataをカメラにあてる。

このままだとDisplayDataのスクリプトのテクスチャがないとかでエラーがでると思うので、DisplayDataをあてたカメラのInspectorビューのDisplaydataのところのSignal IconsをSizeを5、Elementを上から緑、赤、黄1、黄2、黄3とします。


この状態で再生して数値とかが出ていればokです。
対象のコンピューターによって拒否されたため、接続できませんでした。と出たらThinkGear  Conectorのつけ忘れだと思います。

最初の状態ではPoorSignal,Attention,Meditation,Deltaしか表示されていないです。
変更や増やしたい場合、例えばLowgammaの値を取りたい場合は、


public class DisplayData : MonoBehaviour
{
   .
   .
   .

  private float lowgamma;
  void Start(){
   .
   .
   .
 controller.UpdateLowGammaEvent += OnUpdateLowGamma;
  }

   .
   .
   .

  void OnUpdateLowGamma(float value){
   lowgamma = value;
  }
void OnGUI()
{
.
.
.
GUILayout.Label("LowGamma:" + lowgamma);


}
}




としてやれば表示されると思います。(とりあえず追加箇所だけ)

ただ、僕の場合遅くなったり(2,3fps)することがよくありました。
多くの場合がnecomimiがThinkGear Conectorと繋がっていないことによって起きていたような気がするのですが、繋がっている時も遅かったような気がするのでよくわかりません。
あとJsonExceptionがよく出てきて全然数値が取れませんでした。

いろいろと試していてどうやらTGConnectionController.csのParseData()が原因っぽいなと分かりました。

別のスレッドで処理すれば遅くなるのを回避できるのではと思ったのでやってみたらできました。
JsonExceptionもなぜか減りました(無くなってはない)


.
.
.
using System.Threading;

public class TGCConnectionController : MonoBehaviour {
.
.
.
private Thread th;

void Start () {
th = new Thread(parse_call);
Connect();
}

public void Disconnect(){
//if(IsInvoking("ParseData")){
//CancelInvoke("ParseData");
th.Abort();
stream.Close();
//}
}

public void Connect(){
//if(!IsInvoking("ParseData")){
.
.
.
//InvokeRepeating("ParseData",0.1f,0.02f);
//StartCoroutine(parse());
th.Start();

//}
}

void parse_call(){
while(true){
ParseData();
}
}
.
.
.
}




Threadを使うのは初めてでむちゃくちゃな使い方かもですが一応動いたのでその報告。
もっと良いやり方あったら教えて下さい。

拍手[0回]

PR

Comment

お名前
タイトル
E-MAIL
URL
コメント
パスワード

カレンダー

03 2024/04 05
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

リンク

最新CM

[07/16 listener]
[07/15 nyarurato]
[07/12 listener]
[12/19 satotaku]

最新TB

プロフィール

HN:
にゃるらと
性別:
男性
自己紹介:
こんにちは。
プラモやフィギュアなどについて書いていくつもりのブログです。
Twitter
https://twitter.com/sakura_metal

バーコード

ブログ内検索

Copyright © nyaruratoの製作記録 : All rights reserved

TemplateDesign by KARMA7

忍者ブログ [PR]