主なコンテンツ

〜主なコンテンツ〜

1. Unityで製作したゲームと製作Tips
  1. 三月精チャレンジ(東方Project二次創作)
    1. 作り方
  2. 英語学習2D(オリジナルスマホアプリ)
2. UE4
3. ゲームアプリ見学
4. Bitbucket & SourceTreeでの一連の流れ
  1. 前半
  2. 後半
5. Tips
  1. UnityのTips
  5. SQL文のTips
  6. Final IK
  7. GearVR+Unity

2016年11月8日火曜日

GearVR + Unityについて

Unite2015のGearVRの講談資料

開発の導入は基本はこちらに従う。OculusがUnityの推奨バージョンを公開しているので意識しておいた方がよい。


■Oculus Signature File

GearVRはOculusとSamusunが共同開発したデバイス(参考)。なので、GearVRでも「Oculus Signature File」という署名ファイルが必要。この設定にデバイスIDが必要なのだが、ひどく手間取った。

このデバイスIDとは出力先のAndroid端末のIDのこと。USBで繋いで、端末側の「USBデバッグ」を有効にしておく必要がある。その他嵌りそうなポイントはこちら。なお、adbコマンドはどのディレクトリからでも使える模様。コマンドはdevicesなので注意。

■カメラ周りの仕様(+映像周り)

  • VRに使われるカメラはMainCameraではなく、Depthにおいて一番手前にあるカメラ(参考
  • カメラのtransfromはVR装着時に上書きされる(参考
  • Quality SettingsのLOD Baisは開発時は1にしておき、ビルド時のみ2にすると良い(VRでは画面が2分割されるので、開発画面の画面比率100%はVRの場合50%となるため)
  • 冒頭のUnite2015資料の通り、画面が2分割されるので描画負荷が2倍になる

■UI関連

  • UIで使えるのはWorld Spaceのみ(参考
  • CanvasのRender Modeを一旦「Screen Space-Camera」にして、MainCameraを指定して、UIとの距離を指定してから、Render Modeを「World Space」する必要があるっぽい。ただし、私の場合はうまく行かなかった(尚、Screen Space-CameraScreenについてはこちら
  • 普段通りに作ってから、scaleを0.01くらいにする。(参考:Unity uGUIを使うには)
  • カメラにUIを張り付かせると不快感が強い(参考

■デバッグ関連

  • Unityのプロファイラー

    • 手順
      1. 出力する端末のIPアドレスを取得しておく
      2. アプリをDevelopment Buildでビルドする
      3. アプリの起動している状態で、Windows>Profilerでプロファイラーを開く
      4. Active Profilerに先程のIPアドレスを入力
    • 接続できているのに出力が更新されないとき(参考
      • 一旦アプリを終了させる
      • 別アプリ関係なく更新が止まること多々あり
    • プロファイラー結果の出力(参考1
      • エクセルなどには出力できない
      • 基本的にはエディタ拡張を使う
        • 手順
          1. Profiler.enableBinaryLog = true;としたうえで、Profiler.enabled = true;とすることで、自動的にログと詳細な不可データ(.data)が指定フォルダに出力される
          2. 何も表示されていないプロファイラ画面を開く
          3. エディタ拡張でProfiler.AddFramesFromFile(ログファイル名);とすると、プロファイラ画面にデータを読み込ませることができる

  • GearVRの開発者モード

    • これをONにするとHMD(HeadMountDisplayの略)を使わなくても2分割画面で起動できる(参考
      • Android6.0では下記だった
        • [Settings (設定)] > [Application] >[Application Manager] 
        • [Storage] > [Manage Storage]
    • HMDに接続しなくても良いものはこれでOK
    • 開発者モードの切り替えの下に「アプリリストにアイコンを追加」という項目もある。これをやっておけば次からアクセスが楽になる。アイコンを起動した画面の右上の「その他(More)」を押す。

  • Wifi経由でADBを取得する

    • Wifi経由でMonitorにてログを確認できる(参考
    • adbコマンドの際は実機が待機画面でないこと!Oculus Signature Fileのとき同様、嵌りポイントに注意。
    • HMDに接続しなきゃいけない場合に利用
    • adb usb でUSBモードに戻すときは、Wifiで端末に接続出来ているので、USBをつながなくてもよい(繋ぐと1個以上のデバイス/エミュレーターが確認されたと出てエラーになった)


      ■ゲームパッドについて

      • 基本的にはどのパッドも同じキーが割り当てられている(こちらのゲームパッドを使うには参照)
      • 例えば、右ジョイスティックを使いたい場合
        • Edit>Project Settings>Inputに移動
        • sizeを増やして、追加できるようにする
        • ジョイスティックのHorizontalやVerticalを参考にして、Axisを4th axisなどにする
        • 名前はHorizontal2などにするとよい
        • スクリプトで使うときは、Input.GetAxis("Horizontal2")のようにする
      • 製品名+Unityでググれば、きっと誰かが検証してくれているはず
        • Steel Series
          • 自分のコントローラーはLR=4, 5だった。(X Boxと同じ気がする)

      ■影について

      • シャドウカスケードはモバイルプラットフォームでは使えない(参考
      • ソフトシャドウはモバイルプラットフォームでは使えない(参考
      • この二つが使えないだけで、下図のような影響がある(最高画質の設定で比較)
        • 下図のカメラの角度だとこのように映る。真上から映すともう少し綺麗に描写される。

      ただし、Shadow Distanceを短くすると改善される。(この影響が非常に大きい)


      • 代案:Dynamic Shadow
      • 代案2:巨大スケールをあきらめてShadowDistanceを小さくする
        • カメラに映る大きさの比率で決まっているため無意味
      • 嵌りポイント
        • LightのResolutionがミディアムになったままで若干ハマった。LightとQuaritySettingsの両方を最高品質にする必要あり。というか、LightのResolutionは「Use Quality Settings」にしておけば間違いがない。
        • VRのせいではないのだが、Unity上では問題ないのに、VR内では物体の近くまで接近しないと影が表示されない問題に悩まされた。Edit>Project Settings>Qualityで画質設定が確認できるのだが、AndroidはSimpleとなっている。SimpleのShadow Distanceは20であり、巨大な世界観だと今回の問題が起きた。

      ■負荷の削減など

      • DINOTOWNのスマホ移行(参考

      ■Oculus Utilities for Unity

      過去はUnityでOculus系のVR開発をするのに必要だったが、ver.1.3.0でOVRPluginが切り離され、これがUnity側に統合された(Unity5.3.4p5  以降)。そのため、現在では外部プラグインが不要となっている。ただし、両者のバージョンアップに対応するための最低限の部分の統合であり、意図的に機能は制限されている。(参考)。

      外部プラグイン無しで開発できるが、Oculus特有の機能を使いたい場合はOculus Utilities for Unityを使ってね、というのが現在の構図となっている。
      • ダウンロードはこちら
      • リファレンスはこちら
      • リリースノートのKnown Issuesにて、その冒頭文とGearVRの欄を確認しておく(使うべきでないUnityのバージョンが指定されている)

      GearVRは戻るボタン長押しで動画やスクリーンショットが撮影できるとあるが、このbackボタンの挙動もOculus Utilities for Unityに含まれている(Oculus助け合い所にて回答あり)。backボタンの挙動追加はこちらbackボタンの挙動がないと審査で落ちるらしい

      尚、紹介したサイトではOVRManager自体にカメラをトラックする機能は無いとあったが、現在は自動で目の前に表示するようになっていた。なので、ボリュームUIをカメラに追従させる仕組みは自前で用意しなくて大丈夫。 


      Unity内のカメラは自動的にOVRCameraRigプレハブに置き換わるようで、現在のこのプレハブには初めからOVRManagerがアタッチされている。なので、用意しなくてもボリュームUIは実装されている。この流れでいえば、いずれOVR Platform Menu もプレハブに内包されるかも…。

      センサーが使いたかったが何故か値が0だった。どうやらUnity側のバージョンアップで修正されたらしい。日本には情報が無いので海外のフォーラムを探すことになりそう(参考)。

      ■その他

      • Unity VR リファレンス(参考
      • タップ操作は自作する必要あり(フォーラムの内容を流用するのが現状。参考
        • Unity 5.4以降で動作しない模様(参考
        • Unity公式のチュートリアルに従うことになりそう(参考
          • Vurtual Reality Supportedにチェックが入れられない場合はunityを再起動する(参考
          • 日本語での解説(参考
          • 3つの主要なスクリプト
            • VREyeRaycaster
              • メインカメラに配置
            • VRInput
              • タップやスワイプなどを判定する
              • イベントについてのチュートリアル(参考
            • VRInteractiveItem
              • VRで対話したいオブジェクトに付ける
              • コライダーが必要




    • 動画やスクリーンショットの撮り方(参考

      • VR端末の戻る長押しでメニューを開けるらしいが、これが出来ず...。上記の通り、Oculus Utilities for Unityを導入して、backボタンの挙動を追加する必要があった。
      • 尚、動画を撮っても音は録音されないとのこと。説明書には録音できるとあるが、誤記らしい(Oculus助け合い所にて回答あり 2016.10.12)。





    • 解像度は2560×1440(参考






      • 再生時にVRの視点にする(参考
      • そのうち役に立ちそうな情報集(参考
      • ASTCは高画質な圧縮形式のこと(参考


          0 件のコメント:

          コメントを投稿