Google Daydream for Unityの開発環境を整える
Google DaydreamはAndroidとiOS(主にAndroid)向けのVRプラットフォームです。(2016年秋に公開予定)
Daydream開発のためにGoogleは
①ヘッドセット
②コントローラ
③アプリ
の3つの開発に取り組んでいるらしい。すげーな
特にコントローラが統一されるのは開発者としては非常に嬉しいんです。Cardboardは画面タップしかできないから制約が大きい。。
おそらくDaydream向けアプリはGooglePlayやAppStoreで簡単に公開できるようになるだろうから、最も普及するプラットフォームになると期待して手を出してみます!!
Daydream用アプリの開発にはadb、Unity、Xcodeが利用可能みたい。けれどUnityが一番慣れているしなんとなくVR=3DだしUnityが良いっしょ!(単純)、ということでUnityで開発してみます。
三日坊主にならないようがんばるぞ!笑
それでは
https://developers.google.com/vr/unity/
を参考に開発環境の整え方をまとめていきます。
Unityのインストール
まずは各自Unityを公式サイトからインストールしてください。
※Unityは5.2.1以上のものを用意する必要があるので最新版で良いかと
Google VR SDK for Unityのインストール
以下のコマンドをターミナルで叩きます。
git clone https://github.com/googlevr/gvr-unity-sdk.git
インストールすると以下の階層構造になっています。
gvr-unity-sdk ┣ GoogleVR ┃ ┣ DemoScenes ┃ ┣ Prefabs ┃ ┣ *** ┣ Samples ┣ GoogleVRForUnity.unitypackage ←これを使う ┣ LICENSE ┣ ThirdParty ┗ README.md
Unitypackageのインポート
Assets > Import Package > Custom Packageから、先ほどインストールしたSDK内のGoogleVRForUnity.unitypackageをインポートしましょう。
インポートすると、UnityのProjectフォルダ内にGoogleVRとPluginsフォルダが追加されます。
そしたらGoogleVR > DemoScenes > ControllerDemo内のControllerDemo.unityを開けば、シーンが開始します!
iOS用にビルド
File > Build SettingsでiOSを選択します。iOSビルド環境がUnityに入ってなかったら公式サイトからインストールしましょう。
対象をiOSに選択し、Build Settings の下にあるSwitch Platformを選択し、Buildを押せばXcode用プロジェクトがビルドされます。
けれどその前に、Player Settingを選択します。
そしてDefault OrientationをAuto Rotationに選択し、3つほどチェエクを外します(下参照)。これをやらないと、画面サイズが変なことになります。。
そして本来はさらにOther Settings 内のBundle Identifierをうまいこと設定しないといけないんですが、Storeに公開しないならデフォルトのままで良いです。
そしてBuildを押します。これでXcode用プロジェクトが生成されるはずです!
iOSデバイス上で動作
先ほどできたプロジェクトに*.xcodeprojectがあるので、それを実行します。(もちろんXcodeで)
そしてビルド対象を自身のiOSデバイスに設定し、ビルドすればデバイス上にアプリケーションが生成されます。
これで無事にiOS実機デバッグが完了しました!
Androidビルド
Cardboard用アプリをAndroid端末向けにビルドするのは簡単です。
しかしDaydream用アプリを動かすには、AndroidNの入った端末(ディスプレイ機)とKitkat以降のAndroid端末(コントローラ機)が必要です。当然この2機種はbluetoothでつなげるので
https://developers.google.com/vr/concepts/dev-kit-setupを参考にすればできますが筆者はAndroidNの入った端末を持っていないので、今回の記事では触れないでおきます。
残念ですが、Daydream用アプリ制作はひとまず置いておいてCardboard用アプリ制作を行います!
proxy配下でgitを使ったinstallコマンドがつかえない時の解決法
まず、最も簡単な解決法としては、
$ vim ~/.gitconfig
とgitconfigを開き
[http] proxy = http://proxy.example.com:8080 [https] proxy = http://proxy.example.com:8080
こう書いて保存する。
これでcloneはできるはず。
$ git config --list
で設定を確認できる。
これでgit cloneはできるはずだが、luarocksのように間接的にgit cloneを行う場合gitにアクセスできない場合がある。
これは、clone先のurlが
http://github.com/**
ではなく
git://github.com/**
となっているためである。(自分の場合はそうだった)
そのため、gitconfitに
[url "https://"] insteadOf = git://
と書き、すべてhttps://からcloneするようにすれば解決した。
CentOS6.6にMongoDBをインストールしてテストしてみた
CentOS6.5にMongoDBをインストールする - Qiitaを参考にしました。
環境確認
まずは、CentOSのバージョンを確認する。(CentOS6も7にもMongoは対応してるっぽいけど一応)
$ cat /etc/redhat-release -> CentOS release 6.6 (Final)
のように確認できた。またMongoは64bitにしか対応してないようなのでそれも確認
$ arch -> x86_64
インストール手順
リポジトリの作成
# vim /etc/yum.repos.d/mongodb.repo
に
[mongodb] name=MongoDB Repository baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64/ gpgcheck=0 enabled=1
を書いてリポジトリを作成する
yumでインストール
# yum install -y mongodb-org
これを行うと以下のように5つのパッケージがインストールされる
================================================================================ パッケージ アーキテクチャ バージョン リポジトリー 容量 ================================================================================ インストールしています: mongodb-org x86_64 2.6.12-1 mongodb 4.6 k 依存性関連でのインストールをします。: mongodb-org-mongos x86_64 2.6.12-1 mongodb 6.9 M mongodb-org-server x86_64 2.6.12-1 mongodb 9.1 M mongodb-org-shell x86_64 2.6.12-1 mongodb 4.3 M mongodb-org-tools x86_64 2.6.12-1 mongodb 90 M トランザクションの要約 ================================================================================ インストール 5 パッケージ
テスト
Mongoの立ち上げ
まずは起動するために
# service mongod start -> Starting mongod: [ OK ]
と出れば無事起動している
シェルの起動
ターミナルにMongoを立ち上げた状態でmongoと入力すればシェルが立ち上がる
$ mongo -> MongoDB shell version: 2.6.12 connecting to: test >
動作確認
> use test switched to db test > db.fish.insert({name: "マグロ"}) WriteResult({ "nInserted" : 1 }) > db.fish.find() { "_id" : ObjectId("5743eafd09dd5531de1012a6"), "name" : "マグロ" } > db.dropbDatabse() 2016-05-24T14:50:06.260+0900 TypeError: Property 'dropbDatabse' of object test is not a function > db.dropDatabse() 2016-05-24T14:50:11.306+0900 TypeError: Property 'dropDatabse' of object test is not a function > db.dropDatabase() { "dropped" : "test", "ok" : 1 } > show dbs admin (empty) local 0.078GB > exit bye
C++を使ってMongoを操作
qiita.com
ここが非常に参考になった。
ここもよい。
http://rest-term.com/archives/2948/
Macの同アプリ内でのウインドウ切り替え
例えばターミナルを二つ立ち上げている時、もう片方のウインドウに操作を切り替えたいとする。その時のショートカットの設定は、
キーボード -> ショートカット -> キーボード -> 次のウインドウを操作対象にする
を選んで好きなショートカットを割り当てる。自分はoption+tabにした
これはかなり便利!
Uniduinoを使ったUnityとArduinoの通信
大きく分けて2つの方法がある。一つはSerialPortを使う方法、もう一つはUniduinoを使う方法。
Uniduinoは20$必要ですが、その分非常に使いやすく手間も省けるので自分はUniduinoを使います。SerialPortを使った方法については
SerialPort または Uniduino を使った Unity と Arduino を連携させる方法調べてみた - 凹みTips
を参照してください。
それではUniduinoの使い方
1. UniduinoをAssetStoreからダウンロードする
2. Arduinoを開いて以下のようにプロジェクトを開いて焼き込む(Arduino側の設定はこれだけ、もしコンパイルが失敗したら、ポートの設定を確認すべき)
3. Unityを開いてUniduino/Prefab/Uniduinoをシーン上に配置(最初は、Window/UniduinoからInstall~を実行してUnityを再起動)
4. シーン内に適当なサンプル(ArduinoController)を配置し、適当なコード(ArduinoController.cs)を登録させる
5. コード内にArduinoと同じようなコードを記述する。以下参照
using UnityEngine; using System.Collections; using Uniduino; public class ArduinoController : MonoBehaviour { private Arduino arduino; private int leg = 11; private int down = 12; private int up = 13; private int i = 0; void Start () { // インスタンスを取得 arduino = Arduino.global; if (arduino == null) { Debug.Log ("arduino's instanse is null"); } arduino.Setup (ConfigurePins); // コルーチンでループ StartCoroutine (Loop()); } // Pinの設定 void ConfigurePins() { arduino.pinMode(up, PinMode.OUTPUT); arduino.pinMode(down, PinMode.OUTPUT); arduino.pinMode (leg, PinMode.OUTPUT); } private IEnumerator Loop() { while (i < 200) { arduino.digitalWrite(leg, Arduino.HIGH); yield return new WaitForSeconds(1); arduino.digitalWrite(leg, Arduino.LOW); arduino.digitalWrite(down, Arduino.HIGH); yield return new WaitForSeconds(1); arduino.digitalWrite(down, Arduino.LOW); arduino.digitalWrite(up, Arduino.HIGH); yield return new WaitForSeconds(1); arduino.digitalWrite(up, Arduino.LOW); i++; } } }