Microsoft HoloLensで使用されているWindows Holographicドキュメントの覚書
はじめに
Microsoft HoloLensが届きました!届く前にHoloLensで使用されているプラットフォームであるWindows Holographicに関するドキュメントを読みながら気になるところをまとめていました。せっかくなので公開しておこうと思います。自分で読むことを想定してまとめていたため、読みづらいかもしれませんがご承知ください。
ドキュメント覚書
Understanding HoloLens
Hologram
- Hologramは光と音から成る
- HoloLensは光を追加できるが、消すことはできない。
- 黒の表示はできず、黒の表示は透過する
- 音は耳の上のスピーカーから出力する。外の音にHologramの音を追加できる
- horogram persistance:ホログラムを配置したら、他の部屋に行って戻ってきても、デバイスの電源を切ってもずっと同じ場所にある
ハードウェア情報
- バッテリの持ちは2-3時間(active use)
ホログラフのアプリビュー
- Holographic appが1つでも描画されているときは、他のアプリは同時に描画できない。シェルも同様。
Developing for HoloLens
パフォーマンスの推奨
- 60fpsで遅延は1フレーム。
Building blocks of Holographic apps
HoloLensの基本構成ブロック
- 世界座標系、視線入力、ジェスチャー入力、音声入力、立体音響、空間マッピング
- 座標データは共有できる。座標はメートル単位。空間座標系は右手座標系(X軸正:右、Y軸正:上、Z軸正:後ろ)
- spacial anchorを使ってホログラムを空間に固定する。アンカーはトラッキングし続けるべき重要な点で、それぞれのアンカーに対する相対的な座標系を持つ.
- アンカーを使うことでドリフトを低減することができる。1つの座標系のみでは、デバイスの位置に最適化されたような座標系しか作ることができない
- HoloLensで取得する環境の形状は常にアップデートされるため、1つのリジッドな座標系ではない
- 1つのリジッドな座標系では途中でオブジェクト間の距離がアップデートされたときに修正できなくなってしまう
- HoloLensではアンカーを使って周辺の重要な点をマークすることで解決している。アンカー近くにホログラムを置けば、安定して表示できる
Hologram stability
- 240HZ(RGBG)で各色を表示する。全体として60Hzで表示されている。この表示方法では色分離(Color separation)の問題がある
- 像がディスプレイに表示される時の頭の位置を予測している。HoloLensには予測と実際の頭の動きのずれを調整するハードウェア的な仕組みがある.ただし、motion pallaraxのように完全に修正できないこともある
- 時々の駒落ちに対応するアルゴリズムが実装されている
- Mixed Reality capture時には30fpsになる
- パフォーマンス解析に使えるツール:GPU View, Visual Studio Graphics Debugger, Profilers built int 3D engines such as Unity
- Stabilization plane
- Hologramの表示位置
- 最も快適に見える距離は2m、それより離れても近づいても不快度は増す。だが遠い方がまだ見やすい
- HoloLensの像がはっきり見えるのは調節が2mにあっているとき。光学的に大体2mになっている。輻輳は像の位置で調整が可能
- ディスプレイの重なりも2mで最大になるように設計されている
Spacial mapping
- Spacial mapping design:Sapacial mappingの質が何に影響するか。ユーザーにどうやってスキャンさせるか。メッシュの処理について
- オブジェクトタイプ
- Spacial Surface Observer ・・・ Spacial mappingデータの取得領域を持っている
- Spacial Surface ・・・ 現実の表面情報をWorld-locked座標系における三角で表現する
- 一般的な使用シナリオ
- Occulution
- オクルージョンは距離感の視覚的フィードバックになる。同じ物理空間にいる感覚を与える
- 物体の裏にあるホログラムを表示することもできる。その場合は通常とホログラムの表示方法を変えるとよい(暗くするなど)
- Visualization
- 表面(メッシュ)も表示できる。ユーザーがホログラムを配置するときに便利。
- 表面メッシュは可視化するにはきれいではない。ライティングはうまくいかないが、テクスチャを張るのはよい。ただし、Mesh処理をレンダリング前に行うこと
- Placement
- 3D(空間上の点)から2D(表面上の点)にマッピングすることでホログラムを表面に配置できる
- 表面の推定ミスのせいでRaycastの距離がおかしくなるかもしれないので、何本か周辺にRaycastして集計するとよい(外れ値を除外すること)
- メッシュの全面は現実世界から見ている側で、頂点は時計回りの順
- 自動でホログラムを配置できるとよいが、なかなか難しそう(ユーザーが届かない位置にスイッチを配置してしまうなど)
- Physics
- Physicsにより、ホログラムのプレゼンスが強化される
- リアルなPhysicsを使うにはMesh処理(穴埋め、飛島除去、スムージング)を行う必要がある
- Scanning Experience
- スキャン済みの世界の端までボールが転がったらどうする?
- 更新されていく環境の変化にどう対応する?
- Navigation
- ホログラフのキャラクタに現実世界を案内させることができる
- 一度マップを作製すれば、その場所に詳しくないユーザーに案内表示できる
- 技術的なチャレンジは、人が歩ける表面を検出する機能の実装(人はテーブルの上を歩けない!、閉じたドアは通れない。環境の変化)
- UnityのNavMeshは使えない(起動時にマップが必要だから?)
- Spacial mappingシステムは遠くの評価情報を提供しないため、広いエリアを扱いたいときは自分で覚えておかなければならない
- Occulution
- Surface Observerを使う
- Spacialmappingのプログラムのフロー
- Surface Observerオブジェクトを作成
- Spatial mappingデータを取得する領域を球やボックスで指定する
- World-locked座標系を使用
- 表面情報のポーリング・通知を使う
- いつでも空間表演のステータスを取得(poll) できる
- "surfaces changed"イベントを登録することもできる
- 動的にSpatial volumeを変えられる(View flustrumによって変えるなど)
- 静的なSpatial volumeであれば、"surfaces change"イベントを登録しておくのが良い(1部屋をカバーする立方体など)
- 表面の変化を処理する
- 非同期のメッシュリクエストを処理
- Surface Observerオブジェクトを作成
- Spacialmappingのプログラムのフロー
- MeshCashing
Designing holograms
ホログラフィックアプリの種類
- Enhanced Environment Apps
- ノートパッド、TV、クッキングアプリ、透視(X-ray Vision)、アノテーション、オフィスの道案内、テーブル上の体験(ボードゲームタイプ)、スカイプのようなコミュニケーション
- Blended Environment Apps
- インテリアデザインアプリ(壁や机などを別の色やパターンで塗る)、車のデザイン変更、現実の物体を別のモノで覆ってしまう、現実の壁にホログラムの穴をあける魔法の世界
- Virtual Environment Apps
- 宇宙や有名な美術館など、全く別の場所を旅行するアプリ、オーケストラなどのイベントに没入するアプリ
スポンサーサイト
スポンサーリンク