Open4

今更OpenXRの内部仕様について調べてみたログ

だんごだんご

これは何?

最近,研究室でXRをターゲットにしたトラッキング関連の研究をしているが,現状開発環境の関係でHMDではなくスマートフォンデバイスを使っている.しかし,将来的にはHMDにしたい欲求があり,かつUnityなどが提供しているAPI/SDKではいじりたいところをいじれない可能性が高いので,より一段下?に位置しているOpenXRがどのくらいの機能アクセスを提供しているのかを調べてみようと思った.
最終目標としては,各デバイスに対してどのようなセンサアクセスやトラッキング情報へのアクセスができるかを明確に理解したうえで,Unityでどこら辺までアクセスできるかを調べてみたい.

Reference

[1]OpenXR Tutorial
[2]Openxr-10-refernce-guide
[3]The OpenXR™ Specification

だんごだんご

用語集

結構ざっくりとした意訳なので注意(用語は[1]より)

  • API: OpenXRのこと
  • Application: ユーザ側のアプリ
  • Runtime: OpenXRの機能を提供しているデバイスのこと
  • Loader: OpenXRを適用するためにRuntimeに応じた処理をやってくれるライブラリ
  • Layers: OpenXRの各種APIを呼び出したときに,Runtimeにその呼び出しを送る前に挟める処理.ログ取りとか.アスペクト指向プログラミングみたいな話だと思う.呼び出しはLoaderがやるらしい.
  • Instance: Runtimeとの通信のインスタンス?
  • Graphics: そのままgraphics API
  • Input/Output: Application側が何がI/Oかを決められるらしい
  • Action: 意味づけされたI/O.コントローラは各デバイスで違うから,物理デバイスと独立して存在する入出力信号みたいなイメージのはず
  • Binding: Actionと物理のRuntime側との対応付け
  • Pose: 3次元空間上でのPosition/Orientation
だんごだんご

バージョンについて

2019年に出た1.0が長らく使われていたが,2024年4月に1.1が出た模様.
多分そっちは情報が少ないので,基本1.0ベースで調べていった方が良い気がする.

だんごだんご

APIについて

なるべく下っ側の,IMUとかLiDARにアクセスできるAPIがないかなーとみてた.
そういうのへのアクセスはあんまりなさそう…?[2][3]
OpenXR自体が姿勢推定とかはRuntime側に任せるというスタンスっぽい