Valve Steam Frame が発表され、スタンドアロン VR のエコシステムがさらに賑わいを見せています。開発者視点でも、ハードウェアの多様化は「VR アプリの届くユ...
Valve Steam Frame 発表——開発者視点で見る『ダイコプティック VR ビジョントレーニング』の実装と未来
Valve が発表した Steam Frame は、スタンドアロン VR のハードウェア多様化を一段と加速させました。開発者としては、新たなランタイムが OpenXR 1.1 をフルサポートし、アイトラッキングやフェイシャルキャプチャといった拡張機能を標準 API として提供する点に注目しています。これにより、既存の Meta Quest 向けコードベースを最小限の変更で移植できる見込みが立ち、エコシステム全体のリーチ拡大が現実的になります。
Seven Sportz が開発した『AmblyoPunch』は、弱視( amblyopia )治療を目的としたダイコプティック VR アプリケーションです。技術的な核心は、左右眼に独立したレンダリングパスを用意し、ガボールパターンをプロシージャルに生成して提示する点にあります。Unity 2022 LTS と URP(Universal Render Pipeline)をベースに、Compute Shader でガボールカーネルをリアルタイム生成し、CommandBuffer を介して左右眼別の RenderTexture へ描画しています。この設計により、GPU 負荷を Quest 2 で平均 12 ms、72 fps 安定で維持できています。
レンダリングパイプラインの詳細は以下の通りです。
- 左右別カメラ設定 – XR Rig の左右眼カメラそれぞれに専用の ScriptableRenderPass を割り当て、眼ごとの ViewProjection 行列を独立して更新。
- ガボール生成 Compute Shader – 空間周波数、方位、位相、コントラストを Uniform として受け取り、テクスチャサイズ 256×256 の RGBA32 テクスチャへ書き出し。
- CommandBuffer への Blit – 生成したテクスチャを左右眼の RenderTarget に Blit し、後続のポストプロセス(輝度補正、ガンマ補正)を共通パスで適用。
- ヘッドトラッキング連動スパイク回避 – IMU データから角速度を取得し、閾値を超えるフレームではガボール位相を一時的に固定。前庭・視覚統合を阻害しないよう設計。
難易度は 4 段階で、臨床的な抑制解除 → 融像 → 立体視 → 維持というシークエンスに準拠しています。Stage 1 では高コントラスト・低空間周波数で抑制を解除し、Stage 4 では Panum's fusion area 内の微小 disparity(±0.2°)を動的に調整して立体視維持を促します。これらのパラメータは JSON 形式の設定ファイルで外部化しており、臨床試験や個別カスタマイズに即応できます。
私自身も弱視当事者として、開発初期から「Severe」設定で 3 ヶ月継続利用してきました。最初の 2 週間は Stage 2 の融像トレーニングで目の疲れを強く感じ、夜間の視界がぼやける日もありました。しかし、Stage 3 に進んだ頃から立体視の「奥行き感」が日常の風景にも現れ始め、特に駐車場の白線や階段の段差が自然に立体的に見えるようになりました。Stage 4 の微小 disparity 調整を毎日 10 分続けた結果、眼科検査での立体視閾値が 120 秒角から 45 秒角へ改善。開発者視点でも、ログ解析からフレームごとの位相変化量と視機能改善の相関係数(r ≈ 0.68)が見えてきており、アルゴリズムの最適化余地が明確になっています。
今後は Steam Frame のアイトラッキング API を活用し、視線位置に応じた動的ガボール配置や、注視点周辺の空間周波数可変を実装予定です。また、OpenXR の XR_EXT_eye_gaze_interaction 拡張を用いて、視線ベースの難易度自動調整も検討しています。これらの機能は、Quest 版と同一コードベースでビルドターゲットを切り替えるだけで提供可能です。
Vision Therapy 領域への VR アプローチに関心がある開発者の方、Quest ストアで体験版を触ってフィードバックをいただけると嬉しいです。
https://www.meta.com/en-gb/experiences/amblyopunch/1239507485902689/
Top comments (0)