たれぱんのびぼーろく

わたしの備忘録、生物学とプログラミングが多いかも

知識0から始めるOculus Go開発

Oculus Go欲しい!買った!
…Oculus系のVR、開発したことないやん…。開発環境やプラットフォーム知らない…。
この記事は、そんな人がOculus Goアプリを0から開発した記録である。

早見表

about description
ストア Oculus Store (steam: ×)
基本環境 Android N
開発プラットフォーム Unity, Unreal, Oculus Mobile SDK(C++)
Web 標準搭載 (webVR-ready)
特別な機能 FFR, throttling, 72Hz mode

Store

Oculus Go (以下、OG)にはストアがあるのか? Steamとか使えるのか??

=> Oculus storeがあるよ。Steamは使えないかな

Oculus storeは、Oculusのハードウェア・ソフトウェアを売ってるサイト. (名前合ってるのか?)
OGもここから買えたよ

基本環境

OSはLinux? Android? 独自OS?
=> Android Nベースで1、OSレベルの最適化をかけたものってカーマック神が言ってた2.

開発プラットフォーム・開発環境

Unityは使える? (使えないはずないよな……?)

=> これらが開発プラットフォーム3

  • Unity
  • UE4
  • Oculus Mobile SDK
  • (WebVR) Oculus Mobile SDKはC++とのこと。
    素直にUnity, UEを開発環境/プラットフォームとするのが良いかな Oculusのリストには入っていないけど、WebVRでの開発も熱い。Amazon Sumerianとか出てきてるし。

Webは?

ブラウジングは出来る? A-frameとかのwebVRは?

=> ブラウザは標準搭載だよ 4。webVRも使えるよ5。

browser in Oculus
Youtubeを開いてみた

他のブラウザ

あるのかな?
=> ストアからは見つからんかった。まあ標準ブラウザ優秀そうだから!

特別な機能は?

なにか特別な機能があるのかな

=> あるよ!

  • Fixed Foveated Rendering : 領域ごとに解像度を変え、GPUを節約
  • Dynamic Throttling : 性能制限…だと思う
  • 72 Hz mode : 通常設定60Hzからブースト

Fixed Fove

固定 中心窩 レンダリング。そのまんまだね
人の目は、中心窩(Fovea)と呼ばれる中央領域で解像度良く見えるように設計されてる。
いわゆるFoveated Renderingは、eyeトラッキングを使って、中心窩へ映る画面を推定し、そこの解像度だけ上げよう、という技術。
Fixed Foveは、ユーザーの視点が決まってる(Fixed)と仮定して、アイトラッキングなしで解像度に差をつける仕組み.
ようは事前指定した領域ごとに解像度を変えるってことね
www.google.co.jp

実開発

公式ガイドが一番だが、それをまとめた概要を書く。概要つかんだら、各所に貼ってあるリンク先を読んで開発してね.
(最速初動開発はWebVR!!!)

めちゃくちゃ簡単.
ほぼbuild&run押して終わり

環境構築/初期設定

以上だけで初期設定は完了! (実機で確認なう 2018-06-01)
あとはUnityなりなんなりで好き放題開発.

Android開発環境の準備

下の概要読んだらこの公式読みながら環境構築してね

まずは最新版のAndroid Studioをインストール.
次に、Android Studio中のSDK Managerから以下のソフトを指定されたバージョンでインストール.
最新版が自動インストール済みのソフトは、指定バージョンを追加でインストールすること.

そしたら、これらのソフトがAndroid Studioから使われるように環境変数 (Path含む) の設定.

OculusGo開発環境の準備

基本的には上記の"Go実機デプロイの準備"のとおり。
この公式見ながらやればおk

Oculus Go ADB Driverのインストール

Win機の場合、これが必要.

Unityのセットアップ

Unityそのもののセットアップはほかに任せる。まあほぼインストーラーで自動だけど。
そのうえで、Go開発のためのセットアップがいくつか必要。
これ公式ドキュメント

adb / Android Debug Bridgeの利用

開発機からOGへデプロイする際に、adbを利用する.
adb利用にはDeveloper Modeをオンにする必要があり、さらにそのためにOculus Developer DashboardでのOrganization作成が必要 (作成は任意の名前入れてNDAに合意するだけ)6

osig / Oculus Signature Fileは不要

モバイル開発ページにはosigが要ると書いてある7が、Goには不要8
ストア提出時には消す必要もある9し、むしろ無いべき

アプリ開発とデプロイ

with Unity

Unityなら標準のデプロイ (ほぼbuild&runおすだけ) developer.oculus.com

デバッグと撮影

adbのpathを通したうえで、
adb logcat -s Unity ActivityManager PackageManager dalvikvm DEBUG
するだけ。簡単!
撮影は
adb shell screenrecord /sdcard/hoge.mp4
で録画、
adb pull /sdcard/hoge.mp4
でGoから取り出すだけ。簡単!!

WebVR

Amazon Sumerian環境での開発、A-frameでの手書きともにチェック済み。OculusのブラウザからサックとVR-mode入れるのでとても楽.
なんとかここの章を充実させたい (充実させて独立させたい) 所存.

固有機能の利用

実用時のtips

自動スリープ・自動起動

Oculus Goは額位置にあるセンサーで判断される自動スリープがある。
またセンサーが暗くなったことを自動で感知して起動する仕組みもある。
が、展示目的だと何かと不便。
設定画面からこれらの自動機能を切れるようになった。 「ないが…?」という方はOSがちょっと古い

links

私を支援してくれ!!!!

「お、良い記事だな。応援したろ」という方、Pixiv FANBOXでのご支援お待ちしてます!
もっといい記事、もっとたくさん書くよ!
www.pixiv.net

change log

v0.1.0 : 2018-05-02T06:00+09:00 早起きしたらF8で発売発表されたので、ノリでGoを注文、何もわからんので記事を書いた
v0.2.0 : 2018-05-02T09:00+09:00 実開発の手順を追記
v0.3.0 : 2018-05-02T17:00+09:00 PixivFANBOX始めてみた
v0.3.1 : 2018-05-02T17:00+09:00 参考文献の脚注行き、早見表の追加
v0.4.0 : 2018-05-04T10:00+09:00 ブラウザ標準搭載に訂正
v0.5.0 : 2018-05-05T11:30+09:00 webVR対応を自機で検証、web関係整理
v0.6.0 : 2018-05-05T12:30+09:00 実開発の整理
v0.6.1 : 2018-06-01T01:00+09:00 Android環境のリンク修正
change logはsem. ver. (X.Y.Z)で、Xを記事全体のリライト, Yを個別節のリライト, Zを内容を変更しないリライトとしています。
v0.7.0 : 2018-06-01T01:02+09:00 WebVR開発を新規追加
v0.8.0 : 2018-06-01T02:00+09:00 Android開発環境の追記 (自環境でのチェック)
v0.9.0 : 2018-07-02T22:02+09:00 録画・デバッグ方法
v.0.10.0: 2019-03-16T15:53+09:00 自動起動/スリープの制御を追記

unimportant info

Oculus Browser

Oculus StoreにもwebVR対応10のOculus Browserがある. しかし、OG非対応…11? まあ標準ブラウザ使おう


  1. > We recommend developing for Oculus Go and Gear VR with the following tools. Everything You Need to Know To Develop for Oculus Go | Oculus

  2. 自機でA-frame(webVR)含め検証済み

  3. > However, turning on access to adb to push application builds to an Oculus Go device requires “Developer Mode” be turned on, which in turn requires that you have created an Organization on the Oculus Developer Dashboard.

  4. > Your application must include an Oculus Signature File or osig. Build and Upload Android Applications

  5. > We recommend removing your Oculus Signature File before building your application for submission. Build and Upload Android Applications

  6. > Note that Oculus Go applications do not require “osig” files to run on retail devices. Everything You Need to Know To Develop for Oculus Go | Oculus

  7. > Enjoy super sharp text, images, and videos of existing 2D websites, as well as amazing performance of new 3D WebVR content.

  8. > Unsupported Device: Oculus Go Oculus Browser | Oculus