News Activity Product Learning red Event Contact
Devblog top img

開発ブログ

2018-02-01

GoogleVRを用いたスマートフォンVRの作成

writer : youma

はい!今回はUE4でGoogle VRを用いた際の2つの問題の解決法をご紹介していきます。Google VRのズレとQRコードの読み込みをしようとするとクラッシュする問題について、解決策とその原因を記していきたいと思います。

 

あまり知られていないのですが、Google VRではハコスコに応じて、QRコードによるズレの補正機能があります。しかし、開発者がしっかり設定していないと利用者はこの機能を使うことができません。最初にGoogle VRについて簡単に説明し、そのあとにズレの問題と、クラッシュする原因とその解決策を記していきます。

 

目次

  1. Google VR

  2. クラッシュする問題

  3. 原因

  4. 解決策

  5. まとめ


 

1.Google VR

Google VRはスマートフォン向けVRのためのプラグインであり、これを有効にしてスマホ向けに書き出すだけで、なんと、アプリを簡単にVR化することができます。

上記の画像のように、編集→Pluginを選択します。

 

以下の画像のように、Google VRを検索し、Enableにチェックを入れて有効化します。右下のRestartNewをクリックし、エディタを再起動するとGoogle VRを適用することができます。

(これを有効にすると、書き出す際にC++コードをビルドする必要があり、iOSの場合、C++コードをビルドするにはMacを用いないといけない点に注意です)。

 

あとはスマートフォンに書き出すだけで、画面が2分割され、ヘッドトラッキングをすることができるようになります。書き出しについてはこちらを参照にしてください。

Android:https://docs.unrealengine.com/latest/JPN/Platforms/Android/GettingStarted/index.html

iOS:https://docs.unrealengine.com/latest/JPN/Platforms/iOS/QuickStart/index.html


 

2.クラッシュする問題

この問題は、iOSにのみ発生します。Google VRでは、以下の画像のようなフレームになっており、少し特殊な形をしています。しかし、このままでは上手く立体視できない場合があります(カードボードによるみたいで、私の場合UE4とUnityでGoogle VRを用いた際どちらでも上手く立体視できませんでした)。

 

これによるズレを解決するために、上の画像の真ん中下にある、歯車マークを押します。すると、カメラが起動します。

→ここでiOSの場合、クラッシュしてしまう問題が発生します(後述)


 

クラッシュしなかった場合は、以下のようなQRコードを読み込むと、

以下の画像のように補正されます。

これでズレが直せます。

詳しくはこちらなどを参照:http://note.pandako.com/2016/12/iphone-vr-youtubecardboard-android-ok.html

 

3.解決策

上記のように、カメラを起動させてQRコードを読み込むだけでズレが直せるのですが、iOSの場合カメラの起動時にクラッシュしてしまいます。色々原因究明をしたのですが、今回は答えを述べていきます。

 

原因としては、iOSのアプリでは「カメラを用いる」,「フォトライブラリを用いる」などiPhoneの機能やユーザデータにアクセスする際には、書き出す前にplistファイルにその旨を記さなければなりません。これを記さずにその機能を用いるとクラッシュすることがあるようです。

 

通常のiOSアプリでは、XCodeから「Camera Usage Description」を追加することで、カメラを許可することができます。(今回は関係ありませんが)興味のある方はこちらなど参照:http://komaji504.hateblo.jp/entry/2016/05/08/035924




 

4.解決策

UE4では、書き出し時に自動的にplistを作成する機能があります。この設定を編集するための場所があるので、そこでplistにカメラを使うということを記しておくことで、これらの問題を解決することができます。

 

編集からプロジェクト設定を開きます。

 

そこで、プラットフォーム→iOS→Extra PList DataのAdditional Plist Dataという欄に、以下のように記入します(「plist」と検索しても出てきます)。

ーーーーー

<key>NSCameraUsageDescription</key><string>Camera is used for QR functionality</string>

ーーーーー

 

<key></key>に追加したい項目名,<string></string>に簡単に説明文を記入します。これでカメラの使用許可もできたので、クラッシュする問題を解決することができました。


 

5.まとめ

・プラグインの追加をしました

・Google VRを有効にしました

・Google VRのズレを解消しました

・カメラを使用許可しました

・Plistを編集しました

 

今回は、Google VRで起こるズレの問題と、カメラの使用許可によるクラッシュの問題の解決を記しました。これらはなかなかにコアな問題で、検索しても出にくい問題ですよね。。私はこの問題に直面する前に、Unityでカメラの使用許可によるこのクラッシュ問題を経験していたので、UE4でもスムーズに対応することができました。やはりUE4でもUnityでもやっておいて損はないですね笑。今回のテクニックは、フォトライブラリやマイクなどの機能の使用許可にも用いることができるので、少し覚えておくと幸せに…いや、不幸を防げるかもしれませんね!笑

 

では、今回はこの辺で!