niku9's blog

素人がOculusRift + Unity + αでVRアプリを作る日々を綴るブログです

Tobii EyeX SDK for Unityを触ってみる

先日、Tobii EyeX Controllerが届いたので早速触ってみました。Tobii EyeX に関する日本語の情報が少なかったので、自分なりにまとめてみることにしました。
※私の理解不足で誤った情報が含まれている可能性があります。間違いがありましたら私のtwitterアカウントまでご指摘いただければ幸いです。

Tobii EyeX SDK for Unityをインストールしよう

Tobii EyeX Controllerが届いたら、同封された説明書に沿って、Controllerの設置とUSB3.0でPCと接続します。
http://developer.tobii.com/eyex-setup/のDownloadボタンから、EyeX EngineとEyeX Controllerのドライバをダウンロード、インストールします。
キャリブレーションや設定が自動的に開始されます。設定の変更や再キャリブレーションするには、インストールされたTobii EyeX Settingsを起動すれば何度でも設定できます。
つぎに、http://developer.tobii.com/downloads/の、Tobii EyeX SDK for Unity 0.23をダウンロードします。

Developer's Guide Unity.pdfを読もう

Tobii EyeX SDK for Unity 0.23をダウンロードすると、TobiiEyeXSdk-Unity-0.23.325ディレクトリにDeveloper's Guide Unity.pdfがあります。もしくは、http://developer.tobii.com/documentation/から見れます。実はこれが EyeX SDKのリファレンスにあたります。

これにはサンプルコードも含め、SDKの概要と使い方が書いてあります。

詳細は次回以降にするとして、ここでは知っておきたい基本的事項について簡単にまとめておきます。
・EyeX Engineとは、Tobii EyeX ControllerなどのEyeTrackingデバイスのセンサ情報とキーボードなどのユーザインプット情報を監視し、アプリケーションとのインタラクションを司るものです。
・EyeX Engine APIへのアクセス方法は2種類提供されており、ひとつは、EyeX SDKを経由してEye Engine APIにアクセスします。今回はこれを使用します。
・もうひとつはGaze SDKといい、EyeX SDKよりも低レベルを扱えるSDKのようです。 今回は触れません。
・また、ちょこちょこ目にするTobii REXとは、LinuxAndroid用のEyeTrackingデバイスのようですが、$795もします。。。ので、今回は触れません。
Unity Free版でもEyeX SDKは使えます!(重要)

UnitySamplesで遊ぼう

Developer's Guide Unity.pdfを読んでいてもイメージが掴めないので、TobiiEyeXSdk-Unity-0.23.325\UnitySamplesを動かしてみます。

Unityを起動し、ダウンロードしたUnitySamplesをOpenします。
UnitySamples\Assets\Scenesには5つのサンプルシーンがあります。適当に選んだSceneを実行し、実行中にtabキーを押すと次のシーンに移動できます。
ここで注意点として、EyeX Engineへのキーボード入力は特殊キーと呼ばれるキー(デフォルトではアプリケーションキー)で操作します。ちなみに、Tobii EyeX Settingsから変更出来ます。

Scripts\EyeXにはユニティ用EyeXフレームワークスクリプトがあり、Scripts\Behaviorsにはサンプルシーン用のScriptsがあります。どちらもC#で書かれておりオープンソースなので、自作アプリにこれを改造して使用することができます。

MonoDevelopでビルドしよう

Scripts\BehaviorsのスクリプトをダブルクリックでMonoDevelopを起動し、ビルドすると、


Error Error: System.BadImageFormatException: ファイルまたはアセンブリ 'file:///~(略)~\TobiiEyeXSdk-Unity-0.23.325\UnitySamples\Assets\Plugins\Tobii.EyeX.Client.Net20.dll'、またはその依存関係の 1 つが読み込めませんでした。間違ったフォーマットのプログラムを読み込もうとしました。 (Error: System.BadImageFormatException) (Assembly-UnityScript-firstpass)


というエラーが起こりました。
この原因は、Forumによると、アセンブリC#以外の言語も含んで作られたからだそうです。
なので、UnitySamples.slnではなく、UnitySamples-csharp.slnをMonoで読みこめば良いとのことです。
MonoのFile/OpenからUnitySamples-csharp.slnを読み込んでビルドします。 すると、参照エラーが大量に発生したので、MonoのSolutionのReferencesにTobii.EyeX.Client.Net20.dllを追加したら、正常にビルドが出来ました。

自作Sceneを追加しよう

続いて、Sceneに自作Sceneを追加していこうと思います。
UnityのFile/New SceneでMySceneを作成し、まずは5つのサンプルSceneを参考に作ってみるのが良いかと思います。 私は、2番めのサンプルEyePositionSceneと似たようなSceneを作成し、センサによる3Dデータの取得とオブジェクトへの反映の動作確認をしました。

所感

Tobii EyeX SDKのリファレンスはDeveloper's Guide Unity.pdfになっていることから取っ付きにくい印象でしたが、UnitySamplesのScriptsを見れば、大方使い方を理解できそうだと思います。

次回以降に、SDKの詳しい使い方を紹介できればと思います。

vuforia × Unity で簡単!ARアプリ開発

お久しぶりです。niku9です。

前回の記事ミクさんが腹筋を応援してくれるアプリ MikuMikuTraining を製作しました - niku9's blogでは、たくさんの方に動画をご覧いただけたようです。

ニコニコ技術部カテゴリランキング1位になったり、2万再生超えたりと、予想を上回る反響ぶりでした。皆さんありがとうございます!

MikuMikuTrainingもそのうちバージョンアップ版を投稿しますので、その際はまたよろしくお願いいたします!

 

さて、本題に移ります。

7時間ほど前に、非常に興味深いARライブラリ「vuforia」の存在を知り、Unityと組み合せてARアプリを作成したので、備忘録としてまとめます。

作成したARアプリはこんな感じです。

 

DeveloperProgram申請が終わればiPhoneアプリにできるはずです。

 

では、vuforiaをUnityで使用する方法についてまとめます。といっても、他の方がすばらしい記事をまとめているので、本記事はそれらの架け橋をする程度です。

※Unityはインストール済みとします。

 

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

 

1. Unity Extension Vuforiaの ダウンロード

 

まずは、https://www.vuforia.comにアクセスし、必要なライブラリをダウンロードします。この手順については、以下の記事の「まずはダウンロード」の7番までを参考に行ってください。

無料ライブラリ「Vuforia」でARアプリを作る!②【ダウンロード・ビルド篇】 | 日本VTR実験室

 

7番までの手順を行ったら、以下のURLに移動します。

https://developer.vuforia.com/resources/sdk/unity

 

今回はUnityでの開発なので、左にある「Unity Extension」を選び「Download Unity Extension 2.8.7 for Android & iOS」を選択し、ダウンロードを開始します。 

f:id:niku9punipuni:20131229235022p:plain 

「 vuforia-unity-android-ios-2-8-7.unitypackage」というファイルがダウンロードされました。

 

2. UnityProjectへインポート

次に、Unityを立ち上げ、新規プロジェクトを作成します。

その後、先ほどダウンロードした「 vuforia-unity-android-ios-2-8-7.unitypackage」を起動すると、インポートが始まります。

f:id:niku9punipuni:20131230000455p:plain

 

インポートすると、Assetsの下にフォルダとファイルが作成されます。

f:id:niku9punipuni:20131230000712p:plain

 

 

3.  ARマーカーの登録 および Unityで簡単なARプロジェクトの作成

次に、自分が持っている画像をARマーカーに登録します。

ARマーカーの登録方法と、Unityで簡単なARプロジェクトの作成は以下の記事を参考にしてください。

Unity + VuforiaでARに挑戦する - Qiita

 

この記事ではARマーカーオブジェクトImageTargetの作成まで行っています。

カメラがこのImageTargetを認識した時、特定のオブジェクトを表示するにはImageTargetの子オブジェクトとして設定します。この画像だとhachuneがそれにあたります。

子オブジェクトはMMDでなく、まずは簡単なCubeで試してみるのがよいと思います。

f:id:niku9punipuni:20131230003716p:plain

 

以上で、簡単なARアプリは作成できるはずです。 

 

【終わりに】

私が作成したアプリのように、MMDモデルを使用したい場合は、MMD4Mecanimを利用します。使い方、ダウンロードなどはStereoarts Homepageへどうぞ。

なお、マーカーにお札全体の画像を使用すると通過偽造及び行使等第148条に引っかかるのかもしれません。なので、私はお札の一部分だけの画像をマーカーに使用することでそれを回避しています。

 また、お札は薄く、透過するので、財布などを下敷きにしないと認識率はガクンと落ちます。適切な特徴点抽出が必要だと考えます。そもそもvuforiaがどのような特徴点抽出方法なのか調査できていないので、今後調査したいと思います。(そもそも公開されているのかな?)

 

ここまでお読みくださりありがとうございました。手軽にARアプリを作ることができますので、ご興味のある方はぜひチャレンジしてみてください。 

 

 

ミクさんが腹筋を応援してくれるアプリ MikuMikuTraining を製作しました

 みなさん、お久しぶりです。Oculus Rift Advent Calender 2013の16日担当のniku9です。

OculusRiftが届いて一ヶ月、なんとかアプリを製作し、動画をアップロードすることが出来ました。こちらを御覧ください。

 

 

 アプリ経験の無い素人が、Oculusアプリを開発する目標は達成できたと思います。

 

 なおアプリ内容は単純です。カメラの角度で腹筋の判定をし、そのフラグによってミクさんのMecanimを遷移させています。

 

 アプリ開発のため、音声データを提供してくれたhmtkさんを初め、アドバイスをしてくださった皆様にお礼を申し上げます。ありがとうございました!

また、OculusRiftやUnity、MMD4Mecanimなどのプラグインの登場。MMDのリソースが充実していることなどのバックグラウンドがあってこそ、このアプリが実現したので関係者各位には頭が上がりません。ありがとうございました!

 

 「Unityでアプリを作ってみたいけど出来るかな?」という方は、前述したとおり個人がアプリ開発するためのバックグラウンドはかなり整っているので、今がチャンスだと思います。

実際に、主婦ゆに!(http://togetter.com/li/601037)のようにチャレンジしている人もいます。

 

 この記事が、新たな一歩を踏み出したい人達の後押しになれば幸いです。

 

 Oculus Rift Advent Calendar 2013の、次の記事は@CST_negiさんです。よろしくお願いします!

 

OculusアプリMikuMikuTrainingを開発したいのだけど・・・(´・ω・`)

今日で、OculusRiftを手に入れてちょうど一週間経ちました!

今までに行ってきた事を記事にしようと思いましたが、もっと大事なことがありました。。。

 コレです!(ドンッ!)

 

<MikuMikuTrainingとは・・・!>

・ミクさんが筋トレを応援してくれるアプリです!

・OculusRiftのみで他のコントローラを必要としません。

・ユーザーの腹筋に合わせてミクさんが回数を数え上げてくれます。

・一定時間休んでいると叱られます(「・ω・)「コラー

・目標回数を達成すると褒めてくれますヽ(=´▽`=)ノワーイ

 

 以上の仕様で、Oculusアプリ開発を行います!

※余談ですが、将来的には腹筋だけでなく、腕立て伏せや背筋、スクワットなど様々なTrainingをミクさんが応援してくれるものにしたいですね。Rift V1では6DOFになるようなのでそれも実現出来るでしょう。

(参考:VRディスプレイがゲームの表現を変える? 次期バージョン「Rift V1」の話題も出たAPU13基調講演レポート - 4Gamer.net)

 

 実は本題はここからでして、このMikuMikuTraining。46リツイート21ファボという予想以上の反響に答えるためにも、MMDを触ったことも無いに替わってMMDモーションを作成してくれる心優しい方をお待ちしております!@niku9Tenhou←こちらまで!

 なお、音声データは@hmtk77さんが作成してくれる事になりました!ありがとう、はまたくさん!

  ご興味のある方!ぜひ一緒に楽しいアプリを作れればと思います!

「協力したいけど時間がないよ(´・ω・`)」という方も、素人の私にアドバイスを頂ければと思います。@niku9Tenhou←こちらまで!

  人助けだと思って是非よろしくお願いします~(´;ω;`)@niku9Tenhou←こちらまで!

 

それではまた!ヾ(o゚ω゚o)ノ゙@niku9Tenhou←こちらまで!

 

 

OculusXmasアプリ開発戦争勃発・・・?

 

事は、何気ない一つのツイートで始まった...

 

 

 

すると、日本人初OculusVR公式サイトでアプリ公開したあの@yuujiiさんが(

https://share.oculusvr.com/profile/yunojy)

 

 

ミニスカサンタコスのルカさんきたああああああああああああああああああああああああああキタ━━━━(゚∀゚)━━━━!!

 

 

というわけで、Xmasアプリが作られるかもしれません。これはwktkが止まりませんね(*´ω`*)

 

居ても立ってもいられず、何か私にできることはないかお尋ねしたところ

 

 

参考↓

 

二次元の嫁を愛する紳士に素敵なXmasプレゼント(Oculusアプリ)を・・・!(´;ω;`)

 

この案は採用され、インタラクションとして一緒に歌ったりローソクの火を消したりしたい!という話になったところで

 

 

おおおおおお!!! 音声認識キタ━━━━(゚∀゚)━━━━!!

 

・・・というわけで、とんとん拍子に話は進み、Xmasアプリ実現しそうです!

 

それぞれが得意な技術を持ち寄って一つのプロジェクトが(それも急激に)進んでいく様を、とても近い位置で実感することが出来、昨日は一人で感動して眠れませんでした(*´ω`*)

人脈ってとても大切なんだな。ということを改めて感じる事ができ、私も早くその一員になりたいと思いました!がんばろう!

 

あ、念のために言っておきますと、アプリを作るのはyuujiiさんですのでクオリティはご安心ください。

 

 

え、お前は何をするのかって?

 

 

 

 

 

 

 

 

・・・ナニモデキマセン(´;ω;`)ブワッ

 

(勿論何かやらせてもらえるのでしたら全力でやらせていただきます!(`・ω・´)シャキーン)

 

そんな私の(素人感満載な)進捗は次回以降の記事に書いていきます。

 

 

 

と、とにかく!Xmasアプリは期待して良いと思います!

 

それではまた!ヽ(=´▽`=)ノ

はじめましてniku9です

------------------------------------------

本日のおしながき

 1 自己紹介

 2 ブログの方針

 3 おまけ

------------------------------------------

 

  1 自己紹介

  • ブログ書くの初めて
  • OculusRift触るのも初めて
  • Unity触るのも初めて
  • プログラミングも素人(javascriptC#も触ったこと無い)

 そんな私niku9(にくきゅう)が無謀にもOculusRift + Unity + αでVRアプリを作ってしまおう!というわけです。ついでにブログの書き方も覚えようというわけです...

目標としては1ヶ月後12/16にOculus Rift Advent Calendar : ATNDにて記事を投稿させていただくことになりましたので、それに向けてVRアプリのプロトタイプを作成したいと思いますヾ(o゚ω゚o)ノ゙

(年末は仕事もプライベートも忙しいこともあり)かなり無謀なプロジェクトですが、目標がないと頑張れない性格なのでしゃーない!特許?論文?知らない子だねぇ・・・嘘です。仕事はちゃんとします...(☍﹏⁰)

 

 2 ブログの方針

 このブログはそんな素人がVRアプリを作るに至っての四苦八苦を綴ることで、

  • 同じく素人の方の役に立つ
  • 素人がどんなところで躓くか玄人に知ってもらう
  • そして玄人の方に助けてもらう

以上のようなブログを目指します。

 

 3 おまけ

 上記プロジェクトにあまり関係ないどーでも良い自分のプロフィールをば。

  • ひよっこ社会人 画像処理応用製品の製品開発を主にやっています。画像処理ライブラリの作成時にC言語を触ったりします(頻度としては少ないですが)
  • 趣味レベルですが機械学習やコンピュータビジョンの勉強をしています
  • プログラミング言語も興味はあれど本腰入れて取り組んだ言語はありません
  • 情弱です
  • 麻雀が好きです。オンライン対戦麻雀ゲーム 天鳳に3年くらいどっぷりハマってました。天鳳八段です。どやぁ...(╹◡╹)1度写真アップしたら削除出来ないんですね。こんなところで写真容量の無駄遣い...しかもPNG形式だし...ポイント3桁しか無いし...

f:id:niku9punipuni:20131116023018p:plain

 

  • フレンチホルンやギター弾けます(半年くらい触っていない)

 こんな私ですが、どうか生暖かい目で見守ってくだされば幸いです。どうぞよろしくお願い致します。