Google Cardboard を作ってみた
先日の Google I/O での発表後から気になっていましたが、時間ができたので作ってみました。出来上がりは上の写真の通り、あまり見栄えが良いとは言い難いけれど、案外ちゃんと使えます。
作り方や型紙のダウンロードは公式サイト(https://developers.google.com/cardboard/)で。
ダンボールは家に転がっていたサラダスピナーの箱を使用。 他の材料はダイソーで調達しました。
- レンズ用に「とげ抜きルーペ」× 2
- マジックテープ(手芸用)
- マグネット
レンズはネットで見る限り、国内ではダイソーのミニルーペを使用している人が多いようですが、お店で見つからなかったので「とげ抜きルーペ」で代用しました。このレンズの実際の焦点距離はよくわからないですが、自分の視力(0.7)ではほぼピントは合っているように見えます(Cardboard 推奨は焦点距離 45mm です)。ちょっとダンボールのレンズ穴より径が小さいので、グルーガンで固定するなどしました。また、レンズが小さいせいかピントの合う領域は若干狭めで、画面端の方はボケてしまいます。
Cardboard に対応する Android 4.1 以上の端末は持っていなかったので、わざわざ秋葉原で調達しました。2013年発売の AQUOS PHONE 203SH を買いましたが 1万程度で売っていたのは少し驚きです。画面は 4.9インチの IGZO でなかなか綺麗だし、CPU も APQ8064 1.5GHz(クアッドコア)が載っているので VR 用途にもパワーは十分です。
難点は 、203SH が Cardboard の動作検証済み端末でないせいか、CardBoard 公式アプリでは視差が大きく取られてしまって 3D に見えない点です。最初はレンズの焦点距離などの問題かと思って色々試行錯誤していましたが、Youtube に上がっている CardBoard アプリの動画では正常に見えたので、どうも Cardboard のアプリ側に何か問題があるようです。
また、マグネットによるスイッチが、デフォルトの設置場所だと全然反応してくれませんでしたが、試しに反対側にマグネットを設置してみたところ反応するようになりました。この辺は、使用する機種によって差がありそうです。
とはいえ、その他の VR 対応 Android アプリは正常に動作しているので十分に実用的です。ちなみに Google Play には、Cardboard と同じ動作原理の Durovis Dive という製品向けのアプリがそこそこリリースされているので、それらも体験できます。対応ゲームの一覧も用意されていてナイスです(http://www.divegames.com/games.html) 単に VR というキーワードでも結構見つかります。
また、Durovis Dive の SDK を使用すると、Unity 無料版でも VR 対応アプリが作れるようなので、今度試してみようと思います。
UnityでGoogle Cardboard用のコンテンツを作成する : エイバースの中の人
最後におすすめのアプリをいくつか。
Tuscany Dive 1.0
カテゴリ: ライブラリ&デモ
Google Playで詳細を見る
家と庭を歩き回れます。足元にあるスイッチを見ると進んだり止まったりを制御できます。
Dive City Rollercoaster 1.6
カテゴリ: アーケード
Google Playで詳細を見る
VR 定番のジェットコースターです。立ったまま見ていると、落ちるときにフラッと来ます。
Dive Deep 1.0
カテゴリ: アドベンチャー
Google Playで詳細を見る
イルカやシャチが突進してきます。結構迫力があります。
Raspberry Pi 無線 LAN 設定おぼえ書き
設定前の準備
Raspberry Pi の OS
Raspbian を使用。ホスト側は Mac。
無線 LAN アダプタ
ヨドバシで700円ちょいで売っているちっこい無線 LAN アダプタを買ってみた。
最近のは安いし速いしちっこいしですごいなぁ。
構成
Raspberry Pi の USB ポートに無線 LAN アダプタとキーボードを接続。
設定
無線 LAN の設定
/etc/wpa_supplicant/wpa_supplicant.conf に ESSID とパスワードを登録する。
wpa_passphrase コマンドを使うと、設定に記述するフォーマットで出力してくれる。
コマンドの出力はそのまま /etc/wpa_supplicant/wpa_supplicant.conf に追記すればOK。
ESSID には無線 LAN の ESSID、pass にはパスフレーズを指定。
#sudo wpa_passphrase ESSID pass | sudo tee -a /etc/wpa_supplicant/wpa_supplicant.conf
変更後の内容を確認。
sudo vi /etc/wpa_supplicant/wpa_supplicant.conf
中身が以下のようになっていれば成功。
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 network={ ssid="ESSID" #psk="password" psk=907998845ecfdc66f243ac57e6a5aab06c864049caf01a671a179358da6808e1 }
これにいくつか設定を書き足す。
以下は認証方式: WPA-PSK、暗号方式: TKIP の場合の例。
network={ ssid="ESSID" proto=WPA pairwise=TKIP group=TKIP psk=907998845ecfdc66f243ac57e6a5aab06c864049caf01a671a179358da6808e1 }
各方式毎の設定値は以下の通り。
- 認証方式
- WPA-PSK
- proto=WPA
- WPA2-PSK
- proto=RSN
- WPA-PSK
- 暗号方式
- TKIP
- pairwise=TKIP
- group=TKIP
- AES
- pairwise=CCMP
- group=CCMP
- TKIP
起動時に無線 LAN に接続する設定
以下のファイルを編集。
sudo vi /etc/network/interfaces
内容を以下のように変更(DHCP で IP が振られる場合)
auto lo iface lo inet loopback iface eth0 inet dhcp auto wlan0 allow-hotplug wlan0 #iface wlan0 inet manual #wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf iface wlan0 inet dhcp wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf iface default inet dhcp
設定の反映
reboot で再起動して設定を反映。
sudo reboot
動作確認
ifconfig で wlan0 に IP が振られていれば設定完了。
ホスト名でのリモート接続
DHCP だと ssh 接続するために Raspberry Pi の IP を調べる必要があるので、ホスト名で接続できるようにする。
Raspberry Pi に avahi-daemon をインストール。
$ sudo apt-get update $ sudo apt-get install avahi-daemon
デフォルトのホスト名は raspberrypi.local になっているので、
ping raspberrypi.local
で返答があれば設定完了。
これでホスト側からは、
$ ssh ユーザ名@raspberrypi.local
でリモートログインできる。
ちなみに、無線 LAN アダプタは消費電力が大きく、Raspberry Pi は電源周りが弱いらしいので結構動作が不安定になる。 これを解決するには、以下の方法でなんとかしてやる必要がある。
セルフパワーUSBハブを使う
無線 LAN アダプタの電源を別にする
http://myboom.mkch.net/modules/pukiwiki/165.html
参考にさせてもらったページ
http://openrtm.org/openrtm/ja/node/266
http://www.youchikurin.com/blog/2007/06/linuxlan_1.html
Gakken WORLDEYE
球体ディスプレイが前々から欲しかったのだけど、ちゃんとしたやつだと数百万するのでとても手がでないなと思っていたら、学研から WORLDEYE という球体型のおもちゃ教材が4万円くらい出ているのを知って衝動買いしてみた。
基本的には球体ディスプレイ + USB メモリに入った動画教材という構成なんだけど、球体ディスプレイに HDMI 入力がついているのがミソで、PC などから画面を出力して色々遊べるようになっている。 解像度は 480 x 480 (640 x 480 の横がトリミングされる)と高くは無いのでちょっとぼやっとした画像になってしまうけど、実際そんなに細かいものを映すわけじゃないので特に気にならない。
最初から入っているコンテンツを再生するだけでもなかなか楽しい。
部屋を暗くすると月がそこに浮かんでいるかのよう。
さて、HDMI でつないで色々やってみたシリーズ。
Google Earth on Gakken WORLDEYE - YouTube
球体なのでやっぱり地球を映してみたくなったので、PC 経由で Google Earth を映してみた。ただ映すだけなのも味気ないので、コントローラに Leap Motion を使って地球をぐるぐる回せるようにしてみた。操作性に若干難はあるものの、わりとイメージ通りに動いてくれたので満足。
Leap Motion はそれぞれの指の動き(空間上の位置)を認識して PC に入力できるデバイスで、Amazon で 1 万円くらいで買った。Leap Motion 単体でも専用アプリいろいろあって楽しい。
さて、次は Processing で描いたスケッチで WORLDEYE をインテリア化してみる。
Processing on Gakken WORLDEYE - YouTube
うん、それっぽくなった。 ずっと PC をつないでおく訳にも行かないので、今度は Raspberry Pi で openFrameworks (Processing ぽい C++ ライブラリ) を動かして常設できるようにしてみたい。 Raspberry Pi は直接 HDMI 出力できるので WORLDEYE とは相性が良さげ。
Bubbles on blue
やっぱり iPhone で描くの大変なので、家で描いたシリーズ。 泡の発生源を適当に揺らすとそれっぽくなった。
snow drops
電車で移動中、iPhone で Processing スケッチが日課になりつつある今日このごろ。 iPhone 上で Processing.js が描ける&動かせるアプリとしては Processing for iOS がメジャーなのかと思ってたけど、エディタ部分が若干スクロールがもたついたり文字の描画が変になったりするので、ちょっと使いにくい。キーワードハイライトついてるのは嬉しい。
今使ってるのは、iCompiler für Processing という無料アプリ。なんか全体的にドイツ語(?)なので何言ってるかよくわからないけど、まあ雰囲気でボタン押せばなんとかなる(英語ローカライズくらいはして欲しいかな)。エディタの方は、ハイライト機能とかはなく若干フォントが独特だけどシンプルで TextView ぽく、動作は軽快。一応コピペ機能はあり。ほんとは API 名くらいはサジェストしてくれると嬉しい。
というわけで、iPhone でデタラメな式を描いてみたらちょっと涼しげな感じに。 雪というより雨っぽい動きだけど。線と丸が攻防する感じがなんか気に入った。