ちょっと未来

ちょっと未来を感じさせるガジェットやアプリ、そして作ったものについて書きます

Oculus Riftでメーヴェを作ろう(6) 振動モータでブルブルって感じる

メーヴェが木々の中を駆け抜けて行く時、手元にブルブルって振動が返ってきて欲しい。
そこで振動モータを連動させます。

振動モータはこちらを使います。
円盤型 振動モーター(2個入): パーツ一般 秋月電子通商 電子部品 ネット通販
消費電力が少ないのでArduinoのデジタルピンに直接繋いで動きます。扱いやすいですね。

f:id:wasan:20140920071849j:plain

詳しい接続やプロジェクトは過去の投稿で書いたので割愛 (^^;)

今回はコネクタとか丁寧目に作ったので、その過程を...

振動モータのケーブルがとっても細く心もとないです。。。
手持ちのケーブルをハンダ付けして繋ぎます。

f:id:wasan:20140920071858j:plain

ハンダ付けした箇所は熱収縮チューブでカバー。 見た目もよくなりますね。
熱収縮チューブを温めて縮める作業、なんか好きです(笑)
反対側にはピンコネクタを付けておきます。後々、取り外しとか何かと便利になります。

f:id:wasan:20140920071905j:plain

今回は両手用に2つ使います。
Unityプロジェクトからの制御も問題ナシでした!
あとはメーヴェの衝突に合わせて振動を制御できればOKですね。

f:id:wasan:20140920071913j:plain

Oculus Riftでメーヴェを作ろう(5) 扇風機を制御して風を感じる

飛んでる感を増すために”風”を感じたいと思っています。
Oculust Riftのデモでもよくサーキュレーターを前に置いてるのを見たりします。

今回はせっかくArduinoと繋いでるので、Arduinoから扇風機を制御できるようにしたいと思います。

f:id:wasan:20140913221956p:plain

扇風機は秋葉原で特価のUSB扇風機を買ってきました。
電源がUSBくらいの低電圧だと扱いやすいですね。

今回はモータドライバICを使って、Arduinoから扇風機の風力を制御してみようと思います。 ではさっそく作業です♪

USBケーブルをチョン切る

”USB→扇風機”の間に回路を挟んで制御するために、ケーブルを切断します。

f:id:wasan:20140913222741j:plain

回路を組む

モータドライバICにはTA7291Pを使います。
回路についてはコチラ→ 建築発明工作ゼミ2008: Arduino 小型DCモータ/TA7291P の通りに組みました。

Arduinoの1,2ピン(デジタル入力)と3ピン(PWM入力)を使います。
入力電源は今回の場合USBケーブルを繋いでいます。

なんかゴチャゴチャ、いかめしいですね。

f:id:wasan:20140913224044j:plain

Unityプログラム

今回もUNIDUINOを使います。

起動時にPIN設定と正転反転の信号を送ります。

void Start () {
        arduino.pinMode(1, PinMode.OUTPUT); //motor
        arduino.pinMode(2, PinMode.OUTPUT); //motor
        arduino.pinMode(3, PinMode.PWM); //motor

        arduino.digitalWrite (1, Arduino.HIGH);
        arduino.digitalWrite (2, Arduino.LOW);
}

↑キーで風力アップ、↓キーで風力ダウンする場合こんな感じになります。
3番のPWMピンにPWM値を与えます。
PWM値は0~255で255が最大パワーになります。

   int fanSpeed = 0;

   void Update () {
        if (Input.GetKey (KeyCode.UpArrow) && fanSpeed < 255 ) {
            fanSpeed ++;
            arduino.analogWrite(3, fanSpeed);
        }
        if (Input.GetKey (KeyCode.DownArrow) && fanSpeed > 0 ) {
            fanSpeed --;
            arduino.analogWrite(3, fanSpeed);
        }
    } 

完成♪

とりあえずキー操作で扇風機が動きます。
これを画面内のメーヴェの動きによって制御しようかと思います。

f:id:wasan:20140913224337j:plain

ただ、、、ちょっと風が弱いなぁ、、、USB扇風機だとこんなものかなー。

Oculus Riftでメーヴェを作ろう(4) メーヴェ型コントローラ、簡易プロトタイプ

さてDK2も届き、Unityとの連携も出来てきたので、
例の自作コントローラと連動させて操作してみます。

最終的にはメーヴェっぽい筐体も実際に作りたいのですが、
まずはサクッと操作感をチェックしてみます。

簡易コントローラ

ダンボール箱にAruduino製コントローラを貼り付けて、、、

f:id:wasan:20140907222420j:plain

それをクッションの上に置いて、足で操作します。
縦方向の傾きで高度を調整、左右の傾きで機体をカーブさせます。
最終的にはこれを、もっと大きくして、手すりを付けて上に体ごと乗るイメージです。

f:id:wasan:20140907223056p:plain

さて、操作してみると、、、む、、、むむむ
これは難しい!

高度を合わせながら、行きたい方向に曲がるのが意外と難しいです。
椅子に座りながらやってるのですが、想像以上に腹筋に効きます 笑

なのでまずは左右旋回だけ可能にしました。
そうしたら、だいぶ操作しやすくなりました。

ぼちぼち、飛んでる感じします。

ソフト、地形とかメーヴェらしきものとか

そしてソフトのほうはこんな感じ。
地形をちょっと作ってみたり、、、
迫り来る障害物があると没入感が高まりますね。

f:id:wasan:20140907223517p:plain

メーヴェらしきもの、、、を作ったり。
ショボい! なんか鉄棒みたいの生えてますね。

f:id:wasan:20140907223558p:plain

【Oculus Rift】Unity PRO版を買わずUnityで開発する by OVRAgent

2014.10.30追記
Oculus SDK 0.4.3からはUnity Free版でもOculus Riftが使えるようになったので、
こちらのOVRAgentを使わなくても大丈夫です。

======

Oculus Rift用のソフトをUnityで作ろうとすると普通はUnity Proが必要になります。
DK1のときはProの4ヶ月延長ライセンスが付属してたらしいのですが、DK2にはなんと付属してないとのこと!

Unity Pro...¥16万かー。高い。。。

と思ってた所、

http://stereoarts.jp/ でNoraさんという方がフリー版Unityでも使えるOVRAgentを公開されているとの情報ゲット!

早速試してみたら、かなりイイ感じでした。
特に問題なさそうなので、当分こちらを使わせていただこうと思います♪

導入は特に難しくなかったですが、記念(?)に手順を残しておきます。

導入手順

1.ダウンロード

http://stereoarts.jp/から OVRAgent_0.4.1_20140823.zip (2014/8/30時点)をダウンロードして解凍。
フォルダ内のOculusUnityIntegrationOVRAgent.unitypackage を使います。

2.Unityにインポート

インポートしたいUnityプロジェクトを予め開いた状態で、 OculusUnityIntegrationOVRAgent.unitypackage
をダブルクリックすると、Unityプロジェクトにインポートされます。

3.MainCameraを置き換える

Projectビューの、OVR > Prefabs > OVRCameraController をHierarcyビューにドラッグ&ドロップします。
場所は今までMainCameraがあった所でよいと思います。

いままで使ってたMainCameraは無用なのでチェック外して無効化しちゃいます。

f:id:wasan:20140830084357p:plain

4.いざ!

おお!特に難しくなかったw
画面がOculusっぽくステレオビューになっています♪

f:id:wasan:20140830084534p:plain

Oculus Rift DK2届いた!macbook proで動かしてみた!

待ちに待ったOculus Rift DK2届きました。
ちょうど先日mac用のSDKも公開されたので、いつも使ってるmacbook proで動かしてみました。
以下、その作業記録です。

f:id:wasan:20140820001125j:plain

SDKダウンロード

https://developer.oculusvr.com/?action=dl&p=sdk&v=21&status=1 から

をダウンロード。 Runtimeの方はインストーラーにしたがってインストールすればOK。
SDKの方は解凍して適当なフォルダに置いておけばOK。

OculusRift接続

付属の手順書に沿って、本体、ヘッドトラッキング、ACアダプタを接続します。
手順書通りにやればとくに問題なかったです。

ファームウェア更新

Runtimeをインストールしたときに、DK2の人はファームウェア更新してね、的なことを言われると思います。

Before using your new DK2, it is critical to update the firmware on the headset. This is important

to ensure reliable functioning of your DK2. Use the Config Util to install the firmware file

supplied in this release (v2.11). This is only relevant to DK2 owners. There is currently no

firmware update required for DK1.

Be sure to review the User Guide which explains the Config Util and DK2.

以下、このファームウェア更新手順です。

先ほどインストールしたRuntime内のOculusConfigUtilを開きます。
Applications > Oculus > Tools > OculusConfigUtil

接続がちゃんとできていれば、ダイアログにDK2が表示されます。
ちなみに僕は最初表示されなかったのですが、OS再起動してOculusを繋ぎ直したら表示されました。

この時点ではFrimwareは2.10になっていますので、これから2.11にアップデートします。

f:id:wasan:20140820002105p:plain

メニューから
Tools > Advanced > Firmware Update を選びます。

f:id:wasan:20140820002512p:plain

ファイル選択を促されるので
Applications > Oculus > Tools > Frimware > DK2 > DK2Firmware_2_11.ovrf を選びます。

プログレスバーが表示されてファームウェアが更新されます。 完了すると先ほどのOculusConfigUtilで、ファームウェアバージョンが2.11になっているはずです。

画面設定

この時点で何らかの映像がOculusに表示されていて、LEDがブルーに光ってると思います。
ただ映像がズレてたりすると思うので、以下の手順で調整します。

システム環境設定 > ディスプレイ
を選びます。

白いバーをDK2の画面のほうに移動します。そうするとDK2がメインになって、設定ができます。

f:id:wasan:20140820003342p:plain

なぜかDK2の画面が縦向きだったので90度回転して合わせました。 画面はミラーリングにしておくのが、操作とかやりやすそうです。

f:id:wasan:20140820003715p:plain

いざサンプル起動!

サンプルは初めに解凍したSDKにあります。
OculusSDK > OculusWorldDemo をダブルクリック!

おー、なんか洋館らしき3Dワールドに放り込まれましたよ!
上を見るとシャンデリア、窓の奥には景色が、、、手が届きそうですね〜

f:id:wasan:20140820004150j:plain

動きは、詳しく見てませんが、たまにカクつく感じがしますね。 とりあえずデモが動いたので今日はココまで〜。

(2015.1.5追記)
mac側のディスプレイが赤みががっている件ですが、
システム環境設定 > ディスプレイ
でディスプレイプロファイルをRift DK2以外(Adobe RGBとか)にしたら解消するようでした。

f:id:wasan:20150105233748p:plain

Oculus Riftでメーヴェを作ろう(3)

1人称視点にプログラムを変更しました。
そしていざ加速度センサ入力で操縦してみると、、、

ガタガタ、、ガタガタ、、、

めっちゃ酔います(笑)

加速度センサの入力を、そのまま使うと入力敏感すぎて、ちょっとの振動でも機体が動いちゃうようです。
これでOculus Rift装着したら、きっと酔いますね、、、

ということで、入力をスムージングしてみることにしました。
入力値の過去10フレーム分を平均化して使います。

↓改善Bofore/Afterの動画。
んー、これなら酔わないかな。

↓サンプルコード

Unityの勉強してたらスマホアプリ作ってました→ストア公開しました

仕事の異動の合間、Unityの勉強をしてました。 そしたら、、それが面白くて、、、!
いろいろやってるうちにアプリになりました。

3Dの射的ゲームです。
iPhonehttps://itunes.apple.com/jp/app/shateki2.0/id904293269
Androidhttps://play.google.com/store/apps/details?id=com.zelohas.shateki

f:id:wasan:20140817091039p:plain

はじめはAssetストアすげー!戦車とかカッコえー。 って思って、Assetバリバリ使ってみたら、モバイルではまともに動かず、、 なるほど、そのへん気をつけるのがモバイルアプリのノウハウなのか。

ということで、戦車から砲弾を飛ばして遊んでたのをだいぶ単純にして、射的を作ることに。 作り始めると細かいとこ色々大変で時間がかかったけど、

おかげでだいぶUnityの理解ができた。 さてー、Oculusはあと数日で到着の予定。届いたらUnityでバリバリ作ろう。