systems)ドキュメントの日本語訳HoloLensMicrosoftのHolographicサイト上にあるHoloLensの座標系のドキュメントを自分の勉強のために翻訳したので一部公開します。利用にあたっての注意事項は文末に記載しています。元のドキュメントはこちらです。コンテンツは非推奨トラッキングエラーの回避6.1.デバイスが十分なセンサーデータを取得できない場合)6.2.環境の大きな変化によって、トラッキングが正しく動かなくなってしまう場合6.3.時間経過による環境変化によるトラッキングの失敗6.4.空間の誤認識によるトラッキングの失敗)関連ドキュメント前提として原文になかった文章をわかりやすくするための独自の補足追加は()内に記載しています。各章の見出しに関しては原文を表示し、その後ろに()で訳文を記載しています。個人的に重要と思う要素は流し読みできるように太字にしています。原文はboldになっていません。コーディング時にも利用しそうな重要な用語に関しては、原文のまま書いたり、以下のような翻訳を行っています。内容はたまに修正する事があるかもしれません。systems(座標系について)座標系の中核は、現実世界における本当のオブジェクトのようにホログラムが見えたり聞こえたりするように配置する事です。これは利用者にとって実世界において意味のある場所や向きにホログラムを正確に配置するという事でもあります。ホログラムを正しい位置と向きに配置したり、視線や手の位置のような要素の利用も含めて、HoloLensではその形状を表現するために様々な座標系を利用しています。systems(=直交座標系=デカルト座標系)を利用しています。この座標系は3つの垂直な軸ををもっています。X,Y,Z軸と呼ばれるものです。HoloLensにおいて、アプリケーションは仮想空間と現実空間の二つの空間を識別することになります。systemと呼んでいます。systemでは座標系をメートル単位で表現します。これは、2単位離れた場所に配置したオブジェクトは2メートル離れた場所に表示されることを意味します。これによって、実世界の単位を利用して簡単にオブジェクトを描画することができます。一般論として、直交座標系においては右手系と左手系の2種類の座標系が使われることがあります。Hologparicにおける空間座標系においては常に右手系の座標系(注釈あり)が使われます。これはX軸の+は右側、Y軸の+は上側、Z軸の+は奥側に向かうという意味です。右手系と左手系どちらの直交座標系においても、X軸の+は右側、Y軸の+は上側なのですが、Z軸の+が奥側か、あなた側(前側)かが異なります。このことは、あなたの実際の右手と左手の指を使って確認することができます。(座標系について:原文ではHoloLensは右手系とありますが、Z軸の+が奥に向かうのは左手系だと思います・・。ちなみにUnityは左手系です。左手系の誤りだと思うのですが、いったん原文ママの右手系と表記しています。reference(静止座標系について)実際の空間におけるホログラムの位置を表現するには、HoloLensデバイスの位置が動きまわっても、変化しない静止した座標系が空間上に必要なります。reference(静止座標系)"と呼ばれるシンプルな仕組みを提供します。Unityのようなゲームエンジンにおいては、静止座標系はゲームエンジン内の原点座標として定義されます。元にして、位置を正確に配置することができ、実際の空間に配置するときも同じ座標系を用いて表示する場所を決めることができます。アプリケーションは起動時に一つの静止座標系を生成し、起動後も動作している間はその座標系の中で動作していきます。(訳者補足:基本的にはアプリ起動時のHololensのカメラの位置が原点となるようです。)時間が経過していくと、座標系はよりユーザーの空間(環境)を学習していき、空間上の様々な座標や距離を起動時よりもより正確に特定することができるようになる場合があります。従って座標はユーザーがより広いエリアを歩き回ることにより、原点の座標が元の座標から補正(drift)されることがあります。anchorを用いることができます。anchorはシステムが時間を超えて座標の追跡をするための、空間上の重要な座標点のことです。ある空間アンカーはホログラムを他のアンカーや、参照静止点と関連して、正確な位置に配置するために必要な座標系を持っています。空間アンカー座標を用いてホログラムを表示すれば、時間を超えて(アプリを終了させた後でも)ホログラムを継続的に正確な位置に表示することができます。(なぜ、シーンを通じて、一つだけの固定の座標系が使われないのか?)最近のゲームやデータ可視化アプリ,VRアプリなどにおける、(空間座標を定めるための)典型的な方法は、いろいろなオブジェクトの座標を確実に配置できる、一つの絶対的な空間座標系を確立することです。すれば、その空間上の二つのオブジェクトの位置や大きさの関係性を確実に安定して取得することができます。あなたがこれらのオブジェクトを動かしたりしない限りは、これらの座標は常に安定した場所に配置されます。あなたが、完全にバーチャルな空間上への表示を行っている場合は、この絶対的な座標軸を利用することはいい方法でしょう。Anchorを把握して、現実世界を認識していきます。Anchorを配置する場所を用意しなくてはなりません。ある時点で、デバイスが現実世界上で二つのオブジェクトの位置関係が4メートル離れていると認識したとして、その後、空間認識が進むことによって、実際は3.9メートル離れていると再認識したとします。単一の固定した座標系が利用されている状態で、ホログラムが最初の時点で4メートル離れた状態で配置されていた場合、どちらか一方のオブジェクトは常に0.1メートル分オフセットされて表示されなくてはいけなくなります。anchorを生成させることによって解決します。anchorは正確な座標を維持するために他のアンカーとの関係性を必要に応じて調整をしていくことになります。近くの空間アンカーの座標系もとにホログラムを配置することによって、ホログラムの正確な位置を安定的に確定することができます。この、他アンカーとの関係性を元にした、空間アンカーの継続的な最適化は、空間アンカーと静止座標系の重要な違いです。静止座標系を用いて配置されたホログラムは、他のホログラムと硬直的な関係性をもって配置されます。この方法では、時間が経った後に改めてホログラムを表示させた場合などに、ドリフトが発生する場合があります。ある空間アンカーを用いて配置されたホログラムは、他の空間アンカーを用いたホログラムとの関係性においてドリフトすることがあります。これにより、例えば、ある空間アンカーは左位置の調整が必要で、別のアンカーは右に位置の調整が必要になる場合であっても、システムはそれぞれの空間アンカーの配置位置の補正が可能となります。静止座標系と比較して、このことはユーザーの周辺における座標の安定的な最適化を行うことができます。これは時間が経過してもホログラムが正確な位置に配置されることに役立ちます。effects,=応力中心距離の影響)によって、本来の位置から離れた場所に配置される場合がある事もあります。空間アンカーの原点の位置や向きのわずかな変化が、そのアンカーからの距離に比例して(テコの原理のように)拡大していくためです。この問題に対する、経験に基づく、大枠の指針としてはホログラムを空間アンカーの原点から3メートル以内程度に配置する事です。)空間アンカーはアプリケーションが終了したりサスペンドしたときにでも重要な座標の位置を記憶しておく事にも役立ちます。store"を用いた永続化をすることによりディスクに保存しておく事で、後でそれを読み込んで復元する事ができます。空間アンカーを一意に識別するために、アンカーをセーブ・ロードする際にアプリ内において一意の意味を持つキーとなる文字列を使います。このキーはあなたの空間アンカーのファイル名になると考えてください。その空間アンカーをその場所に表示したい3Dモデルなどと関連付けたい場合、あなたのアプリのローカルストレージにあなたの選んだキーと紐付けてセーブを行ってください。アンカーストアを用いて永続化する事により、アプリの利用者はホログラムやワークスペースを配置した後に、時間が経ったり、いろいろな人が見ても、ホログラムが期待された場所に表示される事を確認できます。)アプリケーションは空間アンカーを他のデバイスと共有する事もできます。他のHololensに認識した空間と周囲のセンサーデータに加えて空間アンカーを転送する事により、両方のHoloLensは同じ場所に存在していると認識する事ができます。共有された空間アンカーを用いてホログラムを表示する事により、両方のユーザーを実際の空間の同じ場所にホログラムが表示されている事を確認できるでしょう。ページ(原文)を確認してください。(従属座標系)(メニューUIを表示する場合など)ホログラムをユーザーの頭部から一定の距離を保って浮遊した状態で常に表示するように設計したい場合があるでしょう。してユーザーが歩き回るのに合わせて移動するように配置する事ができます。「従属座標系」は最初に生成された時に定義された固定された向きを持つことになります。「従属座標系」はユーザーの頭部や体の向きが変わっても(相対的な座標の)向きが変わる事はありません。「従属座標系」のおかげで、空間を歩き回ってもどこを向いていても、配置されたホログラムを持ち歩いているように、快適に閲覧する事ができます。コンテンツと呼ばれるものです。デバイスが空間上でどこにいるか認識できなくても、この従属座標系を用いたホログラムは表示をする事ができます。この機能はユーザーが空間を認識できなかった場合に表示するフォールバックUI(縮退動作時のUI)として有効です。shell(Hololensのデスクトップ環境)に誘導するなどのフォールバック機能を含めるべきです。content(頭部固定のコンテンツは非推奨)私たちは、HMDに対して固定の位置に表示されるようなhead-lockedコンテンツを表示する事を推奨しません。一般的にhead-lockedコンテンツはユーザーを不快にし、現実世界に馴染むものではありません。Head-lockedコンテンツは現実世界に固定配置されるか、ユーザーに追従するコンテンツに置き換えられるべきです。カーソルなどは現実世界の中でユーザーが注視している場所や位置に自然な大きさで表示されるようにするべきです。(トラッキングエラーの回避)ある環境においては、現実世界の正しい位置を把握できない可能性があります。この状態ではホログラムが表示されなかったり、正しい位置ではない場所に表示されることがあるかもしれません。このような事が起きた場合にユーザー体験にどのような影響を与え、どのようにリカバーするべきかに関して、以下に記載してみます。(デバイスが十分なセンサーデータを取得できない場合)時々デバイスのセンサーが自分がどこにいるか判断できない時があります。これは部屋が暗すぎる場合や、センサーが手や髪の毛で隠れてしまっている時に発生する事があります。周辺の環境が十分なテクスチャを持っていない場合にも発生します。なった場合、デバイスは現実世界に対して正しい位置にホログラムを配置したり自分の位置をトラッキングする事ができないかもしれません。そのような時、空間アンカーや静止座標系を見つける事ができないでしょう。それでもbody-lockedコンテンツは表示する事ができます。アプリケーション内において、どうすれば位置トラッキングを復旧させられるか、例えば「部屋を明るくしてください」や「センサーを隠さないでください」などのヒントになるような説明を、body-lockedコンテンツを用いたフォールバックを表示させるべきです。environment.(環境の大きな変化によって、トラッキングが正しく動かなくなってしまう場合)空間の環境が急激に変化した場合などに、トラッキングができなくなってしまう場合があります。部屋の中を多くの人が歩き回っている場合などです。このような場合、デバイスが環境の変化を自ら検知しようとして、ホログラムの表示位置がジャンプしたりドリフトすることがあります。このようなケースにあなたの状況がある場合は、変化の少ない環境でデバイスを利用する事をお勧めします。time(時間経過による環境変化によるトラッキングの失敗)部屋の家具の配置や、壁に飾っているものが移動するなどして、環境が変化してしまった後にデバイスを利用する事があるかもしれません。このような場合、ホログラムは元々の本来の位置からずれた場所に表示される可能性があります。新しいスペースにユーザーが移動した時などに、最初に表示されるホログラムも表示位置がジャンプするかもしれません。環境の再認識を行おうとしている事が原因です。このような場合、もともと表示されているホログラムを一度削除するのが良いかもしれません。新たに配置したホログラムがそれでも移動したりジャンプしてしまう場合は、利用者にデバイス内の現在のスペース情報を削除するように伝えるようにしてください。Spacesから行う事ができます。スペースを削除する事は、表示されているすべてのホログラムをすべて失ってしまう事も覚えておいてください。(空間の誤認識によるトラッキングの失敗)独立した異なるSpaceが、同一の場所を記憶している場合もあります。家の中に二つの独立した同じような部屋があって、同じようなコーナーエリアと大きなポスターがデバイスが認識できる範囲にあるとします。このような場合、デバイスは同じスペースとして認識することで混乱してしまう事があります。このような時、ホログラムが本来の場所と異なる場所に表示されてしまう原因となります。デバイス内部における空間認識表現が壊れてしまい、トラッキングができなくなってしまうことでしょう。Spacesから現在のスペース情報を一度削除するのがよいでしょう。これによってデバイスは環境を別のものとして正常に認識できるかもしれません。この問題はまた独立した空間を誤って認識する事で再発するかもしれません。reality(英語)ご利用時の注意事項など内容の正確さは保証するものではありません。原文も是非参照してください。内容に関して誤りや最適訳などの提案があったら是非ご指摘いただけると助かります。無断での全文転載などはご遠慮ください。事前に必ず連絡をお願いいたします。一部引用などはかまいません。うるさく言うつもりはないのですが、ひとまずそうさせてもらいます。他のドキュメントなども、興味のあるものから翻訳しようかなぁとも考えていますが、協力していただける方がもしいたら、githubなどに移して進めるのも良いかななどとも考えています。最新記事HoloLens2向けのカメラマウントの3Dプリントデータを作りました。読者になるはてなブログをはじめよう!pigshapeさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。