ちょっと未来

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

御礼!Maker Faire Tokyo 2014

Maker Faire Tokyo 2014、
Oculus Riftメーヴェ風フライトシミュレータ”、無事に展示を終えました!

初めてのデモで不慣れなとこもありましたが、体験に来ていただいた皆様にはホント感謝感謝です!
なかなかユーザさんがプレイしているところにダイレクトに触れる機会はないので、
楽しんでもらえる姿を目の前で見れるのは、エンジニア冥利に尽きます。

初めての出展でしたが勇気出して申し込んでみてホントに良かったと思います。
来場者、また他の出展者との交流、貴重な機会でした。

ツイッターエゴサーチ(笑)をしたところ写真など投稿下さってる方も多く、
嬉しくてまとめちゃいましたw 問題あったら言ってください ほぼずっとブースにいたので、写真見ると記憶が蘇りますね。

以下ツイッター、勝手にまとめ。

続きを読む

今日からMaker Faire Tokyo 2014

今日からMaker Faire Tokyoです!
このイベント目指して作ってきたOculusメーヴェ、いよいよ展示になります。
トラブルなくデモできることを祈ります...

展示物の概要をコチラにまとめておきます。

f:id:wasan:20141123090333p:plain

f:id:wasan:20141123090345p:plain

f:id:wasan:20141123090356p:plain

概要

Oculus Riftを使ったメーヴェ風のフライトシミュレーターです。
機体の傾きを感知して旋回、上昇・下降したりします。

ポイント

  • UnityとArduinoの連携はUNIDUINOというUnityアセットを使うことで簡単に実現しています
  • Oculus Riftを装着すると見えないんですが、、機体も頑張って作ってます

今後改善したいところ

  • 振動モータの揺れが小さすぎるので、大きい物に変更したい
  • マップをもう少し賑やかにしたい。フレームレートとの折り合いでなかなか盛れないけれど...

仕様

  • HMD
  • PC
  • ソフト
    • 開発環境: Unity 4.5.5 pro
    • 使用アセット: UNIDUINO ...etc
  • 電気系
    • マイコン: Arudino UNO
    • 加速度センサ: KXR94-2050
    • 振動モータ: 秋月で2つ100円の
    • モータドライバ(扇風機用): TA7291P
    • 扇風機: 秋葉原で600円の

Oculus Riftでメーヴェを作ろう(12)発泡スチロールで機体を作る

Maker Faireは今週末!
機体もなんとか形になってきました。

f:id:wasan:20141118214718p:plain

そもそもOculus Riftを装着したら見えないのでは!?
と思いますが、Makeってことで頑張って作ってみました。

羽とかを発泡スチロールで作る

羽と前後の装飾、これは苦労しました。
発泡スチロールを削って作りました。

ホームセンターで巨大な発泡スチロール購入。
50mm厚x畳約1畳で1000円!意外と安い。
車に載りきらないので半分に切断してお持ち帰り。

f:id:wasan:20141118215130j:plain

まずカッターナイフでざっくり削って、
最後は紙やすりで表面を整えます。

f:id:wasan:20141118215221p:plain

厚みのいる部分は、複数枚を接着しました。
接着には発泡スチロール専用ボンドを使わないと溶けちゃうので注意。

f:id:wasan:20141118220035p:plain

本体との接合部分は蝶番で。ぶつかってもクネクネ曲がるので、ボキって折れません。
使わない時はコンパクトにも収納可能(?)

本体部分は木工工作

本体部分は合板を箱形に組んでいます。

f:id:wasan:20141118215334p:plain

内部に傾きを検知したりする基板ユニットを仕込んでいますが、
引き出しで出し入れできるのでメンテナンス性もなかなか。

f:id:wasan:20141118215408j:plain

手すりは塩ビパイプ

手すり部分は色々と苦戦した挙句、 塩ビパイプを曲げて作りました。
曲げと塗装にかなり手こずりました。

f:id:wasan:20141118220046p:plain

Oculus Rift開発環境をmac→Windowsに移行するときにやったこと

今までmacbook proで開発していましたが、Oculus Riftをやってるとどうしてもパワー不足で、、
Maker Faireのデモでの体感も考えるとやっぱ高FPS出さないといけないし、
思い切ってWindowsのゲーミングPC買いました。

f:id:wasan:20141102080309p:plain

買ったPC

スペックはこの辺のサイト

http://slides.com/harutowatanabe/oculus/#/

http://blog.livedoor.jp/q_man/archives/51996718.html

を見ながらコスパも考えて

CPU:core-i5
GPU:GTX760
Memory:8G

のものを購入しました。

久しぶりのWindowsでドキドキしたけど何とかOculus含めてセットアップ完了。
DK2のベスト値、75FPSも出るようになりました。

Windows移行でやったこと

Oculus Rift & Arudino製コントローラを動かすまで

  1. Oculus SDKダウンロード→解凍
  2. Oculus runtimeダウンロード→インストール
  3. Oculus接続
  4. デモアプリ起動(ファームはmacで最新にしてあった)
  5. Unityダウンロード→インストール
  6. macにあったUnityプロジェクトをフォルダごと丸っとWindowsにコピー
  7. Unityプロジェクト実行(Uniduinoが認識されない)
  8. Arduino IDEインストール→Unidiunoもちゃんと動作した

その他開発環境系

WindowsにおけるGit利用環境は整った: Git for Windows と SourceTree for Windows - 檜山正幸のキマイラ飼育記

  • マウススクロールの向きをmacっぽく

余計なアプリケーションを使わずに Windows のホイールスクロール方向を逆にする | blog.daichisakota.com

OcuFes & DIGITAL CONTENTS EXPO 行ってきました

日曜日にDIGITAL CONTENTS EXPOとその中で開催されていたOcuFesを観に行ってきました。
VR系はやっぱ実際に体験してみないと、と思い、時間の許す限り並んで体験して来ました。
行列で体験断念したのもありましたが、↓のようなコンテンツを体験できました♪

OcuFes

Hashilus(乗馬ゲーム)

一番おもしろかったかも。完成度高い!
JOBAの振動とか、座面の硬さとかほんとに馬に乗ってる感じがする(リアルに乗ったことはあまりないけど...)。
馬の高さに思わずちょっとドキっとした。

下り坂とかは前に座面も傾くように連動してるのかな? スピード感感じて落っこちそうに感じた。

水たまりに突入した時は、スタッフさんが手動(!)で霧吹き噴射してくれてましたw
これ楽しみにしてたけど、あまり実感できなかったなぁ。エキサイトしてて気付かなかったかな?


VR attractions "Hashilus" - YouTube

 

軍艦搭乗&体験航海

 旧日本軍の軍艦に登場できるという、シンプルながらマニアウケしそうなコンテンツ。
 確かにVRで体験すると、戦艦の大きさとか実感できる。大和とかマジでかい、カッコイイ、、、
 有名な戦艦がこれだけ集結するとかファンにはたまらないんだろうなー。
 あと開発者さんが各戦艦のスペックとかを熱く語ってくれるのも面白かったです。

VRシューティング(仮)

 水平線を固定したら酔いが無くなったとのことですが、確かに酔いは全くなかった!
あと、 宇宙船みたいな浮遊感ある乗り物のほうが、ラリーカーみたいなガタガタ走るものと比べて、現実との差異が少ないので、Oculusに合ってるのかもしれないですねー。 

FindShootingStar – 流れ星を眺めよう

 体育ずわりして星空を見上げるという、癒し系(?)VR。
 シンプルなのでPCスペックを選ばなそうでいいですねー。  星座の解説とかしてくれたらプラネタリウムみたいになりそう〜。  

VRで女の子に歯磨きしたい again

 ユニティちゃんの歯磨きをするというコンテンツ。

 特筆すべきはその歯ブラシデバイス。
 ゴシゴシと磨いた感触が手に返ってきます。
 振動モータか何かが入ってるのかな?  

DC EXPOから

 

オタク文化+VR技術で、女の子を診療しちゃおう

外から見てたのと、体験したのでギャップが凄かった。
まさかこんな風に見えるとは!

地面にも3D画像を投影することで、それを3Dメガネで見ると、 ほんと女の子が膝を突き合わせる距離に浮かび上がります。

さらに横に回り込むと、ちゃんと横から見た感じになります。 体の姿勢をKinnectで計測してるようですね。


VR技術を使い「お医者さんごっこ」 - YouTube

 NARIKIRI SHOWDOWN ~ふはははは、見ろ!車がゴミのようだ!~

ストⅡの車破壊するやつ風のゲームをKinnectで身体を使いながら体験するゲーム。
パンチ、キック以外にも、竜巻旋風脚波動拳元気玉みたいな技を繰り出せました。

Kinnectが登場した当時から、かめはめ波を発射するコンテンツとかあったけど、 これくらいアニメーションが作りこんであると、爽快感も格段に違い、また別物に感じますね。

あと、後ろで写真撮ってる人も認識され画面に移っちゃったりしてて、 そういやストⅡの背景ににもそういう人いたな~、ってウケました。


NARIKIRI SHOWDOWN 株式会社デイジー - YouTube

UnityOculusIntegration0.4.3で"OVR could not be found"ってコンパイルエラー

Oculus SDKのver0.4.3がリリースされたので、早速UnityOculusIntegrationも更新♪
するといきなり"OVR could not be found"ってOVRCameraControllerがコンパイルエラーを起こしました。

うわー、アップデートなんてするんじゃなかったー ∑(゚д゚lll)ガーン
と思いつつトラブルシューティング...

解決方法

結果的にはOVRCameraControllerを、OVRCameraRigってのに置き換えたら治りました。

いままでOVRCameraControllerのあったとこに、なんかOVRCameraRigって見慣れないモノがあります。。。

f:id:wasan:20141028224344p:plain

マニュアルPDFを見ると確かに0.4.3からOVRCameraController → OVRCameraRig に置き換わったって書いてました。
これは重要情報では?焦ったー。

5.1.1 Unity Components
OVRDevice → OVRManager Unity foundation singleton.
OVRCameraController → OVRCameraRig Performs tracking and stereo rendering.
OVRCamera Removed. Use eye anchor Transforms instead.

http://static.oculusvr.com/sdk-downloads/documents/OculusUnityIntegrationGuide_0.4.3.pdf より

Oculus Rift + Unity 画面上に文字を表示する

Unityで画面上にスコアや”Gameover”みたいな文字を表示するとき、
普通だと”GUI Texture” とかを使いますが、Oculus Riftでそれをやるとちゃんとステレオに表示されない、、、

3D Textを使えばOK

どうすればいいのか調べると "3D Text"を使えばよかった。

3D TextをPlayerの配下に置けば、常に視界に表示されるので、スコアなどを表示するのはこれでOKですね。

で、3D Textを使った時のその他Tipsを以下にメモメモ、、、

3D Textぼやける問題

デフォルトの設定だとボヤけてます。なんだこりゃ。

f:id:wasan:20141024074543p:plain

これは、Character Sizeを小さくして、Font Sizeを大きくすればOKの模様。

【before】Character Size = 1, Font Size = 0

f:id:wasan:20141024074726p:plain

↓ 【after】Character Size = 0.1, Font Size = 200

f:id:wasan:20141024074734p:plain

するとこんな感じでクッキリと!

f:id:wasan:20141024074747p:plain

文字をプログラムから変える

スコアとか表示するなら、プログラムから文字を変更したくなります。 TextMeshのtextを変更すればOKそう。

# Inspectorで3D Textを渡しておく
public GameObject messageText;

void Update () {

    messageText.GetComponent<TextMesh>().text = score + "Pt";

}

(2015.1.31追記)
3D Textを隠すのはこんな感じ

messageText.renderer.enabled = false; // 非表示にする