Quest対応アプリを開発する方法やTipsをまとめています。Preview」の項目を追加(2020年2月2日)「パフォーマンス・チューニング」をいくらか書き足し。Questに対応しています。Questで動作するアプリをビルドできます。CameraをOVRCameraRigプレハブに入れ替えます。Integrationを使用します。RequirementsのページでサポートしているUnityのバージョンを確認できます。Questで自作のアプリが動くようにするには、「開発者モード」にする必要があります。Questをタップで開いて「その他の設定」をタップすると「開発者モード」が出てきますのでオンにしてください。Questの画面に「USBデバッグを許可しますか?」というダイアログが開きますので許可します。QuestはAndroidベースですので、UnityのAndroidビルドを使用します。以下の解説は、UnityのAndroidビルドがすでにできる状態であることを前提にしています。Tools、OpenJDKにすべてチェックを入れるのが簡単です。新規プロジェクトを作成したら、以下の手順を行います。Integrationをインポートするのがおすすめです。等をアップデートするダイヤログが出たら従う)。まるごとインポートすると、インポートやビルドがめちゃくちゃ遅いです。必要なければOculus/VR以下だけをインポートすると速いです。Scenesで入れ替えてください。Runボタンを押し、適当な.apkファイル名を指定してビルド・実機に転送します。Avatar関連の多数のシェーダーのビルドが走りますが、2度目以降はキャッシュされます。成功するとアプリが起動し、コントローラーのサムスティックで移動や回転ができます。格納され、いつでも実行できます。SDKsでOculusが有効になっているか確認してください。Viveに対応しています。それらPCヘッドセットがあるとEditorで再生して実行できるため開発が楽になります。Samplingに設定するのが基本になりそうです。Jobsは使わないこと)が基本設定として推奨されています。リニアカラーに対応しています。ほかこちらのページがとても参考になります。BackendをIL2CPPにしてARM64でビルドする必要があります。IL2CPPはビルドが重すぎるので、開発中や、個人作品ではMonoでいいかもしれません。Oculusアプリの管理についてビルド・転送したアプリをアンインストールするには下記adbコマンドを実行します。[パッケージ名]パッケージ名は、Questの「提供元不明のアプリ」で確認したり、下記コマンドで一覧表示することもできます。logcatコマンド)を簡単に閲覧できるウィンドウです。Unityのパッケージマネージャーからインストールします(previewパッケージです)。Runすると自動的にデバイスに接続してログが表示されます。キーワードでフィルタをかけたり、スクリーンショットを撮ることもできます。Integraionに含まれているツールで、Questでアプリを実行したままでシーンを更新できるツールです。簡単な実験シーンを更新して試したり、負荷を比較したりするのに使用できます。使用方法は以下の通りです。Scene(s)」を押すとQuestのシーンが更新されるパフォーマンス・チューニングQuestのハードウェアについてハードウェア詳細の解説がOculusのブログの下記エントリにあります。835を搭載しています。coreはトラッキングやその他のシステムソフトウェアに使用されているとのことです。下記で紹介するツールの多くはCPUのコアごとの使用率を確認できないため注意が必要です(100%行ってないのになんで処理落ちするんだってなる)。540ですが、多くのモバイルGPU同様タイルベースレンダリングであることに注意が必要です。Guide」にチューニングのTipsが載っています。NetworkCPU・GPUレベルについてQuestでは負荷によってCPU・GPUレベルという形でクロック数が変動します。Profilerで確認できます。Integrationの下記APIでレベル4に固定しておいたほうが数値が分かりやすいかもしれません。Questのパフォーマンス最適化に使用できる主なツールを列挙します。ToolCPU使用率やGPU使用率等のグラフ・数値をヘッドセット内でオーバーレイ表示できます。どんなシチュエーションで重くなるか、簡易的なパフォーマンスの測定に便利です。インストールしてQuestで起動し、表示を有効にして「BASIC」あたりを選択してください。Questの再起動が必要な場合があります。Oculusドキュメントは下記ページにあります。ToolUnityのプロファイラーQuest実機に対して、Unityのプロファイラーが使用できます。Buildをチェックした上でビルド・実行して、プロファイラを開き、プロファイラ上部の"Playmode"と表示されているところを"AndroidPlayer"に変更してください。CPUモジュールでTimelineを表示すると、フレームごとの処理の詳細が追いかけやすいです。GPUのモジュールを有効にしているとプロファイラーのクエリ待ちでフレームレートが低下しますので注意してください。RenderDocQuest実機に対して使用できるオープンソースのフレームデバッガです。Oculusのブログに使い方が詳しいです。描画コールごとの処理時間を計測表示できますが、タイルベースレンダリングなので参考程度にとのことです。ProfilerQualcommの公式ツールです(Qualcommの開発者アカウント作成が必要)。Snapdragonの各種メトリクスを詳細表示できます。SnapdragonのCPU各コアごとの使用率や、タイルベースレンダリングのタイル数等も見ることができます。Integrationに含まれているツールです。CPU・GPUレベルとCPUのコアの平均使用率、最も負荷がかかっているコアの使用率が確認できます。PCとQuestが同一ネットワーク内にある必要があります。Renderingは、視野の中心部のみを高解像度で描画し、ピクセル描画負荷を減らすOculus固有の機能です。OVRManager.FixedFoveatedRenderingLevel.{High/HighTop/Low/Medium/Off};タイルベースレンダリングで視野の端の方のタイルの描画解像度を下げることによって、ピクセル描画負荷の重いアプリで描画が25%程度軽量化されるとのことです。シンプルなシェーダのアプリやGPUバウンドになっていないアプリでは恩恵を受けられません。詳細の解説がこちらにあります。ガーディアンの表示を切ることができます。安全のため警告メッセージが表示されます。一度スリープすると元に戻ってしまうので、イベント展示等ではスリープ時間を最長の15分にしておくといいでしょう。ヘッドセット内の映像をPCで表示するにはsrccpyを使うのがおすすめです。左右似画面の樽型表示になります。Integrationのリリースノートのページと、ダウンロードのページは、バージョン番号のところがプルダウンメニューになっていて、過去のバージョンが参照できます。ifconfigリフレッシュレートを変更するにはQuestのリフレッシュレートは72Hzですが、以下で60Hzに変更できます。60f;72Hzでは負荷が少しオーバーしてしまうような場合に使用できるかもしれません。明るいシーンだと、おそらくパネルの黒挿入のため視界が非常にちらついて実用には耐えなさそうな感じでした。位置トラッキングをリセットするにはコントローラーのトリガーを引くと位置トラッキングをリセットするサンプルスクリプトです。OVRInputを使っているので、OVRCameraRigが必要です。QuestではOculusボタンを長押しするとリセンターされるのでRiftと比べて使う機会は少ないかもしれません。