アマレコVR 進捗
・タグ機能を追加(今のところVRフォーマット、アスペクト比、YUVレンジ、クロップ等)
・VRフォーマットリスト(VRFormat.txt)を廃止して代わりにタグデザイナーで全てのタグを統括
・該当するVRフォーマットタグが無い場合のVRフォーマット自動判別処理に関する設定を追加(「デフォルトを180度に~」はこれに該当します)
・Pico版の再生フレームレート改善
・Oculus Quest 2の90Hzへ対応
・ダブルクリック判定の変更
・フォルダの並びを変更(1,10,2 → 1,2,10)
・ファイルグループ化
・バッテリー低下警告
・180度,360度スクリーンのポリゴン分割数を4倍
・サブカメラの映像元を左右選べる
・不具合修正多数
ベータ版以降は実験的な取り組みをしていきたいので正式版はその後と考えています。
・開発機がGOからQuestになるのでハンドトラッキングやパススルー機能を使ってみたい。
・プレイヤー機能をExoPlayerからAndroid標準プレイヤーへ変えるかもしれない。
■Oculus Quest 2雑記
adbコマンドで90Hzにすることができましたが,Quest2本体を再起動すると効果が切れてしまうので不便。
「Oculus GOのフェイスパットが使えるよ」ってことで試してみたら、本当にぴったりフィットしてびっくり。
GOとQuest2は同じレンズパーツなのかな。
■tag="" layout="sbs" screen="180"
想定外の使い方ですが、確かに目的を達成できるのかな。
VRフォーマットのiniファイルは再生しただけでは作らないけど、アプリ上でVRフォーマットを変更した際に作るようになっています。
私もiniファイルは鬱陶しいので極力アプリ上でVRフォーマットを変更しないようにしたり、定期的に削除ですね。
Oculus Quest 2を試してみた90Hzと新SoC XR2について
■リフレッシュレートの向上について
コチラの記事に従いadbコマンドを使ってアプリケーションが90Hzで動作するようにします。
adb shell setprop debug.oculus.refreshRate 90
これでアプリの方で
OVRManager.display.displayFrequency = 90.0f;
とすると90Hzで動作するようです。
さっそくアマレコVR gQuestへ90Hzモードを追加してステータスで確認してみます。
アマレコVR起動

Facebookアカウント絡みで心配していましたが、野良アプリも実行できます。
90Hzの設定項目を追加

60fpsの動画を再生

だいたい55fpsを超える感じでした。
Pico G2 4Kのように60fpsとはなりませんが、リフレッシュレートが合わない状態では(見た目で)違いが判らないレベルで再生可能です。
リフレッシュレートを90Hzへ上げることで欠落フレームを軽減する効果が得られます。
■XR2の動画再生能力について
アマレコVR gQuestにてメインプレイヤーとサブプレイヤーの両方で4K 60fpsの動画を再生しても(欠落フレームはありますが)難なく再生できました。
Quest1では4K 60fpsの動画とFUll HD 60fpsの動画を同時に再生すると10fps程度のカクカク状態でしたので、Quest2に搭載されているXR2の動画再生能力の高さが実感できます。
なお、Quest1でもどちらかの再生速度を85%程度まで下げれば実用範囲で再生可能です。
90HzとXR2によるスペックアップは非常に素晴らしいと感じました。
60fpsの動画再生について Pico版は解決
Pico版のアマレコVRについては解決しました。一方、gQuestの方は完全な解決には至らず。
Pico版についてはUnityのProject settingsにある
Multithreaded Renderingが無効になっていると欠落フレームが生じるようです。
Multithreaded Renderingを有効にすることで欠落フレームはほぼないと言えるようになりました。
gQuestの方はもともとMultithreaded Renderingが有効でしたので改善せず。
垂直同期を待つ設定になっていたのを、待たないように変更したところ、欠落フレームが減少したように感じますが、それでも10%から15%程度の欠落フレームが生じます。
gQuestについてはQuest 2のリフレッシュレート90Hzや、SoCの性能向上に期待することにします。
VR動画プレイヤーにおける2Dの60fps動画再生について
これはアマレコVR gQuest開発当初から把握していたことです。
他のVR動画プレイヤーでもガタガタですし、AVProのサンプルプログラムでもガタガタですので、そう言うものと割り切っていました。
わかっている範囲で例外だったのはOculus GOのOculus galleryです。完璧な60フレームの表示が可能でうっとりするほど綺麗な再生が可能です。
PicoスレにてアマレコVRよりPico Playerの方が優秀だと言った趣旨の書き込みがあり、そんな馬鹿なと思いPico Playerについて再度確認してみたところ、背景なしの場合は私が把握していた通りガタガタですが、背景を表示するとガタガタが改善されました。
整理すると、3つのグループに分類できます。
・グループA (ダメなグループ)
欠落フレームがあり1秒間に60枚の画像を表示できないもの。
アマレコVR gQuest、アマレコVR Pico、Pico Player(背景なし)
・グループB (リフレッシュレートが合わないが妥当なグループ)
欠落フレームはなさそうですが、ディスプレイのリフレッシュレートが合わず重複フレームがあるもの。
(72枚や75枚に水増しして表示する)
Oculus QuestでのOculus gallery、Pico Player (背景あり)
・グループC (完璧なグループ)
ディスプレイのリフレッシュレートが60Hzで60fpsの動画を完璧に再生できる。
(重複フレームも、欠落フレームもない)
Oculus GOでのOculus gallery
■開発時に試したこと
UnityアセットのAVProのサンプルプログラム(ExoPlayer)がそもそもグループA
Oculus Integrationに含まれるExoPlayerを使った180度動画再生用のサンプルプログラムもグループA
AVProをExoPlayerから標準プレイヤーモードに変更すると欠落フレームが若干減る気がする(リフレッシュレートが高ければほぼ60fpsになる?)
UnityのVideo PlayerもグループAだけど欠落フレームは少なめ
基本的にはデバイスのスペック不足や、アプリ側に無駄な処理が多いから処理落ちしてガタガタになるのではなく、動作モードや条件の違い、または使っているプレイヤーや機能の違いによりパフォーマンスが低下していると思われます。
出来ればアマレコVRもグループBまでは持っていきたいですが、今のところ原因はわかっていません。
Pico Playerの振る舞いを鑑みると、どちらかと言えばイロイロ処理をして負荷を上げてあげた方がパフォーマンスが向上するようにも思えますし、同じアプリケーション内のモードの違い(背景の有無)により明暗が分かれることから、Pico Playerを観察することで突破口が開けるかもしれませんので検証に使ったサンプル動画を公開します。
何か開発に役立つ情報がありましたら教えていただけるとありがたいです。
■ダウンロード
60fpsサンプル動画